如何解决使用 one-hot 编码将列表转换为二进制值
我在 CSV 文件中有一个列。列中的每个单元格在列表中都有多个值。例如一个单元格将包含 private fun SetBtncalculate() {
btn_calculate.setonClickListener {
val gender = Integer.parseInt(radio_grp_gender.checkedRadioButtonId.toString())
if (spinnervalue == 0) {
val bmi = weight / (heightm * heightm)
bmi_meter.speedTo(bmi.toFloat())
//The BMI Categorization for Male (Age 2-20)
if ((age == 2) || (gender == 0)) {
when {
bmi <= 14.7 -> Toast.makeText(
this,getString(R.string.toast_message_underweight_age),Toast.LENGTH_LONG
).show()
bmi <= 18.1 -> Toast.makeText(
this,getString(R.string.toast_message_healthy_age),Toast.LENGTH_LONG
).show()
bmi <= 19.3 -> Toast.makeText(
this,getString(R.string.toast_message_overweight_age),Toast.LENGTH_LONG
).show()
else -> Toast.makeText(
this,getString(R.string.toast_message_obesity_age),Toast.LENGTH_LONG
).show()
}
和另一个 ['A','B','C']
。我想将此列应用 ['B','D']
以转换为用于机器学习的二进制值。
请告诉我该怎么做?
解决方法
输入是 csv 文件,所以没有列表,只有字符串。因此,删除 []
并使用 Series.str.get_dummies
并删除列名中的尾随 '
:
df = df['col'].str.strip('[]').str.get_dummies(',')
df.columns = df.columns.str.strip("'")
如果将字符串转换为列表需要进行一些处理,请使用 MultiLabelBinarizer
以提高性能:
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform(df['col']),columns=mlb.classes_)
print (df)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。