Logistic回归=> ValueError:使用序列设置数组元素

时间:2017-08-03 19:03:54

标签: python machine-learning logistic-regression

我是机器学习的新手,我正在尝试对我的样本数据集应用逻辑回归我有一个包含数字列表并希望预测类的功能。

以下是我的代码

from sklearn.linear_model import LogisticRegression
a = [[1,2,3], [1,2,3,4,5,6], [4,5,6,7], [0,0,0,7,1,2,3]]
b = [0,1,0, 0]
p = [[9,0,2,4]]

clfModel1 = LogisticRegression(class_weight='balanced')
clfModel1.fit(a,b)
clfModel1.predict(p)

我收到以下错误

Traceback (most recent call last):
  File "F:\python_3.4\NLP\t.py", line 7, in <module>
    clfModel1.fit(a,b)
  File "C:\Python34\lib\site-packages\sklearn\linear_model\logistic.py", line 1173, in fit
    order="C")
  File "C:\Python34\lib\site-packages\sklearn\utils\validation.py", line 521, in check_X_y
    ensure_min_features, warn_on_dtype, estimator)
  File "C:\Python34\lib\site-packages\sklearn\utils\validation.py", line 382, in check_array
    array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: setting an array element with a sequence.
>>>

是否有某种方法可以更改数据,以便我可以应用分类器并预测结果

1 个答案:

答案 0 :(得分:3)

Logistic回归是形式函数的估算器:

R^d -> [0,1]

但是你的数据显然不是R ^ d的子集,因为a中的每个样本都有不同的长度(维数),因此无法应用。

另一个问题是p也应该是一个样本列表,而不是一个样本(当然它也必须有d个维度)。

没有&#34;绕过这个&#34;这只是一个错误的想法。使用&#34; odd&#34;的典型解决方案是什么?数据:

  • 您预定义了自己的自定义映射(特征提取步骤),为您的不同长度的点输出提供固定长度的表示(因此输出d数字)。没有通用的方法 - 一切都取决于数据。
  • 有些模型可以处理不同长度的输入,例如LSTM,但它是从逻辑回归到递归神经网络的巨大跳跃。
  • 使用基于相似性的方法(如kNN),并简单地定义自己对两个&#34;数字列表&#34;很相似。

没有其他方法 - 重新考虑数据的表示,或改变方法。