如何将缺少的类别从火车添加到测试数据集?

问题描述

我的目标是将训练数据集中存在的类别和测试数据集中缺失的类别从一个复制到另一个。 我的方法是像这里一样:https://github.com/Deepthi10/Intrusion-Detection-using-Machine-Learning-on-NSL--KDD-dataset/blob/master/IDS.ipynb

不幸的是,当我尝试这些步骤时出现错误

ValueError: 传递值的形状为 (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

错误信息:ValueError:传递的值的形状是 (82332,151),索引意味着 (82332,155)

有人知道怎么解决吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)