首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Daru Ruby Gem -如何将分类变量转换为二进制变量

Daru Ruby Gem -如何将分类变量转换为二进制变量
EN

Stack Overflow用户
提问于 2018-12-03 06:21:49
回答 1查看 207关注 0票数 1

我有以下Daru数据框,其中包含一个名为search_term的分类变量

代码语言:javascript
复制
home,search_term,bought
0,php,1
0,java,1
1,php,1
...

我想将其转换为具有二进制列的Daru数据框,类似于:

代码语言:javascript
复制
home,php,java,bought
0,1,0,1
0,0,1,1
1,1,0,1
...

我找不到实现它的方法。我知道这在Python的Panda中是可能的,但我想在Darus gem中使用Ruby。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-03-16 19:47:01

根据Rumale机器学习库的作者Yoshoku写的blog post,你可以这样做:

代码语言:javascript
复制
train_df['IsFemale'] = train_df['Sex'].map { |v| v == 'female' ? 1 : 0 }

Rumale的标签编码器对分类变量也很有用。

代码语言:javascript
复制
require 'rumale'
encoder = Rumale::Preprocessing::LabelEncoder.new
labels = Numo::Int32[1, 8, 8, 15, 0]
encoded_labels = encoder.fit_transform(labels)
# Numo::Int32#shape=[5]
# [1, 2, 2, 3, 0]

Rumale::Preprocessing::OneHotEncoder

代码语言:javascript
复制
encoder = Rumale::Preprocessing::OneHotEncoder.new
labels = Numo::Int32[0, 0, 2, 3, 2, 1]
one_hot_vectors = encoder.fit_transform(labels)
# > pp one_hot_vectors
# Numo::DFloat#shape[6, 4]
# [[1, 0, 0, 0],
#  [1, 0, 0, 0],
#  [0, 0, 1, 0],
#  [0, 0, 0, 1],
#  [0, 0, 1, 0],
#  [0, 1, 0, 0]]

但是,Daru::Vector和Numo::NArray的转换需要使用to_a

代码语言:javascript
复制
encoder = Rumale::Preprocessing::LabelEncoder.new
train_df['Embarked'] = encoder.fit_transform(train_df['Embarked'].to_a).to_a
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53585160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档