import numpy as np
from sklearn.pipeline import Pipeline
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
def PolynomialRegression(degree):
return Pipeline([
("poly", PolynomialFeatures(degree=degree)),
("std_scaler", StandardScaler()),
("lin_reg", LinearRegression())
])
x=np.random.uniform(-3,3,size=100)
X=x.reshape(-1,1)
y=0.5*x**2+x+2+np.random.normal(0,1,size=100)
poly=PolynomialRegression(100)
poly.fit(X,y)
y_predict=poly.predict(X)
print(mean_squared_error(y, y_predict))
plt.scatter(x,y)
# plt.plot(np.sort(x),y[np.argsort(x)],color="black")
plt.plot(np.sort(x),y_predict[np.argsort(x)],color="red")
plt.show()