我编写了一个分类器并进行了数据预处理(它是分类数据),scikit学习了LabelEncoder(LE)和OneHotEncoder(OHE),它在列车和测试数据上运行良好。现在,我想对新数据做出预测。我的问题:我如何使用LE和OHE将新数据转换为与训练数据相同的样式(缺少更好的单词)? 到目前为止我的代码:
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
X[:, 1] = labelencoder_X.fit_transform(X[:, 1])
onehotencoder = OneHotEncoder(categorical_features='all')# se quiser em uma coluna coloca categorical_features=[0],
#onde [0] é o index da coluna e se quiser em todas as colunas coloca 'all
X = onehotencoder.fit_transform(X).toarray()
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
我没有成功的尝试:
new_pred = np.array(['car','male'])
labelencoder_new_pred = LabelEncoder()
new_pred = labelencoder_new_pred.fit_transform(new_pred) #also tried new_pred = labelencoder_X.fit_transform(new_pred)
onehotencoder2 = OneHotEncoder(categorical_features='all',n_values=29)
new_pred = onehotencoder2.fit_transform(new_pred).toarray()#also tried new_pred = onehotencoder.fit_transform(new_pred).toarray()
z = cfl.predict(new_pred)
结果:
我在这里失踪了什么? THKS!
答案 0 :(得分:2)
您必须存储(即腌制)您安装的LabelEncoders和OneHotEncoder。请在此处查看:model persistence
当您收到新数据时,您将通过已经安装的LabelEncoders和OneHotEncoder对它们进行转换,然后使用您训练过的模型进行预测。这样,生成的数据将采用模型所期望的确切格式,
答案 1 :(得分:0)
您尝试使用相同的实例对两个不同的类别进行分类。 尝试使用下面的内容
labelencoder_X_1 = LabelEncoder()
labelencoder_X_2 = LabelEncoder()
X[:, 0] = labelencoder_X_1.fit_transform(X[:, 0])
X[:, 1] = labelencoder_X_2.fit_transform(X[:, 1])
现在你可以使用
new_data[:,1] = labelencoder_X_2.fit_transform(new_data[:,1])
其中new_data是您要预处理以进行预测的样本数据。
同样,您可以使用相同的方法进行编码