Дару Руби Gem - Как я могу преобразовать категориальную переменную в двоичную - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть следующий фрейм данных Дару с категориальной переменной с именем search_term:

home,search_term,bought
0,php,1
0,java,1
1,php,1
...

Я хочу преобразовать его в фрейм данных Дару с двоичными столбцами, что-то вроде:

home,php,java,bought
0,1,0,1
0,0,1,1
1,1,0,1
...

Я не могу найти способ добиться этого.Я знаю, что это возможно в Panda Python, но я хочу использовать Ruby с самоцветом Darus.

Спасибо.

1 Ответ

0 голосов
/ 16 марта 2019

Согласно сообщению в блоге , написанному Йошоку, автором Rumale библиотеки машинного обучения, вы можете сделать это следующим образом:

train_df['IsFemale'] = train_df['Sex'].map { |v| v == 'female' ? 1 : 0 }

Кодировщик меток Румалетакже полезно для категориальной переменной.

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

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]]

Но для преобразования Дару :: Вектор и Numo :: NArray необходимо использовать to_a.

encoder = Rumale::Preprocessing::LabelEncoder.new
train_df['Embarked'] = encoder.fit_transform(train_df['Embarked'].to_a).to_a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...