黑马程序员技术交流社区
标题:
【上海校区】Sklearn中的线性回归
[打印本页]
作者:
梦缠绕的时候
时间:
2019-1-9 09:29
标题:
【上海校区】Sklearn中的线性回归
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
#假设样本数据集如下;
data=[
[0.067732,3.176513],[0.427810,3.816464],[0.995731,4.550095],[0.738336,4.256571],[0.981083,4.560815],
[0.526171,3.929515],[0.378887,3.526170],[0.033859,3.156393],[0.132791,3.110301],[0.138306,3.149813],
[0.247809,3.476346],[0.648270,4.119688],[0.731209,4.282233],[0.236833,3.486582],[0.969788,4.655492],
[0.607492,3.965162],[0.358622,3.514900],[0.147846,3.125947],[0.637820,4.094115],[0.230372,3.476039],
[0.070237,3.210610],[0.067154,3.190612],[0.925577,4.631504],[0.717733,4.295890],[0.015371,3.085028],
[0.335070,3.448080],[0.040486,3.167440],[0.212575,3.364266],[0.617218,3.993482],[0.541196,3.891471]
]
#生成X和y矩阵
dataMat=np.array(data)
X=dataMat[:,0:1]#取数组的第一列赋值给X,并且将该数组以列的形式书写,最后一个1表示以列的形式书写
y=dataMat[:,1]#取数组的第二列赋值给y,默认书写形式为行
#线性回归
model=LinearRegression(copy_X=True,fit_intercept=True,n_jobs=1,normalize=False)
model.fit(X,y)
print('系数矩阵:\n',model.coef_)
print('线性回归模型:\n',model)
#使用模型预测
predicted=model.predict(X)
#绘制散点图
plt.scatter(X,y,marker='*')
plt.plot(X,predicted,c='r')
plt.xlabel('X')
plt.ylabel('y')
plt.show()
#-----------------------------sklearn中的Lasso回归-------------------------------
from sklearn.linear_model import Lasso,LassoCV,LassoLarsCV
# Lasso回归,LassoCV交叉验证实现alpha的选取,LassoLarsCV基于最小角回归交叉验证实现alpha的选取
model2=Lasso(alpha=0.01)#调节alpha可以实现对拟合的程度
model_LassoCV=LassoCV()#LassoCV自动调节alpha可以实现选择最佳的alpha
model_LassoLareCV=LassoLarsCV()
model2.fit(X,y)
model_LassoCV.fit(X,y)
model_LassoLareCV.fit(X,y)
print('系数矩阵\n',model2.coef_)
print('线性回归模型:\n',model2)
print('系数矩阵\n',model_LassoCV.coef_)
print('线性回归模型:\n',model_LassoCV)
print('系数矩阵\n',model_LassoLareCV.coef_)
print('线性回归模型:\n',model_LassoLareCV)
print('最佳的alpha:',model_LassoCV.alpha_)
print('最佳的alpha:',model_LassoLareCV.alpha_)
#使用模型预测
predicted2=model2.predict(X)
predicted3=model_LassoCV.predict(X)
predicted4=model_LassoLareCV.predict(X)
print('predicted2:',predicted2)
print('predicted3:',predicted3)
print('predicted4:',predicted4)
plt.scatter(X,y,marker='x')
plt.plot(X,predicted2,c='r')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Lasso regression')
plt.show()
#-------------------sklearn中的岭回归---------------------
from sklearn.linear_model import Ridge,RidgeCV
model3 = Ridge(alpha=0.5)
model4 = RidgeCV(alphas=[0.1, 1.0, 10.0]) # 通过RidgeCV可以设置多个参数值,算法使用交叉验证获取最佳参数值
model3.fit(X, y) # 线性回归建模
print('系数矩阵:\n',model3.coef_)
print('线性回归模型:\n',model3)
# 使用模型预测
predicted5 = model3.predict(X)
# 绘制散点图 参数:x横轴 y纵轴
plt.scatter(X, y, marker='x')
plt.plot(X, predicted5,c='r')
# 绘制x轴和y轴坐标
plt.xlabel("x")
plt.ylabel("y")
# 显示图形
plt.title("RidgeRegression")
plt.show()
作者:
不二晨
时间:
2019-1-10 10:35
奈斯,加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2