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() |
|