机器学习A-Z~简单线性回归
所謂簡單線性回歸,其實就是自變量只有一個條件情況下的線性回歸問題,是線性回歸問題中最簡單的一種了,這種問題在生活中也經常能簡單,本文就用一個簡單的例子來講解簡單線性回歸。
以下有一組數據集,關于工作年限和薪水之間的聯系(篇幅問題只給一部分):
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正常情況下薪水都是會隨著工作年限的增長而增長,因此這兩者之間是有著很明顯的線性關系的,且這里只有工作年限一個自變量,因此是個簡單線性回歸問題。我們現在要做的,就是用數學公式來表示這兩者之間的關系,并能預測不同工作年限下可能的薪水值。
首先要對數據進行預處理,這里只需要導入數據集,切分成訓練集和測試集兩步即可。對于特征縮放這個點特別提一下,由于很多數據科學的包中其實已經包含了特征縮放的相關功能,因此某些情況下是不需要進行特征縮放的,但對于沒有特征縮放的要注意下自己手動進行特征縮放,本文是不需要的。因此代碼可以直接使用之前使用過的代碼,如下所示(后面需要的包這里先導入了):
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression import matplotlib.pyplot as pltdata_path = '../simple_regression/data/Salary_Data.csv'dataset = pd.read_csv(data_path) X = dataset.iloc[:, :-1].values y = dataset.iloc[:, 1].valuesX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=0)拆分完測試集和訓練集后就要進行線性回歸處理了,這里同樣適用的是sklearn包,首先構造回歸器:
# Fitting Simple Linear Regression to the Training Set regressor = LinearRegression() regressor.fit(X_train, y_train)這里使用的是LinearRegression這個類,然后傳入訓練集讓其訓練的出一個線性回歸器。然后再用得出的回歸器來預測測試集的結果:
# 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()這里解釋一下其中的一行代碼:
plt.plot(X_train, regressor.predict(X_train), c='blue')
雖然一個是畫訓練集一個是畫測試集,但由于我們實際上用的是通過訓練集訓練出的線性回歸器,所以這里畫出線性回歸線的時候實際上不需要再將其中的參數換成X_test。然后此時得到的圖像如下:
很明顯能看出此次的訓練結果在測試集上的表現還是比較令人滿意的,基本和數據吻合,這樣就得出了一個簡單的線性回歸的模型。后面的文章會繼續講解多變量的線性回歸,此文只是最簡單的回歸,作為基礎入門。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的机器学习A-Z~简单线性回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Log4j、slf4j
- 下一篇: 也说new