From 13b9768ed7a8a3a0fd34a8ab9d0044263d794922 Mon Sep 17 00:00:00 2001 From: zhangchenghong <1598349064@qq.com> Date: Tue, 8 Oct 2024 22:45:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20function.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- function.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/function.py b/function.py index 841ed61..b3b1f56 100644 --- a/function.py +++ b/function.py @@ -42,6 +42,8 @@ name = "章程鸿" # 这里写自己的代码实现 import numpy as np from collections import Counter +from sklearn.model_selection import GridSearchCV +from sklearn.neighbors import KNeighborsClassifier def classify0(inX, dataSet, labels, k=1): """ @@ -116,10 +118,28 @@ if __name__ == "__main__": # 归一化训练数据,并获取最小值和最大值 train_data_normalized, min_vals, max_vals = normalize_min_max(train_data) + # 定义KNN分类器 + knn = KNeighborsClassifier() + + # 定义要搜索的k值范围 + param_grid = {'n_neighbors': list(range(1, 31))} + + # 使用GridSearchCV进行网格搜索 + grid_search = GridSearchCV(knn, param_grid, cv=10, scoring='accuracy') + grid_search.fit(train_data_normalized, train_labels) + + # 获取最佳的k值 + optimal_k = grid_search.best_params_['n_neighbors'] + print("Optimal k:", optimal_k) + + # 使用最佳k值进行预测 + best_knn = KNeighborsClassifier(n_neighbors=optimal_k) + best_knn.fit(train_data_normalized, train_labels) + # 测试数据点也需要用同样的方式归一化 test_point = np.array([65915, 3.868359, 0.128078]) test_point_normalized = (test_point - min_vals) / (max_vals - min_vals) # 使用归一化后的数据进行预测 - predicted_label = classify0(test_point_normalized, train_data_normalized, train_labels) - print("预测的分类标签是:", predicted_label) + predicted_label = best_knn.predict([test_point_normalized]) + print("预测的分类标签是:", predicted_label[0]) \ No newline at end of file