python - 为什么我的 KNN 模型中有 0 个邻居?
问题描述
我正在做一个多类音频分类,我有
1) 记录单个单词的每个 .wav 文件的路径 2) 每个路径的 MFCC 向量 3) 训练集中每个路径的标签(实际单词)
显然,我的算法无法识别任何邻居。任何原因?
我的套装看起来像:
X_train, X_test, y_train, y_test = train_test_split(new_X, y, test_size=0.4, random_state=5)
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)
print(y_test.shape)
(56894, 99) (56894,) (37930, 99) (37930,)
我的模型是:
k_range = list(range(1))
scores = []
for k in k_range:
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
scores.append(metrics.accuracy_score(y_test, y_pred))
然后错误说:
ValueError Traceback (most recent call last)
<ipython-input-12-d67236a4ac61> in <module>()
3 for k in k_range:
4 knn = KNeighborsClassifier(n_neighbors=k)
----> 5 knn.fit(X_train, y_train)
6 y_pred = knn.predict(X_test)
7 scores.append(metrics.accuracy_score(y_test, y_pred))
1 frames
/usr/local/lib/python3.6/dist-packages/sklearn/neighbors/base.py in fit(self, X, y)
915 self._y = self._y.ravel()
916
--> 917 return self._fit(X)
918
919
/usr/local/lib/python3.6/dist-packages/sklearn/neighbors/base.py in _fit(self, X)
266 raise ValueError(
267 "Expected n_neighbors > 0. Got %d" %
--> 268 self.n_neighbors
269 )
270 else:
ValueError: Expected n_neighbors > 0. Got 0
解决方案
不是没有认出邻居,而是在抱怨你正在使用n_neighbours = 0
您的循环使用k_range
which is [0,1]
so 在循环的第一次迭代中,失败的调用评估为:
knn = KNeighborsClassifier(n_neighbors=0)
您需要更改范围:
k_range = list(range(1))
不包括零。
推荐阅读
- python - OpenCV:如何使用鼠标回调在图像上绘制圆段
- django - 如何为 django 核心迁移表使用自定义名称?
- android - 广告 ID 取自图书馆而非应用
- powershell - 在powershell中使用-ReadCount和Select -Skip从文件中获取内容未输出预期结果
- regex - 如何使用这些值(从 .ps1 文件中读取)来更新另一个 .ps1 文件的值
- python - 根据另一个数据框的索引替换所有列值
- javascript - javascript在读取PHP变量之前寻找值
- java - 当 RxJava2 中的 zip 运算符发生错误时,如何删除源?
- mysql - group by 和 counts 中的 Where 子句
- javascript - 制作一组图片的特殊旋转动画