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')
机器学习代码——线性规划篇
最新推荐文章于 2024-08-01 16:34:20 发布
该代码示例使用sklearn库训练了线性回归、Ridge回归和Lasso回归模型,以预测乳腺癌数据集的结果。通过训练和测试集分割数据,计算并比较了三种模型的均方误差。此外,还展示了模型对部分测试数据的预测结果。
摘要由CSDN通过智能技术生成