使用 sklearn 使用 KNeighborsClassifier 时出错

Posted

技术标签:

【中文标题】使用 sklearn 使用 KNeighborsClassifier 时出错【英文标题】:Error when using KNeighborsClassifier using sklearn 【发布时间】:2017-09-20 10:34:05 【问题描述】:

我正在对一个包含 28 个特征和 5000 个样本的数据集进行 KNN 分类:

trainingSet = []
testSet = []
imdb_score = range(1,11)

print ("Start splitting the dataset ...")
splitDataset(path + 'movies.csv', 0.60, trainingSet, testSet)

print ("Start KNeighborsClassifier ... \n")
neigh = KNeighborsClassifier(n_neighbors=5)
neigh.fit(trainingSet, imdb_score)

但是,我遇到了这个错误:

    " samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [3362, 10]

我认为我的代码看起来不错。请问有没有人遇到过这个问题?

【问题讨论】:

【参考方案1】:

所以你有 6000 个样本,使用其中的 60%,得到 3362 个样本(看起来,我没有为你的精确计算提供种子)。

你打电话给fit(X,Y)where the following is needed:

y : array-like, sparse matrix Target values of shape = [n_samples] or [n_samples, n_outputs]

由于您的 y=imdb_score 只是 10 个值的列表,因此这些规则都不适用,因为它需要是具有 3362 个值的类似数组的数据结构(列表可以)或形状为 @987654326 的数组@。

【讨论】:

对不起,这是一个拼写错误。它是 5000 个样本。

以上是关于使用 sklearn 使用 KNeighborsClassifier 时出错的主要内容,如果未能解决你的问题,请参考以下文章

当我应该使用其中之一时,“sklearn.cluster.k_means”和“sklearn.cluster.KMeans”有啥区别?

sklearn.svm在建立好模型后怎么使用

sklearn使用小贴士

Sklearn:使用 CalibratedClassifierCV 校准多标签分类

sklearn.svm在建立好模型后怎么使用

sklearn:在 RandomizedSearchCV 中使用管道?