線性回歸模型使用 Demo版

2022-07-26 13:30:13 字數 3339 閱讀 7320

e為誤差服從均值為

0的正態分佈。

裝置監測值隨著時間序列變化的趨勢,按照上面的解釋,我們要找到y和

x,才能得到回歸的方程。很清楚,

y代表著裝置監測值,

x代表著時間序列。按照線性回歸的話。可得到方程為:

y

= at + b

y為裝置監測值的**值,t相當於時間序列。

我們的目標就是求出a和b的值,畫出**值關於時間序列的線,就能夠得到**值相對於時間的趨勢。問題時**值肯定會出現誤差,那麼如何體現誤差呢?

同過上述方程式。我們能得到某個時間點的**值,通過資料庫存的資料我們能夠得到實際值。那麼,我們假設在某個t時間點,**值為

y,實際值為y。那麼我們能得到殘差為

:y-y。

如果在理想狀態下,我們取無數個時間節點,我們就能得到這些節點的時間殘差集合,然後我們取平均,得到殘差均值ε。公式為:

圖1.1

殘差均值ε就能體現誤差的大小,ε越趨向於0

,**越精準。

想要更加準確我們可以通過以下方法進行誤差計算,當然會比較複雜:

圖 1.2

得出c和

p就可以通過下表得出**模型的精度等級:

圖1.3

import

time

from sklearn import

datasets, linear_model, discriminant_analysis

import

numpy as np

import

matplotlib.pyplot as plt

import

pymssql

defconn():

connect = pymssql.connect('

ip', '

sa', '

******

', '

test

') #

伺服器名,賬戶,密碼,資料庫名

ifconnect:

print("

connect successfully!!")

return

connect

defgetarry():

connect =conn()

cursor = connect.cursor() #

建立乙個游標物件,python裡的sql語句都要通過cursor來執行

sql = "

select * from * where * = '**'

"cursor.execute(sql)

#執行sql語句

row = cursor.fetchone() #

讀取查詢結果,

factor_list =

target_list =

while

row:

factor_list_ele =

target_list_ele =

"%y-%m-%d %h:%m:%s

")))) #

將時間戳存進去

row =cursor.fetchone()

return

factor_list,target_list

defload_data():

diabetes = getarry() #

匯入資料

diabetes_x_train = diabetes[0][:-75] #

取39400個樣本作為訓練樣本

diabetes_x_test = diabetes[0][-75:] #

後75個作為測試樣本

diabetes_y_train = diabetes[1][:-75] #

同理 diabetes_y_test = diabetes[1][-75:]

return

diabetes_x_train, diabetes_y_train, diabetes_x_test, diabetes_y_test

def test_linearregrssion(*data):

data =load_data()

regr =linear_model.linearregression()

regr.fit(data[0], data[1]) #

利用訓練樣本進行訓練

plt.scatter(data[2], data[3], c='

red') #

將測試樣本集畫出來

plt.plot(data[2], regr.predict(data[2]), color='

blue

', linewidth=2)

print('

係數:%s,截距:%.2f

' %(regr.coef_, regr.intercept_))

print("

平均方差值:%.2f

" % np.mean((regr.predict(data[2]) - data[3]) ** 2)) #

均方誤差

print('

得分:%.2f

' % regr.score(data[2], data[3])) #

得分,值越接近1,效果越好,也可為負數,訓練效果很差的情況下

plt.grid()

plt.show()

test_linearregrssion()

語言:python

模組介紹:numpy--矩陣計算模組,sklearn--機器學習模組,matplotlib--繪圖模組

資料量:39475 39400作為訓練資料

75 作為測試資料

趨勢圖:

結果:係數:[[1.55634231e-09]],截距:0.38

平均方差值:0.58

得分:-0.01

得分越趨近於1,**越精準。平均方差值越趨近於

0,**越精準。

心得體會:估計還得換個模型繼續看看吧,這個失敗了。

圖1.1  圖

1.2  

圖1.3 來自:《煤礦災害風險預警的方法及模型》--黃竟文

線性回歸模型 線性回歸模型

回歸的思想和分類有所不一樣,分類輸出的結果為離散的值,回歸輸出的是乙個連續型的值。線性回歸的思想就是試圖找到乙個多元的線性函式 當輸入一組特徵 也就是變數x 的時候,模型輸出乙個 值y h x 我們要求這個 值盡可能的準確,那麼怎麼樣才能做到盡可能準確呢?其中 表示實際值,表示 值 其中 表示實際值...

線性回歸模型

基本結構 y w t x by w t cdot x b y wt x b資料集 通常收集一系列的真實資料,如果多棟房屋的真實 和他們對應的面積和房齡。我們希望在資料集上尋找模型引數來使得 和真實 誤差最小。該資料集被稱為訓練資料集,每個房屋被稱為乙個樣本,真實的售出 叫做標籤,用來 標籤的因素叫做...

線性回歸模型 線性回歸 vs 結構方程模型

對線性回歸和結構方程模型進行簡單的刨析比較,拋開統計學方面的理論,盡量說得通俗易懂些。線性回歸 regression 與結構方程模型 structural equation modeling 是用來驗證變數間的因果關係時,最經常使用的方法。本文比較下兩者的區別,拋開具體統計學方面的理論,盡量說得通俗...