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

This commit is contained in:
2024-10-08 23:05:15 +08:00
parent 47cc47bc65
commit f0cd071eba
+15 -23
View File
@@ -43,6 +43,8 @@ name = "章程鸿"
import numpy as np
from sklearn.model_selection import GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import accuracy_score
def load_data(file_path):
"""
@@ -53,25 +55,6 @@ def load_data(file_path):
labels = data[:, -1].astype(int)
return features, labels
def normalize_min_max(data):
"""
对数据进行最小-最大缩放归一化。
Args:
- data (numpy array): 待归一化的数据。
Returns:
- numpy array: 归一化后的数据。
- numpy array: 最小值。
- numpy array: 最大值。
"""
min_vals = data.min(0)
max_vals = data.max(0)
ranges = max_vals - min_vals
ranges[ranges == 0.0] = 1.0 # 避免除以零
norm_data = (data - min_vals) / ranges
return norm_data, min_vals, max_vals
if __name__ == "__main__":
train_file = "datingTrainSet2.tsv"
test_file = "datingTestSet2.tsv" # 假设您有一个测试集文件
@@ -80,9 +63,10 @@ if __name__ == "__main__":
train_data, train_labels = load_data(train_file)
test_data, test_labels = load_data(test_file)
# 归一化训练和测试数据
train_data_normalized, min_vals, max_vals = normalize_min_max(train_data)
test_data_normalized = (test_data - min_vals) / (max_vals - min_vals)
# 使用MinMaxScaler进行归一化
scaler = MinMaxScaler()
train_data_normalized = scaler.fit_transform(train_data)
test_data_normalized = scaler.transform(test_data)
# 定义KNN分类器
knn = KNeighborsClassifier()
@@ -104,4 +88,12 @@ if __name__ == "__main__":
# 对测试数据进行预测
predicted_labels = best_knn.predict(test_data_normalized)
print("预测的分类标签是:", predicted_label[0])
# 输出预测结果
print("预测的分类标签是:")
for i, (predicted, actual) in enumerate(zip(predicted_labels, test_labels)):
print(f"样本 {i+1}: 预测标签: {predicted}, 实际标签: {actual}")
# 计算并输出准确率
accuracy = accuracy_score(test_labels, predicted_labels)
print(f"模型在测试集上的准确率为: {accuracy * 100:.2f}%")