數(shù)學(xué)建模常用模型(九) :偏最小二乘回歸分析
偏最小二乘回歸(Partial Least Squares Regression,PLS Regression)是一種常用的統(tǒng)計(jì)建模方法,用于解決多元線性回歸中自變量間高度相關(guān)的問題。在偏最小二乘回歸中,通過將原始自變量轉(zhuǎn)換為一組新的綜合變量(稱為主成分或潛在變量),然后再使用這些主成分進(jìn)行回歸分析,從而減少自變量之間的共線性,并且提高模型的穩(wěn)定性和預(yù)測能力。
這是我自己總結(jié)的一些代碼和資料(本文中的代碼以及參考書籍等),放在github上供大家參考:https://github.com/HuaandQi/Mathematical-modeling.git
1.補(bǔ)充介紹
偏小二乘回歸提供一種多對多線性回歸建模的方法,特別當(dāng)兩組變量的個數(shù)很多,且都存在多重相關(guān)性,而觀測數(shù)據(jù)的數(shù)量(樣本量)又較少時,用偏小二乘回歸建立的模型具有傳統(tǒng)的經(jīng)典回歸分析等方法所沒有的優(yōu)點(diǎn)。
偏小二乘回歸分析在建模過程中集中了主成分分析,典型相關(guān)分析和線性回歸分析方法的特點(diǎn),因此在分析結(jié)果中,除了可以提供一個更為合理的回歸模型外,還可以同時完成一些類似于主成分分析和典型相關(guān)分析的研究內(nèi)容,提供更豐富、深入的一些信息。
2.程序?qū)嵗?/h3>
import numpy as np
from sklearn.cross_decomposition import PLSRegression
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 原始數(shù)據(jù),自變量X和因變量y
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
y = np.array([1, 2, 3, 4])
# 對自變量進(jìn)行標(biāo)準(zhǔn)化處理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 創(chuàng)建PLSRegression對象,并指定主成分個數(shù)為2
pls = PLSRegression(n_components=2)
# 進(jìn)行偏最小二乘回歸分析
pls.fit(X_scaled, y)
# 獲得預(yù)測值
y_pred = pls.predict(X_scaled)
# 繪制原始數(shù)據(jù)和預(yù)測值
plt.figure(figsize=(8, 6))
plt.scatter(y, y_pred, c='b', label='Predicted vs. Observed')
plt.plot([min(y), max(y)], [min(y), max(y)], 'k--', lw=2, label='Perfect Fit')
plt.xlabel('Observed')
plt.ylabel('Predicted')
plt.title('PLS Regression')
plt.legend()
plt.grid(True)
plt.show()
import numpy as np
from sklearn.cross_decomposition import PLSRegression
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 原始數(shù)據(jù),自變量X和因變量y
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
y = np.array([1, 2, 3, 4])
# 對自變量進(jìn)行標(biāo)準(zhǔn)化處理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 創(chuàng)建PLSRegression對象,并指定主成分個數(shù)為2
pls = PLSRegression(n_components=2)
# 進(jìn)行偏最小二乘回歸分析
pls.fit(X_scaled, y)
# 獲得預(yù)測值
y_pred = pls.predict(X_scaled)
# 繪制原始數(shù)據(jù)和預(yù)測值
plt.figure(figsize=(8, 6))
plt.scatter(y, y_pred, c='b', label='Predicted vs. Observed')
plt.plot([min(y), max(y)], [min(y), max(y)], 'k--', lw=2, label='Perfect Fit')
plt.xlabel('Observed')
plt.ylabel('Predicted')
plt.title('PLS Regression')
plt.legend()
plt.grid(True)
plt.show()
在上述代碼中,我們首先定義了原始數(shù)據(jù)矩陣X和因變量向量y,然后創(chuàng)建了一個PLSRegression對象并指定保留的主成分個數(shù)為2。接下來,使用fit()方法進(jìn)行偏最小二乘回歸分析,并使用coef_屬性獲取回歸系數(shù)。最后,使用predict()方法對原始數(shù)據(jù)進(jìn)行預(yù)測,并獲得預(yù)測值y_pred。請根據(jù)實(shí)際情況調(diào)整原始數(shù)據(jù)和保留的主成分個數(shù),并根據(jù)需要對結(jié)果進(jìn)行解釋和分析。
運(yùn)行上述代碼,將繪制散點(diǎn)圖來展示觀察值(原始數(shù)據(jù))與預(yù)測值之間的關(guān)系。如果模型擬合良好,散點(diǎn)圖中的點(diǎn)應(yīng)該基本落在對角線上。如果點(diǎn)主要集中在對角線上方,則預(yù)測值高估了觀察值;如果點(diǎn)主要集中在對角線下方,則預(yù)測值低估了觀察值。在理想情況下,所有點(diǎn)都應(yīng)該在對角線上。文章來源:http://www.zghlxwxcb.cn/news/detail-591389.html
3.運(yùn)行結(jié)果
文章來源地址http://www.zghlxwxcb.cn/news/detail-591389.html
到了這里,關(guān)于數(shù)學(xué)建模常用模型(九) :偏最小二乘回歸分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!