过拟合和欠拟合(overfitting and underfitting)
- 过拟合(overfitting)就是对训练数据集的拟合很好,但是对测试数据集的拟合能力就变的很差,模型过多的表达了数据间的噪音关系,此时模型的泛化能力就很差。
- 欠拟合(underfitting)指的是算法训练的模型不饿能完整的表述数据这之间的关系。
下面通过一个多项式回归的例子来感性的认识这两个概念:
Step1 随机生成一组具有非线性关系的数据集合
import numpy as np
import matplotlib.pyplot as pltS
np.random.seed(666)
x = np.random.uniform(-3.0, 3.0, size=100)
X = x.reshape(-1, 1)
y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, size=100)
plt.scatter(x, y)
plt.show()
Step2.1:使用线性回归来拟合这些数据
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y)
lin_reg.score(X, y)
0.49537078118650091
y_predict = lin_reg.predict(X)
plt.scatter(