我是sklearn的新手,也是python的新手。你能帮我弄清楚这个脚本是否会导致一些解决方案吗?基本上我在Imageset上使用了一个色调提取器:加载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.
答案 0 :(得分:4)
错误消息非常明确:输入数据集中有20个样本(行),286个标签因此不匹配。每个样本应标记一次,因此y.shape[0]
应等于x.shape[0]
。我不知道您的特征提取器是如何工作的(并且您没有放入导入行,而是通过Google搜索来自SimpleCV)。请参阅本模块的文档,以了解其输出的性质以及如何将它们转换为满足sklearn形状假设的内容。