0

Also ich versuche, Daten über die Aktien, die engen Preis und gleitenden Durchschnitte 50, 100, 200. Ich habe eine andere Array, die dann das Etikett ist, das kaufen oder verkaufen ist. Es wurde zusammen mit allen anderen Arrays auf einem Datenrahmen ausgearbeitet. Aber das Problem ist, wenn ich versuche, die classifer zu trainieren, es gibt mir eine Fehlermeldung:3D-Array-Fehler in 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,]]) mit mehr Werte in es Dies ist mein Code:

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

Mögliche Duplikat von [Sklearn Fehler, Array mit 4 dim. Estimator <= 2] (http://stackoverflow.com/questions/37361116/sklearn-error-array-with-4-dim-estimator-2) – piRSquared

Antwort

1

Das Problem ist, dass Sie Erstellen einer Variablen X das ist eine Liste von 2-d-Arrays. Das bedeutet automatisch eine 3. Dimension.

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

Dies muss verkettet werden, um 2 Dimensionen zu erhalten.

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

Auch ich vermute, dass, sobald das Problem behoben ist Sie haben eine andere mit:

y = [buy_sell] 

Es gibt keinen Grund dies in [] zu wickeln. Dies wird das gleiche dreidimensionale Problem verursachen. Setzen Sie einfach dieses:

y = buy_sell 
+0

Ich bekomme diesen Fehler Traceback (letzter Aufruf zuletzt): Datei " C: /Users/Samuel/PycharmProjects/untitled3/777.py ", Zeile 41, in clf.fit (x, y) Datei" C: \ Benutzer \ Samuel \ Anaconda3 \ lib \ site-packages \ sklearn \ tree \ tree.py ", Zeile 177, passt check_classification_targets (y) Datei" C: \ Benutzer \ Samuel \ Anaconda3 \ lib \ site-packages \ sklearn \ utils \ multiclass.py ", Zeile 173, in check_classification_targets raise ValueError ("Unbekannter Etikettentyp:% r"% y) ValueError: Unbekannter Etikettentyp: Array ([[7.87401353e + 02, 7.93261381e + 02, 7.87071324e + 02,] Prozess mit Beendigungscode abgeschlossen 1 – sam202252012

+0

mit 0.17.1 Version von Scikit lernen – sam202252012

+0

Dinge ausgearbeitet, anscheinend brauche ich einen Regressor nicht ein Klassifikator – sam202252012