python - KNN 模型(使用 PCA)在 k 的每次迭代中输出相同的精度

标签 python pca knn

我对机器学习技术相当陌生,我正在尝试通过 PCA 和 KNN 的实现来对不同的输出进行分类。

我正在使用从 0 到 9 的手写数字数据集。训练集的形状为 (60000,784),测试集的形状为 (10000,784)。我使用 PCA 将维度降低到前 6 个主成分,所以现在我的训练集的形状为 (60000,6),测试集的形状为 (10000,6)。我尝试对不同的 k 值(范围从 1 到 17)执行迭代,以便为我的应用程序提取最佳的 k 值。然而,当我这样做时,我的准确度始终为 0.2023。我觉得这是不正确的,并且想知道我可能做错了什么。

这是我的代码,我在其中执行 PCA 并尝试提取最佳 K 值:

from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn import metrics
from sklearn.decomposition import PCA

pca = PCA(n_components=6)
train_projected = pca.fit_transform(X_train_norm)
test_projected = pca.fit_transform(X_test_norm)

对于我的标准化数组,我只是将它们除以 255,因为这是最大可能值。

k_range = range(1,17)
scores = {};
scores_list = [];
for i in k_range:
    knn = KNeighborsClassifier(n_neighbors=k)
    knn.fit(train_projected,y_train)
    pred = knn.predict(test_projected)
    scores[i] = metrics.accuracy_score(y_test,pred)
    scores_list.append(metrics.accuracy_score(y_test,pred))

print('Scores ', scores,'\n')
print('Scores List ',scores_list,'\n')

Scores  {1: 0.2023, 2: 0.2023, 3: 0.2023, 4: 0.2023, 5: 0.2023, 6: 0.2023, 7: 0.2023, 8: 0.2023, 9: 0.2023, 10: 0.2023, 11: 0.2023, 12: 0.2023, 13: 0.2023, 14: 0.2023, 15: 0.2023, 16: 0.2023, 17: 0.2023, 18: 0.2023, 19: 0.2023, 20: 0.2023, 21: 0.2023, 22: 0.2023, 23: 0.2023, 24: 0.2023, 25: 0.2023, 26: 0.2023}

Scores List  [0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023, 0.2023]

最佳答案

简单的错误!

在此代码中:

for i in k_range:
    knn = KNeighborsClassifier(n_neighbors=k)

您正在为每次迭代设置n_neighbors=k。它应该是n_neighbors=i

关于python - KNN 模型(使用 PCA)在 k 的每次迭代中输出相同的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60313472/

相关文章:

python - 如何创建一个包含先前列表的新列表

python - Flask 在导入的模块中找不到路由

python - Excel大数据计算(PCA...)

machine-learning - 如何找到两个向量之间的距离,其中一些字段是字符串(名称、地址等)而其他字段是数字

python - sklearn 模型.fit "setting an array element with a sequence."

python - 在 rasa 中运行自定义操作时遇到错误

python - Tweepy 使用 user_id(Python 脚本)从文本文件中关注 Twitter 用户

matlab - 在 Matlab 中使用 PCA 和神经网络进行预处理后预测误差较高

r - PCA分析去除质心

python-2.7 - python中的K最近邻