我正在使用sklearn的最近邻居来解决分类问题。我的功能是形状的补丁(3600,2,5)。例如:
a = [[5,5,5,5,5], [5,5,5,5,5]]
b = [[5,5,5,5,5], [5,5,5,5,5]]
features = []
for i in xrange(len(a)):
features.append([a[i], b[i]]) #I have 3600 of these in reality.
neigh = KNeighborsClassifier()
neigh.fit(train_features, target_class)
predictions = neigh.predict(test_features)
我收到错误:
ValueError:找到带有暗淡的数组3.预期< = 2
这是我使用neigh.fit
的行。目标类是具有相应类的1维数组。 train_features
,test_features
只是分成训练和测试数据的数据。
链接到同一错误:check_arrays() limiting array dimensions in scikit-learn?
这是否有解决方法?
答案 0 :(得分:2)
听起来你想要使用本身就是多维的功能。我不确定这是否有效。考虑基于距离的度量(如KNN)可能出现的复杂性增加;多维特征需要距离指标,并且会涉及更多。
我首先尝试展平数组,以便每个示例都是n维向量,而不是数组。因此,如果当前方法中的features[0]
由:
[[5, 5, 5, 5, 5], [5, 5, 5, 5, 5]]
你可以改为:
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
您还可以考虑创建表示多维要素所承载信息的新要素。您可以使用平均值,最大值,最小值等。这是您的特定领域知识所在的位置。
答案 1 :(得分:0)
它不可能接缝。
但是,与使用自定义距离度量(使用metric
参数)相比,您可以将要素展平为一维数组,该度量在计算距离之前会重新构建要素。当然,您也必须自己编写距离度量。但是我不认为这是个问题。