2015-12-27 96 views
5

我有以下的大熊貓據幀,稱爲main_frame的Python/Scikit學習/迴歸 - 從熊貓Dataframes到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學習和我我不確定問題是熊貓數據集,日期是索引,NaN's/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() 

現在,創建一個你的特徵和你的目標向量的numpy矩陣。鑑於你的目標變量是在第一列中,您可以使用基於整數索引如下:

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,對嗎? – abutremutante

+0

'df'只是數據框的通用術語。你可以用'main_frame'替換它。使用'iloc'(索引位置)而不是'input1'和'target_var'。 – Alexander

+0

你會介意給你的答案添加一個與X和Y一起繪製它的方法嗎? – abutremutante