多项式曲线拟合
《模式识别与机器学习》
使用 sin(x) 函数产生数据集:
1. import numpy as np
2.
3. n_dots = 200 # 产生 200 个数据点
4. X = np.linspace(-2 * np.pi, 2 * np.pi, n_dots) # X 取值范围:[-2*pi, 2
*pi]
5. Y = np.sin(X) + 0.2 * np.random.rand(n_dots) - 0.1 # Y 加上随机噪声[-0.1,
0.1]
使用 sklearn.preprocessing.PolynomialFeatures 进行特征的构造:
1. from sklearn.preprocessing import PolynomialFeatures
2. import numpy as np
3.
4. n_dots = 200
5. X = np.linspace(-2 * np.pi, 2 * np.pi, n_dots)
6. Y = np.sin(X) + 0.2 * np.random.rand(n_dots) - 0.1
1. X = X.reshape(-1, 1)
2. Y = Y.reshape(-1, 1)
在标准线性回归的情况下,你可能会有一类似于二维数据的模型:
如果我们想把数据拟合成抛物面而不是平面,可以结合二阶多项式的特征,使模型看起来像这
样:
观察,这仍然还是一个线性模型,创造一个新的变量:
评论0