QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2776|回复: 0
打印 上一主题 下一主题

偏最小二乘回归分析

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-11-30 16:59 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
偏小二乘回归提供一种多对多线性回归建模的方法,特别当两组变量的个数很多,且都存在多重相关性,而观测数据的数量(样本量)又较少时,用偏小二乘回归建立的模型具有传统的经典回归分析等方法所没有的优点。' Z) e& u9 _, M% P! Z
偏小二乘回归分析在建模过程中集中了主成分分析,典型相关分析和线性回归分析方法的特点,因此在分析结果中,除了可以提供一个更为合理的回归模型外,还可以同时完成一些类似于主成分分析和典型相关分析的研究内容,提供更丰富、深入的一些信息。
  1. import numpy as np; x1 p) v( \7 ~, `
  2. from sklearn.cross_decomposition import PLSRegression1 s! |2 q7 C9 `, K& o+ Y( J
  3. from sklearn.preprocessing import StandardScaler) _. w+ X7 O! h0 [( V2 |0 _
  4. import matplotlib.pyplot as plt
  5. : G9 F5 L- g. J$ l+ h
  6. $ d\\" B6 l1 V* a
  7. # 原始数据,自变量X和因变量y& D( g% V- k$ @- K% ]) N6 Z$ O\\" I
  8. X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])) v7 G) S! U; b: |6 J7 G, j
  9. y = np.array([1, 2, 3, 4])
  10. 4 {1 }7 j% s! f8 B0 o! z
  11. 7 w( ^+ W+ a1 l! G9 U6 K5 I0 K
  12. # 对自变量进行标准化处理
  13. ( I6 e; u: Z0 d/ o1 x9 W) b: H
  14. scaler = StandardScaler()
  15. 3 K! b+ `; n: X& B6 y1 B
  16. X_scaled = scaler.fit_transform(X)6 J$ b' e* w4 p, }& z8 C

  17. ( i1 M. B3 }2 S
  18. # 创建PLSRegression对象,并指定主成分个数为2( k+ I+ C8 F3 l* f) P% m# {
  19. pls = PLSRegression(n_components=2)
  20. * P* K, ?2 V  t

  21. , V! M5 j1 L, |- @2 X; D% _
  22. # 进行偏最小二乘回归分析
  23. , x$ @8 }) P, K
  24. pls.fit(X_scaled, y)
  25. 9 [! ^) k\\" K  R: J+ D- k\\" n
  26. 2 G( M' ?9 v. G* M
  27. # 获得预测值
  28. , F. O1 V\\" Y/ y: c% I# R- @( u
  29. y_pred = pls.predict(X_scaled)- [: @- a$ v+ V: c+ Q
  30. ' }* s1 N  r* ~7 ?7 `; R
  31. # 绘制原始数据和预测值
  32. 6 T, H# r$ W% r# b  M& K4 @
  33. plt.figure(figsize=(8, 6))+ Q' N; q5 a( \& y\\" i
  34. plt.scatter(y, y_pred, c='b', label='Predicted vs. Observed')
  35. 7 }9 i2 k, g8 H* o) [
  36. plt.plot([min(y), max(y)], [min(y), max(y)], 'k--', lw=2, label='Perfect Fit')
  37. . s4 L3 ]' O; r\\" V( [
  38. plt.xlabel('Observed')% p; A% d8 J! g( S- q: y
  39. plt.ylabel('Predicted')
  40. , Q: W. S. o/ R$ k
  41. plt.title('PLS Regression')
  42. $ @: B3 v- M, V- }$ |7 r
  43. plt.legend()6 P4 ~* z; Q# W) y* w0 t
  44. plt.grid(True)
  45. - ~$ h2 U. m) J
  46. plt.show()
  47. 2 w$ K& x# x& M
  48. 5 d+ i* I. A9 s5 K
在上述代码中,我们首先定义了原始数据矩阵X和因变量向量y,然后创建了一个PLSRegression对象并指定保留的主成分个数为2。接下来,使用fit()方法进行偏最小二乘回归分析,并使用coef_属性获取回归系数。最后,使用predict()方法对原始数据进行预测,并获得预测值y_pred。请根据实际情况调整原始数据和保留的主成分个数,并根据需要对结果进行解释和分析。/ [2 C1 P% k- E4 A9 P9 W
运行上述代码,将绘制散点图来展示观察值(原始数据)与预测值之间的关系。如果模型拟合良好,散点图中的点应该基本落在对角线上。如果点主要集中在对角线上方,则预测值高估了观察值;如果点主要集中在对角线下方,则预测值低估了观察值。在理想情况下,所有点都应该在对角线上。( G1 x4 u. b9 ]! `, M
VeryCapture_20231130164832.jpg
  j) S( U& P2 W: D$ a$ }. R  U+ ^
1 H* C$ ?5 Q) q
8 Q  T$ B! P9 c2 t3 }3 o$ v, v7 C/ |
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-7-10 07:04 , Processed in 0.435134 second(s), 54 queries .

回顶部