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。”
sklearn 维度问题“找到暗淡 3 的数组。预期的估计器 <= 2”