字符种类转换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)
posted @   ZephyrYin  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示