import matplotlib import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score matplotlib.use('TkAgg') # 设置随机数种子 np.random.seed(0) # 生成样本集 X 和样本标签 y X = np.random.rand(100, 2) # 100个样本,每个样本2个特征 y = np.random.randint(0, 2, 100) # 100个样本的标签,0或1 # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 初始化一个空列表来存储不同k值下的准确率 accuracies = [] # 遍历不同的k值(从1到11) for k in range(1, 12): # 创建KNN分类器实例 knn = KNeighborsClassifier(n_neighbors=k) # 训练模型 knn.fit(X_train, y_train) # 预测测试集 y_pred = knn.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) # 将准确率添加到列表中 accuracies.append(accuracy) print(k) # 绘制k值与准确率之间的折线图 plt.figure(figsize=(14, 5)) plt.plot(range(1, 12), accuracies, marker='o') plt.title('K值与预测准确率之间的关系') plt.xlabel('K值') plt.ylabel('准确率') plt.grid(True) plt.show()
06-12
1428
05-09