如何转换此数据以进行逻辑回归?

时间:2019-03-26 18:55:45

标签: python scikit-learn logistic-regression

我拥有“ 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(=开始)

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 个答案:

答案 0 :(得分:2)

问题是您在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.]])