偏小二乘回归提供一种多对多线性回归建模的方法,特别当两组变量的个数很多,且都存在多重相关性,而观测数据的数量(样本量)又较少时,用偏小二乘回归建立的模型具有传统的经典回归分析等方法所没有的优点。 5 P. v8 A3 B h) U# z偏小二乘回归分析在建模过程中集中了主成分分析,典型相关分析和线性回归分析方法的特点,因此在分析结果中,除了可以提供一个更为合理的回归模型外,还可以同时完成一些类似于主成分分析和典型相关分析的研究内容,提供更丰富、深入的一些信息。
import numpy as np
6 h) |5 {( Y0 H0 w0 {! |& r
from sklearn.cross_decomposition import PLSRegression
) |* ^ n; P5 K4 Y6 v
from sklearn.preprocessing import StandardScaler
3 C4 p% f U! ` i' ?
import matplotlib.pyplot as plt
- h: k9 ~: Y6 z4 u) f' C
/ I4 |- G* F) ~4 @ r; F
# 原始数据,自变量X和因变量y
5 \\\" d/ ^' M2 ~# g6 C
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])0 m/ d$ f% d4 \' m, g
y = np.array([1, 2, 3, 4])( k7 @$ [/ B5 c- |7 u j% _3 q: C7 L
( J: k% w# c! `3 c: S
# 对自变量进行标准化处理
, A6 \: w\\" O q0 N C7 g\\" E
scaler = StandardScaler(): h6 q) ?5 p9 w3 V1 ^
X_scaled = scaler.fit_transform(X)% ~+ {: V3 |! O$ |/ i
& N2 p* w) b# ~
# 创建PLSRegression对象,并指定主成分个数为2
9 L' m/ e7 s# {! _4 V
pls = PLSRegression(n_components=2)/ v/ b6 B$ [5 _8 {' N I
, R. h5 l5 E' X7 K
# 进行偏最小二乘回归分析
7 j0 p\\" |) B3 O3 n\\" \' ~
pls.fit(X_scaled, y)
+ T\\" z+ J1 ~! n! x5 u( W7 v8 }7 D5 d
! K+ O- F; X1 ~\\" j) m
# 获得预测值8 p4 z1 I) z9 n
y_pred = pls.predict(X_scaled)
! j6 \$ J\\" L( R3 v! N
. C9 g5 [0 ^, z5 N\\" v( v0 r
# 绘制原始数据和预测值
s l! e2 }0 H7 G0 H8 B2 p
plt.figure(figsize=(8, 6))' [0 m/ D1 E0 s5 G
plt.scatter(y, y_pred, c='b', label='Predicted vs. Observed')) T0 J! [- R2 x% F' F3 @