2

私は、金曜日の午後9時と月曜日の午前0時の間に、常に情報が欠落しているデータフレームを持っています。私はそう月曜日まで金曜日は考慮されませんこれを扱うことができるか疑問に思う機械学習で欠損データを処理する方法は?

    date timestamp liters next_liters 
... 
3442 2017-02-03 19:00:00 1486148400 0.86261  0.86354 
3443 2017-02-03 20:00:00 1486152000 0.86354  0.86356 
3444 2017-02-03 21:00:00 1486155600 0.86356  1.86330 
3445 2017-02-06 00:00:00 1486339200 1.86330  1.86305 
3446 2017-02-06 01:00:00 1486342800 1.86305  1.86321 
3447 2017-02-06 02:00:00 1486346400 1.86321  1.86352 
3448 2017-02-06 03:00:00 1486350000 1.86352  1.86311 
3449 2017-02-06 04:00:00 1486353600 1.86311  1.86271 
... 

:私は予測トラフ線形回帰アルゴリズムを作るために、このデータを使用していますので、このジャンプは私の予測をアップgumpsアルゴリズムによってデータを処理するとき

私はこれらの値をNaNに変換しますが、Sklearnはこの種の情報を許可していません。

これは私の現在のコードです:私たちは、その後、機能に建てられたパンダと平日を取得し、そこから新しい列を作り、「土曜日」と「日曜日」を除外するためにDFをフィルタリングし、できる

df = df[['date', 'epoch', 'liters']] 
df['next_liters'] = df['liters'].shift(-1) 

df.dropna(inplace=True) 

X = np.array(df.drop(['next_liters'], 1)) 
X = preprocessing.scale(X) 

y = np.array(df['next_liters']) 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) 

clf = LinearRegression(fit_intercept=True, n_jobs=-1) 
clf.fit(X_train, y_train) 

print ("LinearRegression (" + str(clf.score(X_test, y_test)) + ")") 
print (clf.predict(X_test)) 
+0

プロジェクト場合の結果がどのように見えるかを参照してください。最後の値と最初の値の間の線。これは、多くの機械学習システムで機能するテクニックです。それが近づかないと(あなたが期待できる最高)、ラインのスケールを調整してみるか、または曲線を試してみてください。 – Mike

答えて

0

金曜日に20:59:59を超える日付を捨てるためにもう一度フィルターをかけます。

これはもちろんMLとは関係ありませんが、パンダのインデックス作成にすぎません。

df['weekday'] = df['date'].dt.dayofweek 
df = df[(df['date'] <5)] 

ここでは、金曜日(平日= 4)の21:00:00以降にフィルタリングする必要があります。 (私はきれいな方法ががあります確信している、エレガントではないが、私は再び新しい列を作成する必要があります!)私たちは、タイムスタンプのうちの時間をつかんでこれを行うことができますつまり

def hr_func(ts): 
    return ts.hour 

df['hour'] = df['date'].apply(hr_func) 

df = df[(df['weekday'] !=4) | (df['hour'] <21) 
df.head() 

を、その場合は金曜日ではなく、それを保持してください。金曜日であるが午後9時前には、それを保管してください。

これはうまくいくはずです。

http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing

"月曜日= 0、日曜日= 6と曜日" から: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DatetimeIndex.weekday.html

Get weekday/day-of-week for Datetime column of DataFrame

+0

ありがとうございました!今私はそれを選択する方法を知っていますが、アルゴリズムを考慮に入れないようにデータをどのように扱うことができますか? – harrison4

+0

ああそうです。私は元の質問を誤解したと思う。私はあなたが土曜日、日曜日、そして午後9時の金曜日の後にフィルターをかける方法を望んだので、それを読んでいましたが、むしろ、線形回帰で扱われる欠けている時間のための道を持っていたいと思います。私は不幸にも答えはありません。 – Dylan