问题描述
我有一个非常简单的给定数据集,采用以下格式来运行一些机器学习算法并对其进行评估:
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']