《Python数学建模算法与应用课件》13第13章 偏最小二乘回归分析.pptx

《Python数学建模算法与应用课件》13第13章 偏最小二乘回归分析.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;;在实际问题中,经常遇到需要研究两组多重相关变量间的相互依赖关系,并研究用一组变量(常称为自变量或预测变量)去预测另一组变量(常称为因变量或响应变量),除了最小二乘准则下的经典多元线性回归分析(MLR),提取自变量组主成分的主成分回归分析(PCR)等方法外,还有近年发展起来的偏最小二乘(PLS)回归方法。

;偏最小二乘回归提供一种多对多线性回归建模的方法,特别当两组变量的个数很多,且都存在多重相关性,而观测数据的数量(样本量)又较少时,用偏最小二乘回归建立的模型具有传统的经典回归分析等方法所没有的优点。

偏最小二乘回归分析在建模过程中集中了主成分分析,典型相关分析和线性回归分析方法的特点,因此在分析结果中,除了可以提供一个更为合理的回归模型外,还可以同时完成一些类似于主成分分析和典型相关分析的研究内容,提供更丰富、深入的一些信息。;;;;#程序文件ex13_1.py

importnumpyasnp

importpylabasplt

fromsklearn.cross_decompositionimportPLSRegression

fromscipy.statsimportzscore

fromsklearn.model_selectionimportcross_val_predict

fromsklearn.metricsimportmean_squared_error

?

d0=np.loadtxt(data13_1.txt);N=d0.shape[0]

mu=d0.mean(axis=0)#求均值

s=d0.std(axis=0,ddof=1)#求标准差

r=np.corrcoef(d0.T)#求相关系数矩阵

d=zscore(d0,ddof=1)#数据标准化

a=d[:,:3];b=d[:,3:]

n=a.shape[1];m=b.shape[1]#自变量和因变量个数

rmse=[]#均方误差初始化;foriinrange(1,n+1):#以下确定成分的个数

pls=PLSRegression(i)

y_cv=cross_val_predict(pls,a,b)

rmse.append(mean_squared_error(b,y_cv))

nmin=np.argmin(rmse);print(均方误差:\n,rmse)

print(建议的成分个数:,nmin+1)

?

md=PLSRegression(2).fit(a,b)

xd=md.x_scores_;yd=md.y_scores_#成分得分

zx=np.linalg.pinv(a)@xd#计算自变量的成分系数

print(自变量的成分系数(列):\n,zx)#每列为一成分

zy=np.linalg.pinv(b)@yd#计算因变量的成分系数

print(因变量的成分系数(列):\n,zy)#每列为一成分

xzh=md.x_loadings_#x主成分回归系数

yzh=md.y_loadings_#y主成分回归系数

print(x主成分回???(行):\n,xzh);print(\n------)

print(y主成分回归(行):\n,yzh);print(\n------)

;beta2=md.coef_#每一列是y对x的回归系数

print((标准化)y关于x回归系数(列):\n,beta2)

beta3=np.zeros((n+1,m))

beta3[0,:]=mu[n:]-mu[:n]/s[:n]@beta2*s[n:]

foriinrange(m):

beta3[1:,i]=s[n+i]/s[:n]*beta2[:,i]

print((原始数据)y关于x回归系数(列):\n,beta3)

aa=np.hstack([np.ones((N,1)),d0[:,:n]])

yh=aa@beta3#求预测值

?

plt.rc(font,family=SimHei);plt.rc(axes,unicode_minus=False)

plt.rc(font,size=15);x0=np.arange(1,4)

plt.bar(x0,beta2[0,:],0.1)

plt.bar(x0+0.1,beta2[1,:],0.1);plt.bar(x0+0.2,

文档评论(0)

地矿高级工程师 + 关注
实名认证
服务提供商

高级工程师持证人

矿产勘查,地质勘查,地质灾害,石油天然气,课件制作

领域认证该用户于2025年07月19日上传了高级工程师

1亿VIP精品文档

相关文档