线性模型(1)

 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 
 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 = LinearRegression().fit(X_train,y_train)
10 
11 print('lr.coef_:{}'.format(lr.coef_[:]))
12 print('lr.intercept_:{}'.format(lr.intercept_))
13 
14 # X,y = make_regression(n_samples=50,n_features=1,n_informative=1,noise=50,random_state=1)
15 #
16 # reg = LinearRegression()
17 # reg.fit(X,y)
18 # z = np.linspace(-3,3,200).reshape(-1,1)
19 # plt.scatter(X,y,c='b',s=60)
20 # plt.plot(z,reg.predict(z),c='k')
21 
22 
23 # X = [[1],[4],[3]]
24 # y = [3,5,3]
25 # lr = LinearRegression().fit(X,y)#线性模型拟合这两个点
26 # z = np.linspace(0,5,20)#画出两个点以及函数
27 # plt.scatter(X,y,s=80)
28 # plt.plot(z,lr.predict(z.reshape(-1,1)),c='k')
29 # plt.title('Straight Line')
30 # plt.show()
31 #print('y = {:,.3f}'.format(lr.coef_[0]),'x','+{:,.3f}'.format(lr.intercept_))
32 #拟合数据时,求线性方程的系数
33 # print('直线的系数为:{:,.2f}'.format(reg.coef_[1]))
34 # print('直线的截距是:{:,.2f}'.format(reg.intercept_))
35 print('训练集得分:{:,.2f}'.format(lr.score(X_test,y_test)))

  以上是线性模型的一些基础部分的知识,分割数据集,求得分等,以及包括求线性函数的参数等基础知识

在依次执行代码后获得到如下的图

线型回归的图:

通过运行上面的代码可以发现,训练集和测试集的得分均为1.00,当然这说明了模型的高度拟合,但是这也是因为没有在我们的数据中加入影响因素noise导致的,在实际的数据集中会有各种因素的影响,

那就加入noise再进行测试吧。

 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)过拟合(这种情况比欠拟合更加麻烦)

猜你喜欢

转载自www.cnblogs.com/weiyang2/p/11959536.html