字符种类转换one hotlabel
方法一
直接用scikit learn里面的onehot encoder
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
encoder.fit(data_train)
train_features = encoder.transform(data_train)
data_train
就是要one hot的类别。
注意当data train是多类别的话,他会把类别线性合并
,比如A有3个类别,B有4个类别,那么会one hot成3+4=7种类别,并且会把向量合并,或者说,2种类别会独立进行one hot,然后合并one hot向量。
from sklearn.preprocessing import OneHotEncoder
# 创建一个包含多个类别的数据集
data = [['red', 'apple'], ['blue', 'banana'], ['green', 'orange']]
# 创建一个OneHotEncoder对象
encoder = OneHotEncoder()
# 使用fit_transform方法将类别数据转换为独热编码形式
one_hot_encoded = encoder.fit_transform(data)
# 打印独热编码结果
print(one_hot_encoded.toarray())
#结果
[[0. 0. 1. 1. 0. 0.]
[1. 0. 0. 0. 1. 0.]
[0. 1. 0. 0. 0. 1.]]
方法2
一个是可以使用scikit learn里面的label encoder。
这个是把原先的字符类别
转成数字
,再通过torch.nn.functional的one_hot转换成独热向量
from sklearn.preprocessing import LabelEncoder
cell_name_label=pd_data['cell_type']
conpound_name_label=pd_data['sm_lincs_id']
cell_cat=LabelEncoder().fit_transform(cell_name_label)
cell_label=F.one_hot(torch.from_numpy(cell_cat).long())#,max(cell_cat)
conpound_cat=LabelEncoder().fit_transform(conpound_name_label)
conpound_label=F.one_hot(torch.from_numpy(conpound_cat).long())
方法3
另外一个还可以使用pandas的get dummy。
会把原先在一列的字符类别,扩增成len(类别)的属性。
比如原先有列性别
选项是[男,女]
,get dummy
后,性别列消失,直接成为2列,一列是否男
,一列是否女
。变相地进行了one hot编码,只不过在取的时候记得把所有横列都取到。
import pandas as pd
pd_data['cell_type''].get_dummy()
或者
pd.get_dummies(combined_data, columns=xlist)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)