Jupyter Notebook
Ridge
import numpy as np
from matplotlib import pyplot as plt
from sklearn.metrics import mean_absolute_error
from sklearn.linear_model import Ridge
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
RidgeGression
#用pipeline管道编写一个函数
def RidgeGression(degree, alpha):
return Pipeline([
("poly", PolynomialFeatures(degree=degree)),
("stand_scal", StandardScaler()),
("ridge", Ridge(alpha=alpha))
])
创建测试用例
random
x = np.random.uniform(-5, 5, 100)
X = x.reshape(-1,1)
x.shape
(100,)
0, 1, 100
y = 0.5 * x + 5 + np.random.normal(0, 1, 100)
x, y
plt.scatter(x, y)
<matplotlib.collections.PathCollection at 0x1a3cfbd9b38>
X
x_train,x_test,y_train,y_test = train_test_split(X, y)
rid_reg = RidgeGression(10, 10)
rid_reg.fit(x_train,y_train)
Pipeline(memory=None,
steps=[('poly', PolynomialFeatures(degree=10, include_bias=True, interaction_only=False)), ('stand_scal', StandardScaler(copy=True, with_mean=True, with_std=True)), ('ridge', Ridge(alpha=10, copy_X=True, fit_intercept=True, max_iter=None,
normalize=False, random_state=None, solver='auto', tol=0.001))])
rid_reg.predict(x_test)
y_predict = rid_reg.predict(x_test)
mean_absolute_error(y_predict, y_test)
0.8546305732275755