如何解决如何将 numpy 数组转换为一种热编码?
这是我的字典,我已将输入映射到数字。
sex_dict = {
"male" : 0,"female" : 1
}
type_dict = {
"histo" : 0,"follow_up" : 1,"consensus" : 2,"confocal" : 3
}
localization_dict = {
"back" : 0,"lower extremity" : 1,"trunk" : 2,"upper extremity" : 3,"abdomen" : 4
}
我将接受输入并需要将其转换为单热编码以将其提供给我的模型。我的计划是将输入数组(例如:male、follow_up、trunk 为 [0,1,2])转换为单热编码:
[0,0]
数组中应该有 11 个元素,但是在转换时我只能得到 9 个元素,因为 2 是数组中的最大数字。如何让 one-hot 编码包含字典中的所有元素并最终得到 (1,11) 形状?
解决方法
如果您不介意使用 Pandas 进行数据处理,您可以使用 pd.Categorical 和 pd.get_dummies 来实现结果。这是一个应该适合您的代码片段:
import numpy as np
import pandas as pd
sex_list = [
"male","female"
]
type_list = [
"histo","follow_up","consensus","confocal"
]
localization_list = [
"back","lower extremity","trunk","upper extremity","abdomen"
]
values = np.array([
["male","trunk"]
])
values = pd.DataFrame(values,columns=["sex","type","localization"]).assign(
sex=lambda row: pd.Categorical(row.sex,sex_list),type=lambda row: pd.Categorical(row.type,type_list),localization=lambda row: pd.Categorical(row.localization,localization_list)
)
encoded_array = pd.get_dummies(values).values
如果你想特别注意用于表示不同值的数字,你可以简单地用字典替换不同的列表。 sex_list -> sex_dict
等在 pd.Categorical
调用中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。