ValueError:找到暗淡 3 的数组。估计器预期 <= 2。>>>

Posted

技术标签:

【中文标题】ValueError:找到暗淡 3 的数组。估计器预期 <= 2。>>>【英文标题】:ValueError: Found array with dim 3. Estimator expected <= 2. >>> 【发布时间】:2019-06-01 21:13:57 【问题描述】:
#Import Library
from sklearn import svm
import numpy as np




X=np.array([
    [[25,25,25],[0,0,0],[0,0,0]],
    [[25,0,0],[25,0,0],[25,0,0]],
    [[75,75,75],[75,75,75],[75,75,75]]
           ])
y=np.array([-1,1,1]
           )


C=10

model = svm.SVC(kernel='rbf', C=10, gamma=0.6) 


model.fit(X, y)
model.score(X, y)

当我尝试运行这段代码时,我得到了这个错误

ValueError: 找到暗淡为 3 的数组。预计估计器

希望您能帮我解决这个错误。我想训练 svm 将图像像素分为两类(边缘和非边缘),任何建议都会有所帮助,提前感谢

【问题讨论】:

X=np.array(...)替换X=np.array([...])应该不错。 【参考方案1】:

我不知道问题域。但这解决了你的错误,

#Import Library
from sklearn import svm
import numpy as np

X=np.array([
[[25,25,25],[0,0,0],[0,0,0]],
[[25,0,0],[25,0,0],[25,0,0]],
[[75,75,75],[75,75,75],[75,75,75]]
       ])
X = X.reshape(X.shape[0], -1)
y=np.array([-1,1,1])


C=10

model = svm.SVC(kernel='rbf', C=10, gamma=0.6) 


model.fit(X, y)
model.score(X, y)

输出:

1.0

【讨论】:

【参考方案2】:

model.fit 需要 2D 数组,但您的 X 是 3D。使用 np.concatenate 将您的 X 转换为 2D

from sklearn import svm
import numpy as np

X=np.array([
    [[25,25,25],[0,0,0],[0,0,0]],
    [[25,0,0],[25,0,0],[25,0,0]],
    [[75,75,75],[75,75,75],[75,75,75]]
           ])
y=np.array([-1,1,1]
           )


X = [np.concatenate(i) for i in X]
print(X)
model = svm.SVC(kernel='rbf', C=10, gamma=0.6) 


model.fit(X, y)
model.score(X, y)

【讨论】:

这不是转换为二维数组的最佳方式。可以使用原生的numpy 函数来完成。

以上是关于ValueError:找到暗淡 3 的数组。估计器预期 <= 2。>>>的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:找到暗淡为 3 的数组。预计估计器 <= 2。(Keras,Sklearn)

sklearn KNeighborsClassifier“ValueError:找到暗淡为 4 的数组。预计估计器 <= 2。”

找到暗淡为 3 的数组。估计器预期 <= 2

sklearn 维度问题“找到暗淡 3 的数组。预期的估计器 <= 2”

运行以下代码时出现错误(找到暗淡 3 的数组。预计估计器 <= 2)

Numpy 错误“ValueError:找到昏暗 3 的数组。预计估计器 <= 2。”