python - decisiontreeclassifier - adaboostclassifier
Error al usar ExtraTreesClassifier en scikit-learn (3)
y debería ser una matriz de enteros en lugar de flotantes. Cada entero debe representar alguna clase.
Estoy tratando de usar ExtraTreesClassifier en scikit-learn en mis datos. Tengo dos matrices numpy X e y. X es de dimensión (10000,51) e y es (10000,). Para asegurarme de que están en formato numpy array, uso
X = numpy.array(X, dtype=np.float32)
print numpy.asarray(X,dtype=np.float32) is X
y = numpy.array(y, dtype=np.float32)
print numpy.asarray(y,dtype=np.float32) is y`
y obtengo TRUE
para ambos. Luego defino mi modelo como:
clf = ExtraTreesClassifier(n_estimators=10, max_depth=None, min_samples_split=1, random_state=0, n_jobs = -1)`
Y cuando quiero entrenar a mi modelo usando
clf = clf.fit(X, y)`
Obtuve el siguiente error:
File "CFD_scikit_learn.py", line 169, in <module>
clf = Xtra_Trees(my_var)
File "CFD_scikit_learn.py", line 140, in Xtra_Trees
clf = clf.fit(X, y)
File "/user/leuven/308/vsc30879/.local/lib/python2.7/site-packages/sklearn/ensemble/forest.py", line 235, in fit
y, expanded_class_weight = self._validate_y_class_weight(y)
File "/user/leuven/308/vsc30879/.local/lib/python2.7/site-packages/sklearn/ensemble/forest.py", line 421, in _validate_y_class_weight
check_classification_targets(y)
File "/user/leuven/308/vsc30879/.local/lib/python2.7/site-packages/sklearn/utils/multiclass.py", line 173, in check_classification_targets
raise ValueError("Unknown label type: %r" % y)
ValueError: Unknown label type: array([[ 2.09895 ],
[ 1.658568],
[ 1.242831],
...,
[ 1.743349],
[ 1.765763],
[ 1.824112]])
Si alguien sabe cómo resolver este problema, se lo agradeceré si me lo hace saber.
Los clasificadores necesitan etiquetas enteras .
O necesita convertirlos en enteros (por ejemplo, bin), o utilizar un modelo de regresión .
Si crees que puedes numpy.digitize
las carrozas en clases sensatas, numpy.digitize
podría ser útil. O podrías binarizarlos .
La otra forma de binarizarlo
X = numpy.array(X, dtype=''|Sx'')
donde x indica el número de símbolos necesarios para representar el número de su flotador.