以线性回归多项式为例,探索代价函数与训练数据集大小的关系。
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
n_dots = 200
# 创建数据集y=sqrt(x)
X=np.linspace(0,1,n_dots)
y=np.sqrt(X)+0.2*np.random.rand(n_dots)-0.1
# sklearn接口里需要用到n_sample X n_feature矩阵,需转化为200x1矩阵
X=X.reshape(-1,1)
y=y.reshape(-1,1)
# sklearn里构建多项式模型使用Pipeline
# 在Pipeline中可以包含多个数据模型,前一个模型处理完,转到下一个模型处理
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
# 定义函数生成一个多项式,其中degree表示多项式的项数
def polynominal_model(degree=1):
polynomial_features = PolynomialFeatures(degree=degree,include_bias=False)
linear_regression = LinearRegression()
# 流水线:先增加多项式阶数再用线性回归算法来拟合
pipeline = Pipeline([('polynomial_features',polynomial_features),('linear_regression',linear_regression)])
re