更新 function.py
Gitea Actions Challenge Test / Challenge-Actions (push) Successful in 26s

This commit is contained in:
2024-10-14 21:27:12 +08:00
parent 84bab8003a
commit 5f7d2a0080
+21 -2
View File
@@ -1,6 +1,7 @@
# function.py # function.py
import numpy as np import numpy as np
from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import cross_val_score
""" """
挑战说明: 挑战说明:
@@ -85,11 +86,29 @@ def load_data(file_path):
labels = data[:, -1].astype(int) labels = data[:, -1].astype(int)
return features, labels return features, labels
def find_best_k(dataSet, labels):
"""
使用交叉验证找到最佳 k 值。
"""
best_score = 0
best_k = 3
for k in range(1, 11):
predictions = [classify0(x, dataSet, labels, k) for x in dataSet]
score = np.mean(predictions == labels)
if score > best_score:
best_score = score
best_k = k
return best_k
if __name__ == "__main__": if __name__ == "__main__":
# 以下代码可用于测试,可自行随意修改 # 以下代码可用于测试,可自行随意修改
train_file = "datingTrainSet2.tsv" train_file = "datingTrainSet2.tsv"
train_data, train_labels = load_data(train_file) train_data, train_labels = load_data(train_file)
# 找到最佳 k 值
best_k = find_best_k(train_data, train_labels)
print(f"Best k: {best_k}")
# 预测结果 # 预测结果
print(classify0(np.array([65915, 3.868359, 0.128078]), train_data, train_labels, k=3)) print(classify0(np.array([65915, 3.868359, 0.128078]), train_data, train_labels, best_k))