更新 function.py
Gitea Actions Challenge Test / Challenge-Actions (push) Failing after 11s

This commit is contained in:
2024-10-08 22:45:14 +08:00
parent 871a1bbf91
commit 13b9768ed7
+22 -2
View File
@@ -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])