小编Xav*_*ier的帖子

获取 ValueError: y 使用 scikit learn 的 LabelEncoder 时包含新标签

我有一个系列,如:

df['ID'] = ['ABC123', 'IDF345', ...]
Run Code Online (Sandbox Code Playgroud)

我正在使用 scikitLabelEncoder将其转换为要输入到RandomForestClassifier.

在培训期间,我的做法如下:

le_id = LabelEncoder()
df['ID'] = le_id.fit_transform(df.ID) 
Run Code Online (Sandbox Code Playgroud)

但是,现在为了测试/预测,当我传入新数据时,我想根据le_id即从该数据转换“ID” ,如果存在相同的值,则根据上述标签编码器对其进行转换,否则分配一个新的数字价值。

在测试文件中,我的操作如下:

new_df['ID'] = le_dpid.transform(new_df.ID)
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误: ValueError: y contains new labels

我该如何解决??谢谢!

更新:

所以我的任务是使用以下(例如)作为训练数据并预测'High', 'Mod', 'Low'新 BankNum、ID 组合的值。模型应该学习从训练数据集中给出“高”和“低”的特征。例如,当存在多个具有相同 BankNum 和不同 ID 的条目时,会在“High”下方给出。

df = 

BankNum   | ID    | Labels

0098-7772 | AB123 | High
0098-7772 | ED245 | High
0098-7772 | ED343 | High
0870-7771 | ED200 | Mod
0870-7771 | ED100 | Mod
0098-2123 | …
Run Code Online (Sandbox Code Playgroud)

python encoding machine-learning scikit-learn categorical-data

9
推荐指数
1
解决办法
4万
查看次数