2017-12-30 15 views
0

ich einen Ersatz-Array haben, dieWie eine spärliche oder NxM-Matrix erstellen mit scikits lernen

N M 
a cat 
b cat 
c cat 
a dog 
d dog 
e dog 

Ich muss repräsentieren in diesem Format sieht wie folgt aus:

cat dog 
a 1 1 
b 1 0 
c 1 0 
d 0 1 
e 0 1 

Mit scikits-lernen tue ich das?

Meine Rohdaten sieht wie folgt aus:

[{"N":"a"},{"M":"cat"},{"N":"a"},{"M":"dog"}...] 

Die Zellen, sondern binär und wird für nmf algo verwendet werden.

Wenn ich laufen die folgenden:

data = [{"N":"a"},{"M":"cat"},{"N":"a"},{"M":"dog"}] 
v = DictVectorizer(sparse=False) 

    [[ 0. 0. 1.] 
[ 1. 0. 0.] 
[ 0. 0. 1.] 
[ 0. 1. 0.]] 

aber es sollte so aussehen:

1 1 

Dank

+0

Sie können ein Label-Encoder verwenden. Alternativ laden Sie Ihre Daten in einen dünn besetzten Datenrahmen und rufen 'get_dummies' auf. Hast du Pandas? –

Antwort

0

Wenn ich richtig verstehe, ich glaube, Sie müssen nur "M" verwenden Spalte, um die Codierung zu erstellen.

v = DictVectorizer(sparse=False) # sparse=False now 
data = [{"N":"a"},{"M":"cat"},{"N":"a"},{"M":"dog"}] 
filtered_data = (d for d in data if "M" in d.keys()) # filter out "N" 
v.fit_transform(filtered_data) 
# output 
array([[ 1., 0.], 
     [ 0., 1.]]) 

Do it Pandas Weise.

import pandas as pd 
pd.concat([df.N, df.M.str.get_dummies()], axis=1) 

    N cat dog 
0 a 1 0 
1 b 1 0 
2 c 1 0 
3 a 0 1 
4 d 0 1 
5 e 0 1 

df.M.str.get_dummies() generiert:

cat dog 
0 1 0 
1 1 0 
2 1 0 
3 0 1 
4 0 1 
5 0 1 
Verwandte Themen