【问题标题】:DecisionTreeClassifier fit method error (scikit learn)DecisionTreeClassifier fit 方法错误(scikit learn)
【发布时间】:2019-05-23 05:06:42
【问题描述】:

尝试使用fit 方法训练我的DecisionTreeClassifier

from sklearn import tree
import skimage

features = []
labels = []

for i in range(5):
    img = skimage.io.imread("circle" + str(i+1) + ".jpg")
    img = skimage.img_as_float(img)
    features.append(img)
    labels.append(0)

    img = skimage.io.imread("square" + str(i+1) + ".jpg")
    img = skimage.img_as_float(img)
    features.append(img)
    labels.append(1)

clf = tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)

接收错误:

ValueError:用序列设置数组元素。

【问题讨论】:

  • 可能相关问题here, here, here。你已经看过所有这些了吗?也许不是
  • 更多 herehere 以及更多
  • @Bazingaa 我看过这个主题,但我的两个列表中的元素数量相等(10)。
  • 也许特征的形状有问题?尝试通过转换为 numpy 数组来打印形状
  • Bazingaa 可能是对的:img 可能是一个二维数组。您不能将二维数组用作特征;尝试将其设为一维。

标签: python python-3.x machine-learning scikit-learn scikit-image


【解决方案1】:

如果您执行以下操作,您将只使用第一个像素值。

features.append(img[0][0])

试试这个!

import numpy as np
features.append(np.array(img).flatten())

请检查您要附加的数据的维度,以了解实际发生的情况。

print(np.array(img).flatten().shape)

【讨论】:

  • 决策树可能不是图像分类的最佳选择。试试 CNN。
【解决方案2】:

非常感谢,Bazinga 和 9769953。

解决了我的替换问题

features.append(img)

features.append(img[0][0])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-18
    • 2018-02-22
    • 2016-12-07
    • 2012-12-30
    • 2013-03-29
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    相关资源
    最近更新 更多