import numpy as np
from sklearn.pipeline import Pipeline
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import Lasso
def LassoRegression(degree,alpha):
return Pipeline([
("poly", PolynomialFeatures(degree=degree)),
("std_scaler", StandardScaler()),
("lasso_reg", Lasso(alpha=alpha))
])
def plt_model(model,x,y):
x_sort=np.sort(x,axis=0)
y_predict_=model.predict(x_sort)
plt.scatter(x, y)
plt.plot(x_sort, y_predict_,color="r")
plt.show()
x=np.random.uniform(-3,3,size=100)
X=x.reshape(-1,1)
y=0.5*x+3+np.random.normal(0,1,size=100)
train_X,test_X,train_y,test_y = train_test_split(X,y,test_size=0.3,random_state=66)
lasso=LassoRegression(10,0.01)
lasso.fit(train_X,train_y)
y_predict=lasso.predict(test_X)
print(mean_squared_error(test_y, y_predict))
# #
plt_model(lasso,X,y)