Как я могу решить эту неизвестную ошибку типа метки? - PullRequest
1 голос
/ 25 мая 2019

Я работаю над выбором функции из набора данных 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 - массив пустых значений, а 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 голосов
/ 25 мая 2019

Nevermind. Кажется, переменная Y_DoS оказалась неопределенным объектом, поэтому sklearn не смог распознать его тип. Добавление

Y_DoS = Y_DoS.astype('int') 

перед тем, как шаг обучения решил проблему, и классифицировал Y_DoS как «двоичный» тип.

...