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語言:pythontime
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()
模組介紹: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 是用來驗證變數間的因果關係時,最經常使用的方法。本文比較下兩者的區別,拋開具體統計學方面的理論,盡量說得通俗...