如何在Scikit-Learn中重用LabelBinarizer进行输入预测

我在使用Scikit-Learn训练分类器。我从CSV文件中加载数据来训练我的分类器。我的一些列(例如’Town’)的值是标准的(例如可以是’New York’、’Paris’、’Stockholm’等)。为了使用这些标准列,我使用Scikit-Learn的LabelBinarizer进行独热编码

这是我训练前转换数据的方式:

import pandas as pdfrom sklearn.preprocessing import LabelBinarizerheaders = [     'Ref.', 'Town' #,...]df = pd.read_csv("/path/to/some.csv", header=None, names=headers, na_values="?")lb = LabelBinarizer()lb_results = lb.fit_transform(df['Town'])

然而,我不清楚如何使用LabelBinarizer来创建用于预测的新输入数据的特征向量。特别是,如果新数据中包含已见过的城市(例如New York),它需要在与训练数据中相同的位置进行编码。

如何在新输入数据上重新应用标签二值化?

(我对Scikit-Learn没有强烈感觉,如果有人知道如何使用Pandas的get_dummies方法也可以。)


回答:

只需对已训练的lb模型使用lb.transform()即可。

示例:

假设我们有以下训练数据框:

In [250]: dfOut[250]:           Town0      New York1        Munich2          Kiev3         Paris4        Berlin5      New York6  Zaporizhzhia

在一部完成拟合(训练)与转换(二值化):

In [251]: r1 = pd.DataFrame(lb.fit_transform(df['Town']), columns=lb.classes_)

得到结果:

In [252]: r1Out[252]:   Berlin  Kiev  Munich  New York  Paris  Zaporizhzhia0       0     0       0         1      0             01       0     0       1         0      0             02       0     1       0         0      0             03       0     0       0         0      1             04       1     0       0         0      0             05       0     0       0         1      0             06       0     0       0         0      0             1

lb现在已经针对df中出现的这些城市进行了训练

现在我们可以使用已训练的lb模型对新数据集进行二值化(使用lb.transform()):

In [253]: newOut[253]:       Town0    Munich1  New York2     Dubai  # <--- 新(未训练)的城市In [254]: r2 = pd.DataFrame(lb.transform(new['Town']), columns=lb.classes_)In [255]: r2Out[255]:   Berlin  Kiev  Munich  New York  Paris  Zaporizhzhia0       0     0       1         0      0             01       0     0       0         1      0             02       0     0       0         0      0             0

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注