A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始



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

1 个回复

倒序浏览
奈斯,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马