機器學習A-Z~簡單線性迴歸

所謂簡單線性迴歸,其實就是自變量只有一個條件狀況下的線性迴歸問題,是線性迴歸問題中最簡單的一種了,這種問題在生活中也常常能簡單,本文就用一個簡單的例子來說解簡單線性迴歸。python

如下有一組數據集,關於工做年限和薪水之間的聯繫(篇幅問題只給一部分):dom

YearsExperience,Salary
1.1,39343.00
1.3,46205.00
1.5,37731.00
2.0,43525.00
2.2,39891.00
2.9,56642.00
3.0,60150.00
3.2,54445.00
3.2,64445.00
3.7,57189.00
3.9,63218.00

正常狀況下薪水都是會隨着工做年限的增加而增加,所以這二者之間是有着很明顯的線性關係的,且這裏只有工做年限一個自變量,所以是個簡單線性迴歸問題。咱們如今要作的,就是用數學公式來表示這二者之間的關係,並能預測不一樣工做年限下可能的薪水值。測試

首先要對數據進行預處理,這裏只須要導入數據集,切分紅訓練集和測試集兩步便可。對於特徵縮放這個點特別提一下,因爲不少數據科學的包中其實已經包含了特徵縮放的相關功能,所以某些狀況下是不須要進行特徵縮放的,但對於沒有特徵縮放的要注意下本身手動進行特徵縮放,本文是不須要的。所以代碼能夠直接使用以前使用過的代碼,以下所示(後面須要的包這裏先導入了):spa

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

data_path = '../simple_regression/data/Salary_Data.csv'

dataset = pd.read_csv(data_path)
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 1].values

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=0)

拆分完測試集和訓練集後就要進行線性迴歸處理了,這裏一樣適用的是sklearn包,首先構造迴歸器:code

# Fitting Simple Linear Regression to the Training Set
regressor = LinearRegression()
regressor.fit(X_train, y_train)

這裏使用的是LinearRegression這個類,而後傳入訓練集讓其訓練的出一個線性迴歸器。而後再用得出的迴歸器來預測測試集的結果:rem

# Predicting the Test set results
y_pred = regressor.predict(X_test)

得出預測結果後咱們來看看此次訓練獲得的結果是否足夠準確,這裏經過matplotlib包來將測試集和訓練集的點以及得出的線性迴歸方程畫到圖像上來觀察:數學

#Visualising the Training set results
plt.scatter(X_train, y_train, c='red')
plt.plot(X_train, regressor.predict(X_train), c='blue')
plt.title('Salary VS Experience (training set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()

#Visualising the test set results
plt.scatter(X_test, y_test, c='red')
plt.plot(X_train, regressor.predict(X_train), c='blue')
plt.title('Salary VS Experience (test set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()

這裏解釋一下其中的一行代碼:pandas

plt.plot(X_train, regressor.predict(X_train), c='blue')it

雖然一個是畫訓練集一個是畫測試集,但因爲咱們實際上用的是經過訓練集訓練出的線性迴歸器,因此這裏畫出線性迴歸線的時候實際上不須要再將其中的參數換成X_test。而後此時獲得的圖像以下:io

訓練集

測試集

很明顯能看出這次的訓練結果在測試集上的表現仍是比較使人滿意的,基本和數據吻合,這樣就得出了一個簡單的線性迴歸的模型。後面的文章會繼續講解多變量的線性迴歸,此文只是最簡單的迴歸,做爲基礎入門。

相關文章
相關標籤/搜索