微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 one-hot 编码将列表转换为二进制值

如何解决使用 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 举报,一经查实,本站将立刻删除。