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

This commit is contained in:
2024-10-08 00:04:59 +08:00
parent d1525c0dd5
commit 8eaa88f2c9
+16 -24
View File
@@ -44,7 +44,6 @@ name = "陈宇杰"
# 这里写自己的代码实现
def classify0(inX, dataSet, labels, k):
"""
KNN 分类函数
@@ -80,36 +79,29 @@ def main():
scaler = StandardScaler() # 创建标准化对象
train_data = scaler.fit_transform(train_data) # 对训练数据进行标准化
# 使用交叉验证选择最佳 k 值
k_values = range(1, 31) # 定义 k 值范围
best_k = 1
best_accuracy = 0
# 设置 K 值
k = 1 # 直接定义 K 值为 1
for k in k_values:
# 通过手动实现 KNN 分类计算准确率
correct_predictions = 0
for i in range(len(train_data)):
# 留出一条数据作为测试集,其余作为训练集
test_sample = train_data[i]
train_subset = np.delete(train_data, i, axis=0)
train_labels_subset = np.delete(train_labels, i)
# 手动实现 KNN 分类计算准确率
correct_predictions = 0
for i in range(len(train_data)):
# 留出一条数据作为测试集,其余作为训练集
test_sample = train_data[i]
train_subset = np.delete(train_data, i, axis=0)
train_labels_subset = np.delete(train_labels, i)
# 使用 KNN 分类器预测
predicted_label = classify0(test_sample, train_subset, train_labels_subset, k)
if predicted_label == train_labels[i]:
correct_predictions += 1
# 使用 KNN 分类器预测
predicted_label = classify0(test_sample, train_subset, train_labels_subset, k)
if predicted_label == train_labels[i]:
correct_predictions += 1
accuracy = correct_predictions / len(train_data) # 计算准确性
if accuracy > best_accuracy:
best_accuracy = accuracy
best_k = k
print(f"最佳 k 值: {best_k},准确率: {best_accuracy:.4f}")
accuracy = correct_predictions / len(train_data) # 计算准确性
print(f"使用 K 值 {k} 的准确率: {accuracy:.4f}")
# 测试分类
test_sample = [65915, 3.868359, 0.128078] # 测试样本
test_sample = scaler.transform([test_sample]) # 对测试样本进行相同的缩放
predicted_label = classify0(test_sample[0], train_data, train_labels, best_k) # 分类
predicted_label = classify0(test_sample[0], train_data, train_labels, k) # 分类
print(f"测试样本 {test_sample[0]} 的预测分类标签为: {predicted_label}")