Ich versuche, einen Entscheidungsbaum an Matrizen von Features und Labels anzupassen. Hier ist mein Code:ValueError: Festlegen eines Array-Elements mit einer Sequenz mit Entscheidungsbaum, in dem alle Zeilen die gleichen Elemente haben?
print FEATURES_DATA[0]
print ""
print TARGET[0]
print ""
print np.unique(list(map(len, FEATURES_DATA[0])))
die folgende Ausgabe gibt:
[ array([[3, 3, 3, ..., 7, 7, 7],
[3, 3, 3, ..., 7, 7, 7],
[3, 3, 3, ..., 7, 7, 7],
...,
[2, 2, 2, ..., 6, 6, 6],
[2, 2, 2, ..., 6, 6, 6],
[2, 2, 2, ..., 6, 6, 6]], dtype=uint8)]
[ array([[31],
[31],
[31],
...,
[22],
[22],
[22]], dtype=uint8)]
[463511]
Die Matrix enthält tatsächlich 463.511 Proben.
Danach laufe ich den folgenden Block:
from sklearn.tree import DecisionTreeClassifier
for i in xrange(5):
Xtrain=FEATURES_DATA[i]
Ytrain=TARGET[i]
clf=DecisionTreeClassifier()
clf.fit(Xtrain,Ytrain)
, die mir die folgende Störung gibt:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-4-3d8b2a7a3e5f> in <module>()
4 Ytrain=TARGET[i]
5 clf=DecisionTreeClassifier()
----> 6 clf.fit(Xtrain,Ytrain)
C:\Users\singhg2\AppData\Local\Enthought\Canopy\User\lib\site-packages\sklearn\tree\tree.pyc in fit(self, X, y, sample_weight, check_input, X_idx_sorted)
152 random_state = check_random_state(self.random_state)
153 if check_input:
--> 154 X = check_array(X, dtype=DTYPE, accept_sparse="csc")
155 if issparse(X):
156 X.sort_indices()
C:\Users\singhg2\AppData\Local\Enthought\Canopy\User\lib\site-packages\sklearn\utils\validation.pyc in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
371 force_all_finite)
372 else:
--> 373 array = np.array(array, dtype=dtype, order=order, copy=copy)
374
375 if ensure_2d:
ValueError: setting an array element with a sequence.
ich andere Beiträge auf SO gesucht und gefunden, dass die meisten Antworten waren, dass die Matrizen waren nicht vollständig Zahlen, oder das Array unterscheidet sich in der Länge über Samples. Aber das ist bei meinem Problem nicht der Fall?
Irgendwelche Hilfe?
Das in der Tat das Problem löst. Aber wie wäre es mit der Größe des Trainingssatzes? z.B. etwas in dieser Zeile: Xtrain = Xtrain.append (FEATURES_DATA [i] [0]) – GKS
Wenn Sie einfach die Größe Xtrain verdoppeln wollen, indem Sie es mit Duplikaten füllen, können Sie 'Xtrain = numpy.concatenate ((Xtrain, Xtrain))' 'machen –
Nicht die Größe zu verdoppeln, sondern ich möchte Xtrain mit jeder Iteration wachsen. Für die erste Iteration sollte es FEATURES_DATA [i] [0] sein, aber für die zweite Iteration sollte es FEATURES_DATA [i] [0] und FEATURES_DATA [i] [1] verkettet sein. Ich habe versucht, Verkettung, und es gab mir einen Fehler "nur Länge-1-Arrays können in Python-Skalare " – GKS