Obtenir ValueError: y contient de nouvelles étiquettes lors de l'utilisation de scikit learn LabelEncoder

J'ai une série comme:

df['ID'] = ['ABC123', 'IDF345', ...]

Je suis en utilisant scikit de LabelEncoder pour le convertir en valeurs numériques sont alimentés dans le RandomForestClassifier.

Au cours de la formation, je suis en train de faire comme suit:

le_id = LabelEncoder()
df['ID'] = le_id.fit_transform(df.ID) 

Mais, maintenant à l'essai/de prédiction, lorsque je passe dans de nouvelles données, je veux transformer le 'ID' partir de ces données, basées sur le_id c'est à dire, même si les valeurs sont présentes, puis de les transformer selon les au-dessus de l'étiquette de l'encodeur, autrement affecter une nouvelle valeur numérique.

Dans le fichier de test, je faisais comme suit:

new_df['ID'] = le_dpid.transform(new_df.ID)

Mais, j'obtiens l'erreur suivante: ValueError: y contains new labels

Comment puis-je résoudre ce problème?? Merci!

Mise à JOUR:

Donc, la tâche que j'ai est d'utiliser le ci-dessous (par exemple) que les données d'entraînement et de prédire le 'High', 'Mod', 'Low' de valeurs pour les nouvelles BankNum, ID combinaisons. Le modèle doit apprendre les caractéristiques, où une "Haute" est donné, où un "Faible" est donné à partir de l'ensemble de données d'apprentissage. Par exemple, ci-dessous un "Haut" est donnée lorsqu'il y a plusieurs entrées avec le même BankNum et des Identifiants différents.

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 | GH564 | Low

Et puis prévoir sur quelque chose comme:

BankNum   |  ID | 

00982222  | AB999 | 
00982222  | AB999 |
00981111  | AB890 |

Je suis en train de faire quelque chose comme ceci:

df['BankNum'] = df.BankNum.astype(np.float128)

    le_id = LabelEncoder()
    df['ID'] = le_id.fit_transform(df.ID)

X_train, X_test, y_train, y_test = train_test_split(df[['BankNum', 'ID'], df.Labels, test_size=0.25, random_state=42)
    clf = RandomForestClassifier(random_state=42, n_estimators=140)
    clf.fit(X_train, y_train)
InformationsquelleAutor Xavier | 2017-09-18