Как преобразовать эти данные для логистической регрессии? - PullRequest
1 голос
/ 26 марта 2019

у меня есть данные 'y' и 'X':

y = [1, 0, 0, 0, 0, 0, 0, 0 ...] нормально для моих целей

и

X = [['reg' '03b' '03e' 'buy']
 ['reg' '03b' '04e' 'sell']
 ['pref' '02b' '03e' 'sell']
 ['cur' '03b' '03e' 'buy']
 ['val' '03b' '03e' 'buy']
 ['reg' '03b' '03e' 'buy'] ...]

X[0] может принимать значения: 'reg' / 'pref' / 'cur' / 'val'

X[1]: строка с номером mounth + b (= begin) в конце

X[2]: строка с номером mounth + e (= end) в конце

X[3]: «купить» или «продать»

Но я не могу сделать

logreg = LogisticRegression()
logreg.fit(X,y)

Потому что у меня проблемы со структурой X (это списки со строками)

Я хочу исправить это и сделать:

logreg = preprocessing.LabelEncoder()
i=0
while i<len(X):
    logreg.fit(X[i])
    b[i]=logreg.transform(X[i])
    i=i+1

Но я получаю это:

[3 0 1 2]
[3 0 1 2]
[3 0 1 2]
[3 0 1 2]
[3 0 1 2]
[3 0 1 2]
...
[3 0 1 2]

Все элементы одинаковы. Как я могу правильно преобразовать мои данные для .fit (X, y)?

1 Ответ

2 голосов
/ 27 марта 2019

Проблема в том, что вы ошиблись строкой и столбцом в X.

import numpy as np
from sklearn import preprocessing
X = [['reg', '03b', '03e', 'buy'],
    ['reg', '03b', '04e', 'sell'],
    ['pref', '02b', '03e', 'sell'],
    ['cur', '03b', '03e', 'buy'],
    ['val', '03b', '03e', 'buy'],
    ['reg', '03b', '03e', 'buy']]
X = np.array(X)
b = np.zeros(X.shape)
logreg = preprocessing.LabelEncoder()
i = 0
while i < X.shape[1]:
    logreg.fit(X[:,i])
    b[:,i] = logreg.transform(X[:,i])
    i += 1
b
array([[2., 1., 0., 0.],
       [2., 1., 1., 1.],
       [1., 0., 0., 1.],
       [0., 1., 0., 0.],
       [3., 1., 0., 0.],
       [2., 1., 0., 0.]])
...