首页 > 解决方案 > 如何将这些数据转换为逻辑回归?

问题描述

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

标签: pythonscikit-learnlogistic-regression

解决方案


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

推荐阅读