pythonのscikit-learnで以下のように、この変換ができる。
次のような、accounts.csvがあると仮定する。
name,occupation
sato,adventurer
ito,engineer
inoue,student
tanaka,engineer
oda,adventurer
基本的にはDictVectorizerに入れるだけだが、その前に[(occupation=adventurer),(occupation=engineer)]のようなディクショナリの配列にする必要がある。
# -*- coding: utf-8 -*-
import pandas as pd
from sklearn.feature_extraction import DictVectorizer
accounts=pd.read_csv('./accounts.csv', encoding='utf-8')
occupation_vectorizer = DictVectorizer(sparse=False)
i = [ dict(occupation=occupation) for occupation in accounts[u"occupation"] ]
X = occupation_vectorizer.fit_transform(i)
names = occupation_vectorizer.get_feature_names()
# original table
print accounts
# label names
print names
# transformed one-hot encoding
print X
結果
name occupation
0 sato adventurer
1 ito engineer
2 inoue student
3 tanaka engineer
4 oda adventurer
[u'occupation=adventurer', u'occupation=engineer', u'occupation=student']
[[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 1.]
[ 0. 1. 0.]
[ 1. 0. 0.]]
0 件のコメント:
コメントを投稿