监督学习:简单线性回归
为散点数据集(x,y)拟合一条曲线
import matplotlib.pyplot as plt
import seaborn as sns
sns.set();
import numpy as np
rng = np.random.RandomState(42)
x = 10 * rng.rand(50)
y = 2 * x - 1 + rng.randn(50)
plt.scatter(x, y);
1.选择模型类:
在 Scikit-Learn 中,每个模型类都是一个 Python 类。因此,假如我们想要计算一个简单
线性回归模型,那么可以直接导入线性回归模型类:
from sklearn.linear_model import LinearRegression
具体内容请参考 sklearn.linear_model模块文档(http://scikit-learn.org/stable/modules/linear_model.html)。
2.选择模型超参数
模型类与模型实例不同
model = LinearRegression(fit_intercept=True)
model
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1,normalize=False)
需要注意的是,对模型进行实例化其实仅仅是存储了超参数的值。我们还没有将模型应
用到数据上: Scikit-Learn 的 API 对选择模型
和将模型应用到数据
区别得很清晰。
3.将数据整理成特征矩阵和目标数组
虽然我们
的目标数组已经有了 y(长度为 n_samples 的数组),但还需要将数据 x 整理成[n_samples, n_features]
X = x[:, np.newaxis]
X.shape
(50, 1)
4.用模型拟合数据
model.fit(X, y)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1,
normalize=False)
在Scikit-Learn中,所有通过fit()方法获得的模型参数都带一条下划线
In[10]: model.coef_ #斜率
Out[10]: array([ 1.9776566])
In[11]: model.intercept_ #截距
Out[11]: -0.90331072553111635
5.预测新数据的标签
在 Scikit-Learn 中,我们用 predict() 方法进行预测。“新数据”是特征矩阵的 x坐标值,我们需要用模型预测出目标数组的 y 轴坐标:
xfit = np.linspace(-1, 11)
Xfit = xfit[:, np.newaxis]
yfit = model.predict(Xfit)
plt.scatter(x, y)
plt.plot(xfit, yfit);
参考:https://jakevdp.github.io/PythonDataScienceHandbook/05.02-introducing-scikit-learn.html