机器学习代码——线性规划篇

该代码示例使用sklearn库训练了线性回归、Ridge回归和Lasso回归模型,以预测乳腺癌数据集的结果。通过训练和测试集分割数据,计算并比较了三种模型的均方误差。此外,还展示了模型对部分测试数据的预测结果。
摘要由CSDN通过智能技术生成
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('(Linear)E(|Y-WTx|^2):'+str(np.mean((model.predict(X)-y)**2)))
    return model


def TrainRidgeRegression(X,y,coeff):
    model=linear_model.Ridge(coeff)
    model.fit(X,y)
    print('(Ridge)E(|Y-WTx|^2):'+str(np.mean((model.predict(X)-y)**2)))
    return model

def TrainLassoRegression(X,y,coeff):
    model=linear_model.Lasso(coeff)
    model.fit(X,y)
    print('(Lasso)E(|Y-WTx|^2):'+str(np.mean((model.predict(X)-y)**2)))
    return model

def TestModel(X_test,y_test,model):
    score=model.score(X_test,y_test)
    y_pred=model.predict(X_test)
    print('model test score is '+str(score))
    return y_pred,score

data,label=datasets.load_breast_cancer(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,y_train.shape,X_test.shape,y_test.shape)#(训练集数据,特征条数)其余是测试集

LinearModel=TrainLinearRegression(X_train, y_train)
RidgeModel=TrainRidgeRegression(X_train,y_train,0.5)
LassoModel=TrainLassoRegression(X_train,y_train,0.01)

y_pred_linear,score_linear=TestModel(X_test,y_test,LinearModel)
y_pred_ridge,score_ridge=TestModel(X_test,y_test,RidgeModel)
y_pred_lasso,score_lasso=TestModel(X_test,y_test,LassoModel)

plt.figure()
plt.plot(range(10),y_pred_linear[:10],'bo-',y_test[:10],'y.--')
plt.title('Linear model prediction',fontsize='large')

plt.figure()
plt.plot(range(10),y_pred_ridge[:10],'bo-',y_test[:10],'y.--')
plt.title('Ridge model prediction',fontsize='large')

plt.figure()
plt.plot(range(10),y_pred_lasso[:10],'bo-',y_test[:10],'y.--')
plt.title('lasso model prediction',fontsize='large')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值