0

株価、終値、移動平均50,100,200に関するデータを取得しようとしています。購入または売却するラベルが別の配列になっています。これは、他のすべての配列と一緒にデータフレーム上で実行されました。しかし、問題は、私はclassiferを養成しようとすると、それは私にエラーを与えている:3d Sklearnの配列エラー

ValueError: Found array with dim 3. Estimator expected <= 2. 

When I concatenate the array, it gives me an error, ValueError: Unknown label type: array([[7.87401353,]])その中に複数の値 とこれは私のコードです:

from sklearn import tree 
import pandas as pd 
import pandas_datareader.data as web 
import numpy as np 

df = web.DataReader('goog', 'yahoo', start='2012-5-1', end='2016-5-20') 

close_price = df[['Close']] 

ma_50 = (pd.rolling_mean(close_price, window=50)) 
ma_100 = (pd.rolling_mean(close_price, window=100)) 
ma_200 = (pd.rolling_mean(close_price, window=200)) 

#adding buys and sell based on the values 
df['B/S']= (df['Close'].diff() < 0).astype(int) 
close_buy = df[['Close']+['B/S']] 
closing = df[['Close']].as_matrix() 
buy_sell = df[['B/S']] 


close_buy = pd.DataFrame.dropna(close_buy, 0, 'any') 
ma_50 = pd.DataFrame.dropna(ma_50, 0, 'any') 
ma_100 = pd.DataFrame.dropna(ma_100, 0, 'any') 
ma_200 = pd.DataFrame.dropna(ma_200, 0, 'any') 

close_buy = (df.loc['2013-02-15':'2016-05-21']).as_matrix() 
ma_50 = (df.loc['2013-02-15':'2016-05-21']).as_matrix() 
ma_100 = (df.loc['2013-02-15':'2016-05-21']).as_matrix() 
ma_200 = (df.loc['2013-02-15':'2016-05-21']).as_matrix() 
buy_sell = (df.loc['2013-02-15':'2016-05-21']).as_matrix() # Fixed 

list(close_buy) 

clf = tree.DecisionTreeClassifier() 
X = list([close_buy,ma_50,ma_100,ma_200]) 
y = [buy_sell] 
+0

[Sklearnエラー、配列4 dimとの可能な複製。見積もり<= 2](http://stackoverflow.com/questions/37361116/sklearn-error-ar-with-4-dim-estimator-2) – piRSquared

答えて

1

問題は、あなたがしていることです2次元配列のリストである変数Xを作成します。それは自動的に3次元を意味します。

# offending line 
X = list([close_buy,ma_50,ma_100,ma_200]) 

これは、2次元を維持するために連結する必要があります。 []でこれをラップする理由はありません

y = [buy_sell] 

# corrected 
X = np.concatenate([close_buy,ma_50,ma_100,ma_200], axis=1) 

はまた、私はこの問題が修正されればあなたが別のものを持っているだろうと思われます。これは同じ3次元問題を引き起こす。ちょうどこれを置く:

y = buy_sell 
+0

このエラーが発生しましたトレースバック(最新の最後の呼び出し): ファイル " C:\ Users \ Samuel \ Anaconda3 \ lib \ site-packages \ sklearn \ C:/Users/Samuel/PicarmProjects/untitled3/777.py "、行41、 clf.fit(x、y) ファイル: check_classification_targets(y) ファイルcheck_classification_targetsの "C:¥Users¥Samuel¥Anaconda3¥lib¥site-packages¥sklearn¥utils¥mult​​iclass.py"ファイル、 のツリー\ tree.py "行177 ValueError( "不明なラベルの種類:%r"%y) ValueError:不明なラベルの種類:配列([[7.87401353e + 02,7.93261381e + 02,7.87071324e + 02] 7.87071324e + 02 プロセスは終了コードで終了しました1 – sam202252012

+0

scikitの0.17.1バージョンを使用してください – sam202252012

+0

物事が働いた、明らかに私はリグレッサーではなく、 – sam202252012