借助 AI 工具,实现基于 KNN 的师生身份识别的机器学习案例
2026/4/24 1:31:23 网站建设 项目流程

一. 项目介绍

本项目使用 KNN 算法实现人脸特征分类,自动识别老师和学生,适合机器学习入门。

1.1、设计思路与方法

本项目旨在基于人脸特征(年龄、颜值、衣着、体型、发色、发量)自动识别老师或学生身份(老师=1,学生=0)。方法采用监督学习中的KNN算法。流程包括:

  1. 读取Excel特征表并转为CSV格式。
  2. 划分数据集:70%训练集、30%测试集。
  3. 使用KNN模型训练和预测。
  4. 输出预测结果,包括姓名、预测值、真实值、测试集准确率和交叉验证平均准确率。
    AI工具用于辅助理解代码、修复错误、优化输出格式和生成报告。

1.2. 开发工具

  • Python
  • sklearn、pandas、xlrd
  • AI 辅助工具

1.3. 实现步骤

  1. 准备人脸特征 Excel 表。
  2. 用代码转成 CSV 格式。
  3. 划分训练集和测试集。
  4. 构建 KNN 模型并训练。
  5. 预测并输出准确率。
  6. 使用 AI 优化代码、排版报告。

1.4. 使用 AI 工具的方法

  1. 把课程代码发给 AI,说明报错信息,AI 帮忙定位问题。
  2. 让 AI 把代码改成带姓名、带准确率、带注释的版本。
  3. 让 AI 把整个项目整理成教程结构:思路→代码→结果→总结。
  4. 让 AI 生成作业可直接提交的文字内容。

二、完整代码实现

2.1具体代码

以下Python代码可直接运行,实现数据转换、模型训练和预测。代码已添加注释以提高可读性。

import xlrd import csv import codecs import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score # 1. xls转csv def xlsx_to_csv(): workbook = xlrd.open_workbook('特征值表单.xls') table = workbook.sheet_by_index(0) with codecs.open('1.csv', 'w', encoding='GB18030') as f: write = csv.writer(f) for row_num in range(1, table.nrows): row_value = table.row_values(row_num) write.writerow(row_value) xlsx_to_csv() # 2. 加载数据 def load_data(filename): data = np.genfromtxt(filename, delimiter=',') x = data[:, 1:7] y = data[:, 7].astype(int) x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=2024) return x_train, x_test, y_train, y_test X_train, X_test, y_train, y_test = load_data("1.csv") # 3. KNN训练 knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X_train, y_train) y_pred = knn.predict(X_test) # 4. 输出带姓名的结果 df = pd.read_csv("1.csv", header=None, encoding="gbk") _, _, _, test_idx = train_test_split(np.arange(len(df)), df.iloc[:,7], test_size=0.3, random_state=2024) names = df.iloc[test_idx, 0].values print("======= 测试集预测结果 =======") for name, p, t in zip(names, y_pred, y_test): print(f"姓名:{name:8}\t预测:{p}\t真实:{t}") # 5. 准确率 acc = np.mean(y_pred == y_test) print(f"\n测试集准确率:{acc:.2%}") # 6. 交叉验证平均准确率 scores = cross_val_score(knn, X_train, y_train, cv=3) print(f"3折交叉验证:{scores}") print(f"平均准确率:{np.mean(scores):.2%}")

2.2、运行结果

执行代码后输出如下结果:

======= 测试集预测结果 ======= 姓名:姜永增 预测:1 真实:1 姓名:吴迪 预测:1 真实:1 姓名:孙晓宇 预测:0 真实:0 姓名:学生2 预测:0 真实:0 姓名:学生5 预测:0 真实:0 测试集准确率:100.00% 3折交叉验证:[0.75 1. 0.66666667] 平均准确率:80.56%

2.3、结果分析

  1. 测试集5条数据全部预测正确,准确率达100%,表明模型在测试集上性能优秀。
  2. 3折交叉验证平均准确率约80.56%,显示模型整体稳定可靠。
  3. KNN算法能有效利用人脸特征区分师生身份,验证了设计思路的可行性。

三. 核心知识点

  • KNN 算法:近邻投票分类。
  • 训练集:学习规律。
  • 测试集:评估效果。
  • 交叉验证:更真实评价模型。

四. 总结

通过本次课程学习,我掌握了机器学习的基本流程、常用算法和项目实现方法。借助 AI 工具,我成功完成了师生身份识别案例,理解了数据读取、模型训练、预测评估的全过程。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询