请问大家,我的要预测的标签有10个 A B 。。。 J ,我把这10个独热以后,我的数据集(大约1000)里的yi去自动匹配这10个标签,顺便说一下可能可能yi 可能只有其中9个。但是我还是希望标签是十个,因为以后新加进去的数据可能包含之前没出现的那一类。 用sklearn怎么做?
1个回答
你在LabelEncoding和OneHotEncoding阶段输入的label就按照A到J完整地输入进行,这样应该能够解决你说的问题。
import pandas as pd
import numpy as np
# 假设现在有一个数据框
df = pd.DataFrame()
df['label'] = ['A', 'F', 'C', 'F']
df['value'] = [1, 2, 3, 4]
# 完整的label
given_labels = ['A', 'B','C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
# 按完整的label建设Label Encoder
le = LabelEncoder()
le.fit(given_labels)
# transform的时候按照实际数据
df['label'] = le.transform(df['label'])
# 按完整的label建设OH Encoder
ohe = OneHotEncoder(categorical_features=[0], n_values=len(given_labels))
# 按实际数据进行转化
new_array = ohe.fit_transform(df)