Как я могу добавить отсутствующие категории из поезда в тестовый набор данных?

#python #jupyter-notebook #data-science #data-mining

Вопрос:

моя цель-скопировать категории, которые существуют в учебном наборе данных и отсутствуют в тестовом наборе данных, из одной в другую. Мой подход состоял в том, чтобы сделать вот так: https://github.com/Deepthi10/Intrusion-Detection-using-Machine-Learning-on-NSL—KDD-dataset/blob/master/IDS.ipynb

К сожалению, когда я пытаюсь выполнить эти шаги, возникает ошибка:

Ошибка значения: Форма переданных значений (82332, 151), индексы подразумевают (82332, 155)

Мой подход: После прочтения набора тестовых и обучающих данных я написал следующий код:

 # protocol type
unique_protocol=sorted(df.proto.unique())
string1 = 'proto_'
unique_protocol2=[string1   x for x in unique_protocol]
# service
unique_service=sorted(df.service.unique())
string2 = 'service_'
unique_service2=[string2   x for x in unique_service]
# flag
unique_flag=sorted(df.state.unique())
string3 = 'state_'
unique_flag2=[string3   x for x in unique_flag]
# put together
dumcols=unique_protocol2   unique_service2   unique_flag2
print(dumcols)

#do same for test set
unique_service_test=sorted(df2.service.unique())
unique_service2_test=[string2   x for x in unique_service_test]
testdumcols=unique_protocol2   unique_service2_test   unique_flag2


trainservice=df['state'].tolist()
testservice= df2['state'].tolist()
difference=list(set(trainservice) - set(testservice))
string = 'state_'
difference=[string   x for x in difference]
difference

dataset_test_cat_data = pd.DataFrame(df,columns=testdumcols)

for col in difference:
    dataset_test_cat_data[col] = 0

dataset_test_cat_data.shape
 

Сообщение об ошибке: Ошибка значения: Форма переданных значений (82332, 151), индексы подразумевают (82332, 155)

Кто-нибудь знает, как это исправить?