1 インポートNPとしてnumpyの 2 インポートmatplotlib.pyplot PLTとして 3 から sklearn.linear_model インポート 線形回帰 4 から sklearn.datasetsがインポートmake_regression 5 から sklearn.model_selectionのインポートtrain_test_split 6 7 X、Y = make_regression(n_samples = 100、n_features = 2、n_informative = 2、random_state = 38 ) 8 X_train、X_test、y_train、y_test = train_test_split(X、Y、random_state = 8 ) 9 LR = 線形回帰()。フィット(X_train、y_train) 10 11 印刷(' lr.coef _ {} ' .format(lr.coef_ [:])) 12 プリント(' lr.intercept _ {} ' .format(lr.intercept_)) 13 14 #のX、Y = make_regression(n_samples = 50、n_features = 1、n_informative = 1、ノイズ= 50、random_state = 1) 15 # 16 #REG =線形回帰() 17 #1 reg.fit(X、Y) 18 #Z = np.linspace(-3,3,200 ).reshape(-1,1) 19 #1 plt.scatter(X、Y、C = 'B'、S = 60) 20 #1 plt.plot(Z、reg.predict(Z)、C = K '') 21 22 23 #= X - [。。。[1]、[4]、[3] 24 #Y = [3,5,3] 25 #。モデル線形LR =線形回帰()フィット(X、Y)#これらの二つの点にフィット 26 #Z = np.linspace(0,5,20)と機能#2つの点を描く 27 #1 plt.scatter(X、Y、S = 80) 28 #1 plt.plot(Z、lr.predict(z.reshape (-1,1))、C = 'K') 29 #plt.title( '直線') 30 #plt.show() 31は #(印刷'Y = {:。、3F}'形式(LR .coef_ [0])、 'X' ,. '+ {:。、3F}'形式(lr.intercept_)) 32 #データを当てはめる場合、一次方程式の係数を見つける 33である #印刷(「の線形係数: {:。。、2F}。([1] reg.coef_)「形式) 34である #印刷( '切片直線である:{:。。、2F}'形式(reg.intercept_)) 35 プリント(' トレーニングセットスコア:{:。。、2F} ' .format(lr.score(X_test、android.permission.FACTOR)。 ))
これらは、データ・セット、スコアおよびその他の要件を分割し、モデルの線形部分のいくつかの基本的な知識であり、需要パラメータの基本は、線形関数を含みます
実行コードシーケンスの後、次の図を得ました。
線形回帰図:
それは1.00のスコアの上記のコード、トレーニングおよびテストセットを実行すると、もちろん、モデルの適合度が高いことを示唆することによって求めることができるが、ノイズ実際のデータに起因する我々のデータには追加の要素が存在しないので、それもあります焦点は、様々な要因によって影響を受けるであろう、
そして、ノイズに参加し、それをテストします。
1 import numpy as np 2 import matplotlib.pyplot as plt 3 from sklearn.linear_model import LinearRegression 4 from sklearn.datasets import make_regression 5 from sklearn.model_selection import train_test_split 6 from sklearn.datasets import load_diabetes 7 X,y = load_diabetes().data,load_diabetes().target 8 X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=8) 9 lr = LinearRegression().fit(X_train,y_train) 10 print('训练集得分:{:,.2f}'.format(lr.score(X_train,y_train))) 11 print('测试集得分:{:,.2f}'.format(lr.score(X_test,y_test)))
在对上述代码进行运行后,可以发现训练集和测试集间的得分间存在一定的差异,这是因为模型过拟合导致的。在实际应用的过程中会采用伊西俄方法来避免过拟合。
存在三种情况:(1)欠拟合,(2)拟合(也是我们所追求的)(3)过拟合(这种情况比欠拟合更加麻烦)