machine-learning - sklearn - ValueError:无法将字符串转换为浮点数:'是'
问题描述
我有一个具有以下分类数据colname的数据集。使用 sklearn 执行 one_hot_encoding 时出现错误。
def ohe_encode(train, test, index):
Onehot = OneHotEncoder(categorical_features='all', handle_unknown='error')
x_train_1 = train
x_test_1 = test
colname = df.columns[index]
Onehot.fit(train[colname].astype(str))
x_trans = Onehot.transform(train[columnns].astype(str))
new_features = Onehot.transform(test[colname].astype(str))
return (x_transform, new_features)
屏幕显示出现错误,
ValueError: could not convert string to float: 'yes'
无法得到错误的原因。
提前致谢,
解决方案
取自sklearns OneHotEncoder 文档(重点是我的):
使用 one-hot aka one-of-K 方案对分类整数特征进行编码。
这个转换器的输入应该是一个整数矩阵,表示分类(离散)特征所采用的值。
但是,您输入原始分类值,例如。像«yes»和«no»这样的字符串。因此,您会得到 ValueError。
您需要先对数据进行因式分解,这意味着您将字符串转换为分类数字(整数)。然后你可以做一个热编码。
推荐阅读
- angular - 使用 ngFor 将两个元素添加到一行然后创建一个新行
- python - 需要帮助理解这行代码(字典、键、pandas、numpy)
- java - Android Studio 上的 Droidfish
- python - 我的代码中的错误我不知道出了什么问题。特金特
- python - 完全绕过 Django 的身份验证和用户模型
- ruby - 使用正则表达式从未格式化的字符串中提取某种单词
- string - 如何在不先将其转换为字符串的情况下将 char 或 &str 附加到字符串?
- javascript - 如何在javascript中的语句之前理解下划线
- python-3.x - 尽管 dtype 设置,熊猫从列中读取数据为 float 或 int 而不是 str
- algorithm - 网络流算法相关问题