线性回归sklearn实现

线性回归

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

  • fit_intercept : 布尔型参数,表示是否计算该模型截距。可选参数。
  • normalize : 布尔型参数,若为True,则X在回归前进行归一化。可选参数。默认值为False。
  • copy_X : 布尔型参数,若为True,则X将被复制;否则将被覆盖。 可选参数。默认值为True。
  • n_jobs : 整型参数,表示用于计算的作业数量;若为-1,则用所有的CPU。可选参数。默认值为1。

参考代码

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

X, Y,coef = datasets.make_regression(n_samples=100, n_features=1, n_targets=1, noise=1,coef=True)

#区分训练集和测试集
X_train = X[:-20]
X_test  = X[-20:]

Y_train = Y[:-20]
Y_test  = Y[-20:]

#选择模型
lm = linear_model.LinearRegression(fit_intercept=False)


#训练,获得模型
lm.fit(X_train, Y_train)
#查看模型的参数,也就是系数
print('模型参数:', lm.coef_)


#训练集和测试集的预测值
train_pred = lm.predict(X_train)
test_pred  = lm.predict(X_test)

#输出预测的误差
print("训练集的预测均方误差:%.2f" % np.mean((train_pred-Y_train)**2))

print("测试集的预测均方误差:%.2f" % np.mean((test_pred-Y_test)**2))

print("预测score:%.2f" % lm.score(X_test, Y_test))

plt.scatter(X,Y,c='b',s=3)
plt.plot(X,X*lm.coef_,c='r')

plt.show()



你可能感兴趣的:(线性回归sklearn实现)