分散膨張係数(分散膨張係数、VIF)は、複数の線形重回帰モデル(複数)におけるメジャー共線の重症度の尺度です。非線形分散に関すると比較した場合には、比の変数及び仮定の分散との間の推定された回帰係数を示しています。
NPとして輸入numpyの
sklearn.linear_model輸入線形回帰から
= np.array coef0([5,6,7,8,9,10,11,12])
X1 = np.random.rand(100,8)
Y = np.dot(X1、coef0)+ np.random .Normalと呼ばれる(0、1.5、サイズ= 100)
=トレーニングnp.random.choice([TRUE、FALSE]、P = [0.8、0.2]、サイズ= 100)
Lr1と=線形回帰()
lr1.fit(X1 [トレーニング] 、Y [トレーニング])
#二乗誤差MSEは、係数平均
プリント(((lr1.coef_-coef0)** 2).SUM()/ 8)
#テストセット精度(R2)
プリント(lr1.score(X1を[ 〜トレーニング]、Y [〜トレーニング ]))
X2 = np.column_stack([X1、np.dot(X1の[:、[0,1]、np.array([1,1]))+ np.random.normal(0,0.05、サイズ= 100) ])
X2 = np.column_stack([X2、np.dot(X2の[:、[1,2,3]、np.array([1,1,1]))+ np.random.normal(0、 0.05、サイズ= 100)])
X3 = np.column_stack([X1、np.random.rand(100,2)])
インポートPLTのようmatplotlib.pyplot
CLF =線形回帰()
VIF2 = np.zeros((10,1))
の範囲内のiについて(10):
TMP = [範囲(10)におけるkに対するkもしK = I!]
CLF。 ([:、TMP]、X2 [I] X2)適合
vifi = 1 /(1-clf.score(X2の[:、TMP]、X2 [:I]))
VIF2を[I] = vifi
plt.figure()
AX = plt.gca()
ax.plot(VIF2)
#1 ax.plot(vif3)
plt.xlabel( '特徴')
plt.ylabel( 'VIF')
plt.title( 'のVIF係数機能')
plt.axis('タイト')
plt.show()