基于字符串数据类型的预测

问题描述

我有一个非常简单的给定数据集,采用以下格式来运行一些机器学习算法并对其进行评估:

Var_1          Var_2
No              0
yes             1
.....
(No or Yes)    ...(0 or 1)  

(string)       (int)

但是在运行时,这是我得到的错误

ValueError: Could not convert string to float:

如您所见,我是否将自变量作为字符串。这个问题可以通过什么方式解决?我尝试使用布尔值作为 Train_var,但它在那里也不起作用。

解决方法

scikit-learn 的 LabelBinarizer 应该可以解决这个问题:

from sklearn.preprocessing import LabelBinarizer
import pandas as pd

# For reproducing:
from io import StringIO
dataset = StringIO("""
Var_1,Var_2
No,0
yes,1
No,1
yes,1
""")

df = pd.read_csv(dataset)

binarize = LabelBinarizer()
y = binarize.fit_transform(df["Var_1"])
print(y)
# [[0]
#  [1]
#  [0]
#  [1]]

作为一个额外的好处,很容易反转变压器并根据预测取回原始标签:

print(binarize.inverse_transform(y))
# ['No' 'yes' 'No' 'yes']