監督學習:簡單線性迴歸
爲散點數據集(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