【问题标题】:ValueError: Found array with dim 3. Estimator expected <= 2. >>>ValueError:找到暗淡 3 的数组。估计器预期 <= 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([...])应该不错。

标签: python valueerror


【解决方案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 函数来完成。
    猜你喜欢
    • 2016-11-28
    • 2021-04-16
    • 2019-07-19
    • 2020-07-10
    • 2018-01-16
    • 2022-01-16
    • 2016-04-30
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多