如何将这些数据转换为逻辑回归?

How to transform this data for 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( = begin) 的字符串

X[2] : 末尾有 mounth + e( = end) 的字符串

X[3] : 'buy' 或 'sell'

可是我做不到

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) 的数据?

问题是你弄错了 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.]])