2015-12-27 17 views
5

をScikitする私は、次のパンダのデータフレームを持って、main_frameと呼ばれる:のPython/Scikit-学ぶ/回帰 - パンダのデータフレームから予測

  target_var input1 input2 input3 input4 input5 input6 
Date 
2013-09-01  13.0  NaN  NaN  NaN  NaN  NaN  NaN 
2013-10-01  13.0  NaN  NaN  NaN  NaN  NaN  NaN 
2013-11-01  12.2  NaN  NaN  NaN  NaN  NaN  NaN 
2013-12-01  10.9  NaN  NaN  NaN  NaN  NaN  NaN 
2014-01-01  11.7  0  13  42  0  0  16 
2014-02-01  12.0  13  8  58  0  0  14 
2014-03-01  12.8  13  15  100  0  0  24 
2014-04-01  13.1  0  11  50  34  0  18 
2014-05-01  12.2  12  14  56  30  71  18 
2014-06-01  11.7  13  16  43  44  0  22 
2014-07-01  11.2  0  19  45  35  0  18 
2014-08-01  11.4  12  16  37  31  0  24 
2014-09-01  10.9  14  14  47  30  56  20 
2014-10-01  10.5  15  17  54  24  56  22 
2014-11-01  10.7  12  18  60  41  63  21 
2014-12-01   9.6  12  14  42  29  53  16 
2015-01-01  10.2  10  16  37  31  0  20 
2015-02-01  10.7  11  20  39  28  0  19 
2015-03-01  10.9  10  17  75  27  87  22 
2015-04-01  10.8  14  17  73  30  43  25 
2015-05-01  10.2  10  17  55  31  52  24 

私はScikit-学び、I上のデータセットを探索する問題を抱えてきました問題がパンダのデータセットであるかどうか、インデックスとしての日付、NaN/Infs/Zeros(私は解決方法がわからない)、すべて、私が追跡できなかった何かがわかりません。

"Input"(1,2,3 ..)という名前の変数に基づいて、次のtarget_var項目を予測する簡単な回帰を構築したいと考えています。

時系列には多くのゼロとNaNがあり、最終的にはInfのものも見つかる可能性があることに注意してください。

答えて

5

Inf,-InfまたはNaNの値を持つ行を削除する必要があります(他の方法では、たとえばNaNをフィーチャの平均値で埋め込む方法があります)。

df = df.replace(to_replace=[np.Inf, -np.Inf], value=np.NaN) 
df = df.dropna() 

ここで、あなたの特徴の数列とターゲットのベクトルを作成します。ターゲット変数が最初の列にあることを考えると、以下のように、あなたは整数ベースのインデックスを使用することができます。

X = df.iloc[:, 1:].values 
y = df.iloc[:, 0].values 

は、次に作成し、モデルを当てはめる:

from sklearn.linear_model import LinearRegression 

model = LinearRegression() 
model.fit(X=X, y=y) 

今すぐあなたの見積もりを観察することができます。

>>> model.intercept_ 
12.109583092421092 

>>> model.coef_ 
array([-0.05269033, -0.17723251, 0.03627883, 0.02219596, -0.01377465, 
     0.0111017 ]) 
+0

上記の例では、X = main_frame.input1 [:、1:]。valuesとy = main_frame.target_var [:、0] .values、right? – abutremutante

+0

'df'は単にdataframeの総称です。あなたのケースでは 'main_frame'と置き換えることができます。 'input1'と' target_var'の代わりに 'iloc'(インデックス位置)を使います。 – Alexander

+0

XとYを一緒にプロットする方法を回答に追加してもよろしいですか? – abutremutante

関連する問題