2017-11-18 120 views
0

考慮YX的線性迴歸,其中(xi, yi) = (2, 7), (0, 2), (5, 14) for i = 1, 2, 3。解決方案是(a, b) = (2.395, 2.079),使用手持計算器上的迴歸函數獲得。我想用pykalman模塊計算線性擬合的斜率和截距

我想使用 pykalman模塊來計算線性擬合的斜率和截距。我越來越

ValueError: The shape of all parameters is not consistent. Please re-check their values. 

我真的很感激,如果有人能幫助我。

這裏是我的代碼:

from pykalman import KalmanFilter 
import numpy as np 

measurements = np.asarray([[7], [2], [14]]) 

initial_state_matrix = [[1], [1]] 

transition_matrix = [[1, 0], [0, 1]] 

observation_covariance_matrix = [[1, 0],[0, 1]] 

observation_matrix = [[2, 1], [0, 1], [5, 1]] 

kf1 = KalmanFilter(n_dim_state=2, n_dim_obs=6, 
        transition_matrices=transition_matrix, 
        observation_matrices=observation_matrix, 
        initial_state_mean=initial_state_matrix, 
        observation_covariance=observation_covariance_matrix) 

kf1 = kf1.em(measurements, n_iter=0) 

(smoothed_state_means, smoothed_state_covariances) = kf1.smooth(measurements) 

print smoothed_state_means 
+0

請報告整個錯誤消息, – gboffi

+0

回溯(最近通話最後一個): 文件 「quicktest3.py」 17行,在 initial_state_mean = initial_state_matrix,observation_covariance = observation_covariance1) 文件「在/ usr /本地/lib/python2.7/site-packages/pykalman/standard.py「,第1027行,在__init__中 n_dim_state 文件」/usr/local/lib/python2.7/site-packages/pykalman/standard.py「,第78行,在_determine_dimensionality 「請重新檢查它們的值。」 ValueError:所有參數的形狀不一致。請重新檢查它們的值。 –

回答

0

下面的代碼片段:

from pykalman import KalmanFilter 

import numpy as np 

kf = KalmanFilter() 

(filtered_state_means, filtered_state_covariances) = kf.filter_update(filtered_state_mean = [[0],[0]], filtered_state_covariance = [[90000,0],[0,90000]], observation=np.asarray([[7],[2],[14]]),transition_matrix = np.asarray([[1,0],[0,1]]), observation_matrix = np.asarray([[2,1],[0,1],[5,1]]), observation_covariance = np.asarray([[.1622,0,0],[0,.1622,0],[0,0,.1622]])) 

print filtered_state_means 

print filtered_state_covariances 

for x in range(0, 1000): 

    (filtered_state_means, filtered_state_covariances) = kf.filter_update(filtered_state_mean = filtered_state_means, filtered_state_covariance = filtered_state_covariances, observation=np.asarray([[7],[2],[14]]),transition_matrix = np.asarray([[1,0],[0,1]]), observation_matrix = np.asarray([[2,1],[0,1],[5,1]]), observation_covariance = np.asarray([[.1622,0,0],[0,.1622,0],[0,0,.1622]])) 

print filtered_state_means 

print filtered_state_covariances 

filtered_state_covariance選擇大,因爲我們根本不知道我們的filter_state_mean最初和意見都只是[Y1 ],[Y2],[Y3]。 Observation_matrix是[[x1,1],[x2,1],[x3,1]],因此將第二個元素作爲我們的截距。想象一下,像這樣y1 = m * x1 + c其中m和c分別是斜率和截距。在我們的例子中,filtered_state_mean = [[m],[c]]。請注意,新的filtered_state_means用作新的kf.filter_update()(在迭代循環中)的filtered_state_mean,因爲我們現在知道平均值位於filtered_state_covariance = filtered_state_covariances的位置。迭代1000次,將平均值轉化爲實際價值。如果您想了解的功能/方法使用的鏈接是:https://pykalman.github.io/

如果系統狀態不測量(也稱爲空洞的運動步驟)之間切換,然後transition_matrixφ=一

我不知道我現在要說的是否是真的。所以請糾正我,如果我錯了

observation_covariance矩陣必須是大小m x m其中m是觀察的數量(在我們的情況下= 3)。對角元素只是方差我相信方差_y1,方差_y2和方差_y3和非對角元素是協方差。例如,矩陣中的元素(1,2)是y1的標準偏差,(COMMA NOT PRODUCT)的標準偏差爲y2,等於元素(2,1)。對其他元素也是如此。有人可以幫助我在x1,x2和x3中包含不確定性。我的意思是你如何在上面的代碼中實現x的不確定性。

+0

你回答了你自己的問題嗎?問題仍然存在嗎? – Anton

相關問題