问题描述
我正在如下使用ScikitlearnRandomForestClassifier。
from art.estimators.classification.scikitlearn import ScikitlearnRandomForestClassifier as SRFC
from sklearn.ensemble import RandomForestClassifier as RFC
model_rand_forest = SRFC(RFC(n_estimators=500,max_depth=45,criterion='entropy',random_state=32))
model_rand_forest = model_rand_forest.fit(x_train,y_train)
我遇到了以下错误。如果需要,y_train
的大小为(70540,)
,而 x_train
的大小为(70540,128)
。
error:
File "<ipython-input-18-c410427d7973>",line 1,in <module>
model_rand_forest = model_rand_forest.fit(x_train,y_train)
File "E:\Anaconda3\lib\site-packages\art\estimators\classification\classifier.py",line 71,in replacement_function
return fdict[func_name](self,*args,**kwargs)
File "E:\Anaconda3\lib\site-packages\art\estimators\classification\scikitlearn.py",line 138,in fit
y_preprocessed = np.argmax(y_preprocessed,axis=1)
File "<__array_function__ internals>",line 6,in argmax
File "E:\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py",line 1186,in argmax
return _wrapfunc(a,'argmax',axis=axis,out=out)
File "E:\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py",line 61,in _wrapfunc
return bound(*args,**kwds)
AxisError: axis 1 is out of bounds for array of dimension 1
解决方法
您必须向 scikit-learn 模型的 ART 估计器提供使用形状 (nb_samples,nb_classes) 编码的单热标签。 您可以使用此链接将您的标签置于 one-hot 格式中。 https://machinelearningmastery.com/how-to-one-hot-encode-sequence-data-in-python/