2017-06-22 2 views
0

機械学習には新しく、パンダ、クアンダルを使ってデータセットを分析するコードを実行しています。コードは正常に実行されていますが、出力も表示されますが、その2行のコードは、私は関数ceil 0.1の使用が何であるかを理解することができません、彼らが-forecast_out使用している理由は、なぜこのコードは、シフト機能を使用している?1パンダの予測アルゴリズムを理解することができません

import pandas as pd 
import quandl 
import math 

df = quandl.get('WIKI/GOOGL') 
df = df[['Adj. Open','Adj. High','Adj. Low','Adj. Close','Adj. Volume',]] 
df['HL_PCT'] = (df['Adj. High'] - df['Adj. Close'])/ df['Adj. Close']*100.0 
df['PCT_change'] = (df['Adj. Close'] - df['Adj. Open'])/df['Adj. Open'] * 
100.0 



df = df[['Adj. Close','HL_PCT','PCT_change','Adj. Volume']] 

forecast_col = 'Adj. Close' 
#filling the NAN datas 
df.fillna(-99999,inplace=True) 
// this line i am unable to understand 
forecast_out = int(math.ceil(0.02*len(df))) 
// this line i am unable to understand 
df['label'] = df[forecast_col].shift(-forecast_out) 
df.dropna(inplace=True) 
print(df.head()) 

ことを掲示していますBeacause forecast_outはいくつかの異なる値を与えています。私たちはすでにNANポジションにデータを入力していますが、なぜNANを落とすのですか?助けてください

答えて

1

多くの場合、機械学習ではデータサンプルがあり、各サンプルには機能とラベルが付いていますscikit-learnとして)。あなたの場合、各サンプルはあなたのデータフレームの行です。予測する値はforecast_colです。株データを見ているので、将来起こることを予測する必要があります。現在起こっていることを「予測」することは意味がありません(ただ観察することができます)。 forecast_outの値は、任意の値です。この場合は、事前にどの程度まで「Adj。閉じる'。

shiftメソッドは、観測値を将来の予測値と整列させて予測します。このデータフレームを使用すると、scikit-learnを使って簡単にモデルに合わせることができます。

lr = sklearn.linear_model.LinearRegression() 
lr.fit(df[['HL_PCT','PCT_change','Adj. Volume']], df[forecast_col]) 

このモデルは、今からforecast_out日起こるために何が起こっているかについて、現在の観測値から予測を行います。

+0

回答ありがとうございますが、int(math.ceil(0.02 * len(df)))の使い方は分かりませんし、shift(-forecast_out)の使い方は何ですか?私はモデルがAdjに基づいていくらかの価値を予測しようとしていることを意味しています。列ラベルで列を閉じます。なぜ彼らは0.02 * len(df)を書いていますか?それは得られません。 – Mandrek

+0

その部分は私にも意味をなさない。事前予測時間は、データセットのサイズの2%です。私はしばらく機械学習をしていて、それを見た人はいません。申し訳ありませんが、私はより多くの文脈がなくても、より多くの洞察を与えることはできないと思います。通常、それは任意の数です。例えば、20日前に予測したいとします。 –

関連する問題