我拥有“ 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)的数据?
答案 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.]])