Превратите один столбец CSV с несколькими переменными в несколько столбцов с одной переменной - PullRequest
0 голосов
/ 21 мая 2018

У меня есть столбцы в csv с несколькими переменными, такими как

col1
a, c, e, f
b, c, g, p
d, e, i, x

, и мне нужно превратить их в

a    b    c    d
1    0    1    0
0    1    1    0
0    0    0    1

для целей предварительной обработки машинного обучения.Когда я пытался использовать LabelEncoder и OneHotEncoder, возвращалось предупреждение о неверном измерении.

# Creating an integer encoding of labels  
label_encoder = LabelEncoder() 
integer_encoded = label_encoder.fit_transform(X)

Как правильно обрабатывать это?

1 Ответ

0 голосов
/ 21 мая 2018

использовать sklearn.feature_extraction.text.CountVectorizer .

Демо:

In [192]: from sklearn.feature_extraction.text import CountVectorizer

In [193]: cv = CountVectorizer(token_pattern='(?u)\\b\\w+\\b', vocabulary=list('abcd'))

In [194]: X = cv.fit_transform(df['col1'])

In [195]: X
Out[195]:
<3x4 sparse matrix of type '<class 'numpy.int64'>'
        with 5 stored elements in Compressed Sparse Row format>

In [196]: X.A
Out[196]:
array([[1, 0, 1, 0],
       [0, 1, 1, 0],
       [0, 0, 0, 1]], dtype=int64)

In [197]: cv.get_feature_names()
Out[197]: ['a', 'b', 'c', 'd']

, если мы не используем vocabulary - мы будемполучить один столбец для каждого уникального слова:

In [203]: cv = CountVectorizer(token_pattern='(?u)\\b\\w+\\b')

In [204]: X = cv.fit_transform(df['col1'])

In [205]: X.A
Out[205]:
array([[1, 0, 1, 0, 1, 1, 0, 0, 0, 0],
       [0, 1, 1, 0, 0, 0, 1, 0, 1, 0],
       [0, 0, 0, 1, 1, 0, 0, 1, 0, 1]], dtype=int64)

In [206]: cv.get_feature_names()
Out[206]: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'i', 'p', 'x']

Источник DF:

In [191]: df
Out[191]:
         col1
0  a, c, e, f
1  b, c, g, p
2  d, e, i, x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...