【问题标题】:Scipy fit() returning error "Expected 2D array, got 1D array instead"Scipy fit() 返回错误“预期的 2D 数组,得到 1D 数组”
【发布时间】:2018-08-26 05:16:57
【问题描述】:

我正在尝试使用一些 Scipy 分类器来分类数据集,例如:

X = [
    [2.2580403973917715e-06, 7.637149660560025e-07, 2.57156353293851e-07, 1.0411090477468541e-06, 2.966875927679557e-07, 2.8407977825637697e-08, 1.0829349857886486e-09, 6.361589208033874e-08],
    [6.270357208864301e-10, 1.4976703048023198e-08, 1.6851513665698196e-08, 2.8145617066687096e-08, 1.2313171858773658e-07, 1.3792673608349409e-07, 4.78989580237296e-07, 4.7187858402735833e-07],
    ...
]
y = ['A', 'B', ...]

所以我在做:

from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier()
clf.fit(X, y)

但这是抛出异常:

ValueError: Expected 2D array, got 1D array instead:
array=[list([3.6368636083818036e-14, 3.392522830189899e-12, 9.89834613253366e-15, 1.2248850677983348e-12, 1.3550523047368496e-15, 3.5267405094168456e-13, 1.0774177675897417e-15, 2.7373831147145047e-13])
 list([1.2702936994261183e-07, 1.1302366112093968e-08, 3.601247032753103e-07, 1.2610271278453322e-06, 3.8544108074754034e-07, 3.7388057888913323e-07, 1.0565146699133778e-06, 3.4632712456302423e-07])
 list([6.663127039198243e-09, 1.592855782829962e-08, 2.5189316052885216e-09, 8.71344955078468e-08, 1.560205602695966e-08, 1.8025334695989781e-07, 1.1457211528200937e-06, 5.950518479674942e-07])
 ...
 list([1.8681641214886276e-08, 2.205503463622159e-08, 9.327746218326714e-10, 3.1025040738394077e-09, 2.5949152371447647e-09, 1.512181130670229e-11, 5.786442161657287e-10, 1.4137420397921863e-10])
 list([1.173538500657531e-05, 2.0979757955014606e-05, 0.00041950915503583496, 0.0005116279917528409, 0.0003344955721068041, 0.0003088865534818541, 0.0009895311928082445, 0.0008824911646422847])
 list([2.8243472997407836e-06, 4.503534390316763e-07, 6.076586515867012e-07, 3.1616543548189114e-07, 3.145241529895121e-07, 1.7389540865566907e-07, 1.7234379120699387e-07, 3.603187075520089e-08])].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

这是什么意思?此问题/错误之前已在此处发布,但我不明白为什么我的代码会触发此错误。我的 X 是 2D 数组,而不是 1D 数组,所以我不明白我应该重塑什么。我的数据和the example here.基本一样

我做错了什么?

【问题讨论】:

  • 它在 python2.7 中对我来说是工作文件
  • 这看起来很奇怪。你用的是什么版本的 python 和sklearn? X=np.array(X) 在 fit 之前有帮助吗?

标签: python scipy scikit-learn


【解决方案1】:

问题是我的 X 数组末尾的单行与其他行的大小不同,这破坏了 sklearn/Numpy 将其转换为 2D Numpy 数组的能力。这导致它改为将其转换为 1D Numpy 列表数组,从而导致错误。

我删除了坏行,这导致我的 X 数组被转换为正确的 2D Numpy 数组。

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 2021-05-14
    • 2018-09-16
    • 2020-12-18
    • 1970-01-01
    • 2021-12-29
    • 2018-12-11
    • 2020-11-02
    相关资源
    最近更新 更多