如何解决这个未知的标签类型错误?

时间:2019-05-25 09:33:00

标签: python-3.x scikit-learn google-colaboratory feature-selection

我正在从NSL-KDD数据集中选择特征。预处理后,我的X-DoS的数据类型如下:

type_of_target(X_newDoS)
'continuous-multioutput'

和Y_DoS为

type_of_target(Y_DoS)
'unkonwn'

我将特征选择部分运行为:

from sklearn.feature_selection import RFE
from sklearn.ensemble import RandomForestClassifier

clf =RandomForestClassifier( n_jobs = 2)

rfe = RFE(clf, n_features_to_select=1)
rfe.fit(X_newDoS, Y_DoS)

错误消息:

ValueError                                Traceback (most recent call 
last)
<ipython-input-31-6c22f9cc2bba> in <module>()
     12 rfe = RFE(clf, n_features_to_select=1)
---> 13 rfe.fit(X_newDoS, Y_DoS)
     14

4 frames
/usr/local/lib/python3.6/dist-packages/sklearn/utils/multiclass.py in 
check_classification_targets(y)
    167     if y_type not in ['binary', 'multiclass', 'multiclass- 
multioutput',
    168                       'multilabel-indicator', 'multilabel- 
sequences']:
--> 169         raise ValueError("Unknown label type: %r" % y_type)
    170  

ValueError: Unknown label type: 'unknown'

X_newDoS是一个numpy数组,Y_DoS是一个维数组(125972,2)。单击multiclass.py文件,我发现列表中没有“未知”类型。我尝试使用以下方法将Y_DoS数组转换为numpy数组:

Y_DoS = np.array(Y_DoS)

仍然是未知数据类型,并且multiclass.py文件无法识别。我可以通过什么方式解决此问题?如何使Y_DoS变量成为multiclass.py文件可识别的另一种类型,而又不丢失其内容和结构? 作为参考,我使用了此链接中的代码,并完成了相同的预处理步骤。 https://github.com/CynthiaKoopman/Network-Intrusion-Detection/blob/master/DecisionTree_IDS.ipynb

我对机器学习非常陌生。该程序与numpy 1.11.3,sklearn 0.18.1和pandas 1.19.2配合良好。当使用当前的预装库版本的colab(numpy 0.24.2,sklearn 1.16.3,pandas 0.21.1)时,会引发上述错误。

1 个答案:

答案 0 :(得分:0)

似乎Y_DoS变量恰好是未定义的对象,因此sklearn无法识别其类型。添加

Y_DoS = Y_DoS.astype('int') 

在学习步骤解决问题之前,将Y_DoS归类为“二进制”类型。

相关问题