线性回归模型sklearn实现

梦想与她 提交于 2020-03-01 03:08:46

class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)

 

参数:

fit_intercept    布尔值,可选,默认为真

是否计算模型的截距。如果设定为假,则不计算就截距。

normalize布尔值,可选,默认为假

当fit_intercept设定为假的时候自动忽略这个参数。如果为真,X在回归将会进行标准化预处理。如果你希望将数据正则化,可以选用正则化方法事先处理数据并把normalize设定为False.

copy_X      布尔值,可选,默认为真

如果为真,X将被复制,否则,它可能重写。

n_jobs:线程数。

 

 

 

属性:

coef_:系数

rank_:矩阵X的秩

singular_ :

intercept_:截距

 

方法

fit(self, X, y[, sample_weight]) 

训练模型

get_params(self[, deep])

获得参数

predict(self, X)

预测

score(self, X, y[, sample_weight])

返回判定系数R**2

set_params(self, \*\*params)

设定参数


 

 

 

 

 

一个简单例子

 

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import metrics
from sklearn.linear_model import LinearRegression

plt.rcParams['font.sans-serif']=['SimHei']   #正常显示中文名称
plt.rcParams['axes.unicode_minus']=False     #正常显示负号

#载入数据集
diabetes_X,diabetes_y=datasets.load_diabetes(return_X_y=True)
#选取其中一个特征
diabetes_X=diabetes_X[:,np.newaxis,2]
#划分训练集和测试集
X_train=diabetes_X[:-30]
X_test=diabetes_X[30:]
y_train=diabetes_y[:-30]
y_test=diabetes_y[30:]

#训练模型
reg=LinearRegression()
reg.fit(X_train,y_train)


y_pred=reg.predict(X_test)


#评估模型得分


# 系数
print('Coefficients: \n', reg.coef_)
# 均方误差
print('Mean squared error: %.2f'
      % metrics.mean_squared_error(y_test, y_pred))
# 判定系数
print('Coefficient of determination: %.2f'
      % metrics.r2_score(y_test, y_pred))

#画图
plt.figure()
plt.scatter(X_test,y_test,marker='.',color='blue')
plt.plot(X_test,y_pred,color='r')
plt.title('图形')

plt.xticks()
plt.yticks()
plt.show()

 

 

Coefficients: 
 [941.43097333]
Mean squared error: 3878.52
Coefficient of determination: 0.36

 

不同的系数对岭回归模型的影响

 

import numpy as np
from sklearn import linear_model
import matplotlib.pyplot as plt

#创建10*10的希尔伯特矩阵

X=1.0/(np.arange(1,11)+np.arange(0,10)[:,np.newaxis])
y=np.ones(10)

#计算路径

n_alphas=200
alphas=np.logspace(-10,-2,n_alphas)

coefs=[]
for alpha in alphas:
    ridge=linear_model.Ridge(alpha=alpha,fit_intercept=False)
    ridge.fit(X,y)
    coefs.append(ridge.coef_)
    
#画图
ax=plt.gca()
ax.plot(alphas,coefs)
ax.set_xscale('log')
ax.set_xlim(ax.get_xlim()[::-1])  #翻转轴
plt.xlabel('alpha')
plt.ylabel('coef')
plt.title('Ridge coefficients as a function of the regularization')
plt.axis('tight')

plt.show()

 


 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!