在 scikit-learn 中使用 ExtraTreesClassifier 时出错
Error using ExtraTreesClassifier in scikit-learn
我正在尝试对我的数据使用 scikit-learn 中的 ExtraTreesClassifier。我有两个 numpy 数组 X 和 y。 X 的维度为 (10000,51),y 的维度为 (10000,)。为了确保它们是 numpy 数组格式,我使用
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`
我得到 TRUE
两个。然后我将我的模型定义为:
clf = ExtraTreesClassifier(n_estimators=10, max_depth=None, min_samples_split=1, random_state=0, n_jobs = -1)`
当我想使用
训练我的模型时
clf = clf.fit(X, y)`
我收到以下错误:
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]])
如果有人知道如何解决这个问题,请告诉我,不胜感激。
您要么需要将它们转换为整数(例如将它们装箱),要么使用 a regression-type model。
如果您认为可以将浮点数合并为合理的 类、numpy.digitize
might help. Or you could binarize them。
y 应该是整数数组而不是浮点数。每个整数应该代表一些 class.
另一种二值化方法
X = numpy.array(X, dtype='|Sx')
其中 x 表示表示浮点数所需的符号数。
我正在尝试对我的数据使用 scikit-learn 中的 ExtraTreesClassifier。我有两个 numpy 数组 X 和 y。 X 的维度为 (10000,51),y 的维度为 (10000,)。为了确保它们是 numpy 数组格式,我使用
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`
我得到 TRUE
两个。然后我将我的模型定义为:
clf = ExtraTreesClassifier(n_estimators=10, max_depth=None, min_samples_split=1, random_state=0, n_jobs = -1)`
当我想使用
训练我的模型时clf = clf.fit(X, y)`
我收到以下错误:
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]])
如果有人知道如何解决这个问题,请告诉我,不胜感激。
您要么需要将它们转换为整数(例如将它们装箱),要么使用 a regression-type model。
如果您认为可以将浮点数合并为合理的 类、numpy.digitize
might help. Or you could binarize them。
y 应该是整数数组而不是浮点数。每个整数应该代表一些 class.
另一种二值化方法
X = numpy.array(X, dtype='|Sx')
其中 x 表示表示浮点数所需的符号数。