監督學習:簡單線性迴歸

監督學習:簡單線性迴歸

爲散點數據集(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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章