2

我是 sklearn 的新手,一般来说也是 python 的新手。你能帮我弄清楚这个脚本是否会导致一些解决方案吗?基本上我在图像集上使用色调提取器:加载 iset 进行训练、提取特征、定义分类器然后分类。

    #load beach for training
iset = ImageSet('/Users/Arenzky/Desktop/img_dirs/supervised/beach/') #load Image database

hue = HueHistogramFeatureExtractor() # define extractor
edge = EdgeHistogramFeatureExtractor()
x = []
y = []
for b in iset:
    ...:        x.append(hue.extract(b))

hset = ImageSet('/dir/.../h01/') 
hue = HueHistogramFeatureExtractor() # define extractor
edge = EdgeHistogramFeatureExtractor()
for h01 in hset:
    ...:        y.append(hue.extract(h01))

dataset = np.array(x)
targets = np.array(y)

print 'Training Machine Learning'
clf = LinearSVC()
clf = clf.fit(x, y)
clf2 = LogisticRegression().fit(x, y)

#predict 

...加载 clf 后,我得到:

ValueError: 
X and Y have incompatible shapes. X has 20 samples, but Y has 286.
4

1 回答 1

4

错误消息非常明确:您的输入数据集中有 20 个样本(行)和 286 个标签,因此不匹配。每个样本应标记一次,因此y.shape[0]应等于x.shape[0]。我不知道你的特征提取器是如何工作的(你没有输入导入行,而是通过谷歌搜索它来自 SimpleCV)。请参阅此模块的文档以了解其输出的性质以及如何将它们转换为满足 sklearn 形状假设的东西。

于 2012-09-17T12:34:40.830 回答