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