by28777換哪了 by28777( 二 )


文章插圖
其中 , n表示特征數目 , 表示每個訓練樣本的第i個特種值 , 當只有一個因變量x時 , 稱為一元線性回歸 , 類似于;而當多個因變量時 , 成為多元線性回歸 。我們的目的是使最小化 , 從而更好的將樣本數據集進行擬合 , 更好地預測新的數據 。
多項式回歸或邏輯回歸相關知識將在后面介紹 。
二.線性回歸分析線性回歸是數據挖掘中基礎的算法之一 , 其核心思想是求解一組因變量和自變量之間的方程 , 得到回歸函數 , 同時誤差項通常使用最小二乘法進行計算 。在本書常用的Sklaern機器學習包中將調用Linear_model子類的LinearRegression類進行線性回歸模型計算 。
1.LinearRegressionLinearRegression回歸模型在Sklearn.linear_model子類下 , 主要是調用fit(x,y)函數來訓練模型 , 其中x為數據的屬性 , y為所屬類型 。sklearn中引用回歸模型的代碼如下:
from sklearn import linear_model #導入線性模型regr = linear_model.LinearRegression() #使用線性回歸print(regr)
輸出函數的構造 *** 如下:
LinearRegression(copy_X=True,fit_intercept=True,n_jobs=1,normalize=False)
其中參數說明如下:
copy_X:布爾型 , 默認為True 。是否對X復制 , 如果選擇False , 則直接對原始數據進行覆蓋 , 即經過中心化、標準化后 , 把新數據覆蓋到原數據上 。fit_intercept:布爾型 , 默認為True 。是否對訓練數據進行中心化 , 如果是True表示對輸入的訓練數據進行中心化處理 , 如果是False則輸入數據已經中心化處理 , 后面的過程不再進行中心化處理 。n_jobs:整型 , 默認為1 。計算時設置的任務個數 , 如果設置為-1表示使用所有的CPU 。該參數對于目標個數大于1且規模足夠大的問題有加速作用 。normalize:布爾型 , 默認為False 。是否對數據進行標準化處理 。LinearRegression類主要包括如下 *** :

by28777換哪了  by28777

文章插圖
fit(X,y[,n_jobs])
對訓練集X , y進行訓練 , 分析模型參數 , 填充數據集 。其中X為特征 , y為標記或類屬性 。
predict(X)
使用訓練得到的估計器或模型對輸入的X數據集進行預測 , 返回結果為預測值 。數據集X通常劃分為訓練集和測試集 。
decision_function(X)
使用訓練得到的估計器或模型對數據集X進行預測 。它與predict(X)區別在于該 *** 包含了對輸入數據的類型檢查和當前對象是否存在coef_屬性的檢查 , 更安全 。
score(X, y[,]samples_weight)
返回對于以X為samples、y為target的預測效果評分 。
get_params([deep])
獲取該估計器(Estimator)的參數 。
**set_params(params)
設置該估計器(Estimator)的參數 。
coef_
存放LinearRegression模型的回歸系數 。
intercept_
存放LinearRegression模型的回歸截距 。
現在對前面的企業成本和利潤數據集進行線性回歸實驗 。完整代碼如下:
# -*- coding: utf-8 -*-# By:Eastmount CSDN 2021-07-03from sklearn import linear_model #導入線性模型import matplotlib.pyplot as pltimport numpy as np#X表示企業成本 Y表示企業利潤X = [[400], [450], [486], [500], [510], [525], [540], [549], [558], [590], [610], [640], [680], [750], [900]]Y = [[80], [89], [92], [102], [121], [160], [180], [189], [199], [203], [247], [250], [259], [289], [356]]print('數據集X: ', X)print('數據集Y: ', Y)#回歸訓練clf = linear_model.LinearRegression()clf.fit(X, Y)#預測結果X2 = [[400], [750], [950]]Y2 = clf.predict(X2)print(Y2)res = clf.predict(np.array([1200]).reshape(-1, 1))[0]print('預測成本1200元的利潤:$%.1f' % res)#繪制線性回歸圖形plt.plot(X, Y, 'ks') #繪制訓練數據集散點圖plt.plot(X2, Y2, 'g-') #繪制預測數據集直線plt.show()
調用sklearn包中的LinearRegression()回歸函數 , fit(X,Y)載入數據集進行訓練 , 然后通過predict(X2)預測數據集X2的利潤 , 并將預測結果繪制成直線 , (X,Y)數據集繪制成散點圖 , 如圖3所示 。
by28777換哪了  by28777

文章插圖
同時調用代碼預測2017年企業成本為1200元的利潤為575.1元 。注意 , 線性模型的回歸系數會保存在coef_變量中 , 截距保存在intercept_變量中 。clf.score(X, Y) 是一個評分函數 , 返回一個小于1的得分 。評分過程的代碼如下:

推薦閱讀