机器学习-----线性回归模型(线性回归,岭回归,lasso回归对比)

import  sklearn
import numpy as np
from sklearn import datasets ,linear_model
import  matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
print(sklearn.__version__)
def TrainLinearRegression(X,y):
    model=linear_model.LinearRegression()
    model.fit(X,y)
    print('E|y-wTx|^2  :'+str(np.mean(model.predict(X)-y)**2))
    return model
def TrainRidgeRegression(X,y,coeff):
    model = linear_model.Ridge(alpha=coeff)
    model.fit(X, y)
    print('E|y-wTx|^2  :' + str(np.mean(model.predict(X) - y) ** 2))
    return model

def TrainLassoRegression(X,y,coeff):
    model = linear_model.Lasso(alpha=coeff)
    model.fit(X, y)
    print('E|y-wTx|^2  :' + str(np.mean(model.predict(X) - y) ** 2))
    return model
def TestMode(X_test,y_test,model):
   try:
    score=model.score(X_test,y_test)
    y_pred=model.predict(X_test)
    print('model test score is'+str(score))
    return y_pred,score
   except ValueError as e:
       print(e)


data,label=datasets.load_boston(return_X_y=True)
print(data.shape,label.shape)
X_train,X_test,y_train,y_test=train_test_split(data,label,test_size=0.2)
print(X_train.shape,X_test.shape,y_train.shape,y_test.shape)
LM=TrainLinearRegression(X_train,y_train)
RM=TrainRidgeRegression(X_train,y_train,0.5)
LL=TrainLassoRegression(X_train,y_train,0.01)
y_pred_line,score_line=TestMode(X_test,y_test,LM)
y_pred_ridge,score_ridge=TestMode(X_test,y_test,RM)
y_pred_lasso,score_lasso=TestMode(X_test,y_test,LL)
plt.figure()
plt.plot(range(30),y_pred_line[:30],'bo-',y_test,'y.--')
plt.title('Line model',fontsize='large')
plt.figure()
plt.plot(range(30),y_pred_ridge[:30],'r>-',y_test,'y.--')
plt.title('Ridge model',fontsize='large')
plt.figure()
plt.plot(range(30),y_pred_lasso[:30],'ks-',y_test,'y.--')
plt.title('lasso model',fontsize='large')
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值