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

标签 python pandas machine-learning scikit-learn

我使用 Scikit-Learn 训练了一个分类器。我正在加载输入以从 CSV 训练我的分类器。我的某些专栏(例如“城镇”)的值是规范的(例如可以是“纽约”、“巴黎”、“斯德哥尔摩”……)。为了使用这些规范列,我正在使用 Scikit-Learn 的 LabelBinarizer 进行一次性编码

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

import pandas as pd
from sklearn.preprocessing import LabelBinarizer

headers = [ 
    '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 来使用我要对其进行预测的新输入数据创建特征向量。特别是,如果新数据包含一个可见的城镇(例如纽约),则需要在与训练数据中的同一城镇相同的位置对其进行编码。

标签二值化应该如何重新应用于新的输入数据?

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

最佳答案

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

演示:

假设我们有以下火车 DF:

In [250]: df
Out[250]:
           Town
0      New York
1        Munich
2          Kiev
3         Paris
4        Berlin
5      New York
6  Zaporizhzhia

一步适应(训练)和变换(二值化):

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

产量:

In [252]: r1
Out[252]:
   Berlin  Kiev  Munich  New York  Paris  Zaporizhzhia
0       0     0       0         1      0             0
1       0     0       1         0      0             0
2       0     1       0         0      0             0
3       0     0       0         0      1             0
4       1     0       0         0      0             0
5       0     0       0         1      0             0
6       0     0       0         0      0             1

lb 现在针对我们在 df

中的那些城镇进行训练

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

In [253]: new
Out[253]:
       Town
0    Munich
1  New York
2     Dubai  # <--- new (not trained) town

In [254]: r2 = pd.DataFrame(lb.transform(new['Town']), columns=lb.classes_)

In [255]: r2
Out[255]:
   Berlin  Kiev  Munich  New York  Paris  Zaporizhzhia
0       0     0       1         0      0             0
1       0     0       0         1      0             0
2       0     0       0         0      0             0

关于python - 如何在 Scikit-Learn 中重用 LabelBinarizer 进行输入预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656327/

相关文章:

machine-learning - 我如何将 30 个类别转换为 scikit 的数字

python - 是否可以查询 PyQt4 QObject 以确定底层 C++ 实例是否已被销毁?

python - 这与字典有关

python - 条件如果字符串仅包含变量和整数Python

python - 类型错误 : <lambda>() takes at least 2 arguments (1 given)

python - 获取错误 AttributeError : 'bool' object has no attribute 'transpose' when attempting to fit machine learning model

machine-learning - caffe 损失为 nan 或 0

python - 使用 Python 从文本文件读取的行中的特殊行尾字符/字符串

python - 如何在 pandas 中对齐 dfs

python - 将数据框一分为二并使用代字号 ~ 作为变量