機器學習:簡單線性迴歸(附數據集下載地址)--補充

數據集下載地址:https://pan.baidu.com/s/1HaBVhEmSaBKBfZVRMww56Q 密碼:qlge


線性迴歸是利用數理統計中迴歸分析,來確定兩種或兩種以上變量間相互依賴的定量關係的一種統計分析方法。
迴歸分析中,只包括一個自變量和一個因變量,且二者的關係可用一條直線近似表示,這種迴歸分析稱爲一元線性迴歸分析。如果迴歸分析中包括兩個或兩個以上的自變量,且因變量和自變量之間是線性關係,則稱爲多元線性迴歸分析
本篇討論的是關於一元線性迴歸,其基本形式爲:Y=a * X + b。需要做到的是擬合訓練集數據找出合適的參數a , b,確定方程式,用於預測未知的樣本。


圖像大致如下:
一元線性迴歸
目標是找出擬合效果最好參數a , b,該如何確定呢?
最常見的方法是利用歐式距離。將數據視作一個個的點,進行計算,計算方法如下:
歐式距離
過程體現如下:
這裏寫圖片描述
紅點爲實際值,綠點爲預測的值。計算每個點跟預測點的歐式距離之和,方程不同,預測點不同,也就是歐式距離之和不同,取最小值,從而確定參數a ,b


#導入需要用到的庫
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

載入數據並對數據預處理:

dataset = pd.read_csv('Salary_Data.csv')
X = dataset.iloc[:,0].values 
Y = dataset.iloc[:,-1].values

#將數據分成訓練集和測試集,訓練集用於訓練模型,測試集用於測試訓練的模型的效果
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.3,random_state = 0)
X_train = X_train.reshape(-1,1)
Y_train = Y_train.reshape(-1,1)

創建迴歸器,擬合訓練集並作出訓練集的預測

regresor = LinearRegression()
regresor.fit(X_train,Y_train)
#根據模型得出的對應訓練集的預測Y值
predict = regresor.predict(X_train.reshape(-1,1))

可視化結果

plt.figure(figsize=(10,12)) #設置畫布大小
figure = plt.subplot(211)  #將畫布分成2行1列,當前位於第一塊子畫板

plt.scatter(X_train, Y_train,color = 'red')  #描出訓練集對應點
plt.plot(X_train,predict,color='black')  #畫出預測的模型圖
plt.xlabel('YearsExperience')
plt.ylabel('Salary')
plt.title('Train set')

#將模型應用於測試集,檢驗擬合結果
plt.subplot(212)
plt.scatter(X_test, Y_test,color = 'red')
plt.plot(X_train,predict,color='black')
plt.xlabel('YearsExperience')
plt.ylabel('Salary')
plt.title('Test set')

輸出:
圖像

#模型評估
from sklearn.metrics import r2_score
print('r2_score : ' + str(r2_score(Y_test,predict)))

輸出:

r2_score : 0.9740993407213511 #R²分數,確定係數。最佳分數爲1.0,可以爲負數(因爲模型可能會更糟)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章