1. 导入数据
import numpy as np
import matplotlib. pyplot as plt
np. random. seed( 42 )
x = np. random. uniform( - 3.0 , 3.0 , size= 100 )
X = x. reshape( - 1 , 1 )
y = 0.5 * x + 3 + np. random. normal( 0 , 1 , size= 100 )
2. 分割数据集
from sklearn. model_selection import train_test_split
np. random. seed( 666 )
X_train, X_test, y_train, y_test = train_test_split( X, y)
``
```python
from sklearn. pipeline import Pipeline
from sklearn. preprocessing import PolynomialFeatures
from sklearn. preprocessing import StandardScaler
from sklearn. linear_model import LinearRegression
def PolynomialRegression ( degree) :
return Pipeline( [
( "poly" , PolynomialFeatures( degree= degree) ) ,
( "std_scaler" , StandardScaler( ) ) ,
( "lin_reg" , LinearRegression( ) )
] )
def plot_model ( model) :
X_plot = np. linspace( - 3 , 3 , 100 ) . reshape( 100 , 1 )
y_plot = model. predict( X_plot)
plt. scatter( x, y)
plt. plot( X_plot[ : , 0 ] , y_plot, color= 'r' )
plt. axis( [ - 3 , 3 , 0 , 6 ] )
plt. show( )
4. 使用模型正则化之前
from sklearn. metrics import mean_squared_error
poly_reg = PolynomialRegression( degree= 20 )
poly_reg. fit( X_train, y_train)
y_poly_predict = poly_reg. predict( X_test)
mean_squared_error( y_test, y_poly_predict)
plot_model( poly_reg)
5. 使用岭回归之后
from sklearn. linear_model import Ridge
def RidgeRegression ( degree, alpha) :
return Pipeline( [
( "poly" , PolynomialFeatures( degree= degree) ) ,
( "std_scaler" , StandardScaler( ) ) ,
( "ridge_reg" , Ridge( alpha= alpha) )
] )
ridge1_reg = RidgeRegression( 20 , 100 )
ridge1_reg. fit( X_train, y_train)
y1_predict = ridge1_reg. predict( X_test)
mean_squared_error( y_test, y1_predict)
plot_model( ridge1_reg)
6. 使用LASSO回归之后
from sklearn. linear_model import Lasso
def LassoRegression ( degree, alpha) :
return Pipeline( [
( "poly" , PolynomialFeatures( degree= degree) ) ,
( "std_scaler" , StandardScaler( ) ) ,
( "lasso_reg" , Lasso( alpha= alpha) )
] )
lasso1_reg = LassoRegression( 20 , 0.01 )
lasso1_reg. fit( X_train, y_train)
y1_predict = lasso1_reg. predict( X_test)
mean_squared_error( y_test, y1_predict)
plot_model( lasso1_reg)