タイトルの通りですが,要素の中身(nd.array?)をlistなどに変更したいです.
プログラムの意図としては,あるデータに対してカルマンフィルタを適用するライブラリ,[Kalmanfilter]を用いてカルマンフィルター(filtered)化とスムース(smoothed)化をしました.
適用したグラフは出力できたのですが,信用区間(95%)をグラフで出力したいので,フィルター化で出力されたnd.array?の配列をリスト化などしたいと考えています.
中身を見て頂いた方が早いと思うので,早速ソースコードと要素をprintした結果をお見せ致します.
最初はpandasデータをリストに変換します.
Python3
1y = pd.Series(df_~~~.~~~.values) 2print(y) 3observations = y.tolist()#pdをlistに変換 4print(observations)
out
1#結果 2 3#y: 40 25.88 51 25.88 62 25.88 73 26.37 84 25.88 9 ... 101436 25.88 111437 25.88 121438 25.88 131439 25.88 141440 25.88 15Length: 1441, dtype: float64 16 17#observations: 18[25.88, 25.88, 25.88, 26.37, 19・・・ 20 25.88, 25.88, 25.88, 25.88, 25.88, 25.88, 25.88, 25.88, 26.37, 25.88, 25.88, 25.88, 25.88, 25.88, 25.88, 25.88, 25.88, 25.88, 25.88, 25.88, 26.37, 25.88, 25.88, 25.88, 25.88, 25.88]
次に,このリストに対してカルマンフィルターを適用し,フィルター化します.
フィルター化した時の出力結果の配列を[out]に示します.
Python3
1kf = KalmanFilter(transition_matrices=np.array([[1, 1], [0, 1]]), 2 transition_covariance=0.0000001*np.eye(2)) 3 4smoothed_states_pred = kf.em(observations).smooth(observations)[0] 5filtered_states_pred = kf.em(observations).filter(observations)[0] 6print(filtered_states_pred)
out
1[[ 2.60376661e+01 -1.65511774e-03] 2 [ 2.60353297e+01 -1.66246550e-03] 3 [ 2.60325095e+01 -1.67924621e-03] 4 ... 5 [ 2.59074212e+01 -2.42859148e-03] 6 [ 2.59031436e+01 -2.46371053e-03] 7 [ 2.58991499e+01 -2.49276937e-03]]
この二次元配列?をもとの扱いやすい配列(リストなど)に変換したいです.
[~~,~~,~~,]
試したこととしては,numpyでそのままリスト化しようとしましたが,中の配列が取れず困っています.
Python
1filter_df = np.array(filtered_states_pred.values.flatten())
out
1[[26.037666140460175, -0.0016551177424565181], [26.035329693820763, -0.00166246550103721], [26.03250951997295, -0.0016792462141711488], [26.034479896627285, -0.0016208213401725316], ・・・]
これを一次にリスト化する方法,もしくはこの配列のままseabornなどでグラフ上に95%の信用区間を領域で図示する方法をご教授,ご助言いただきたいです.
よろしくお願い致します.
回答1件
あなたの回答
tips
プレビュー