一、实验数据

  1. 性别分类器
    训练样本集
  • FAMALE.TXT 50个女生的身高、体重数据
  • MALE.TXT 50个男生的身高、体重数据
    测试样本集
  • test1.txt 35个同学的身高、体重、性别数据(15个女生、20个男生)
  • test2.txt 300个同学的身高、体重、性别数据(50个女生、250个男生)
  1. 人脸识别
    ORL人脸数据库:40个人,每个人有10张灰度照片,每张照片大小:119*92,灰度级为256。

二、实验内容
实验1. 用贝叶斯方法进行性别分类的实验
基本要求:

  • 1.用FAMALE.TXT和MALE.TXT的数据作为训练样本集,建立Bayes分类器,用测试样本数据对该分类器进行测试。
  • 2.调整特征、分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。
    具体做法:
    1.应用单个特征进行实验:以(a)身高或者(b)体重数据作为特征,在正态分布假设下利用‘最大似然法’估计概率密度函数,建立最小错误率Bayes分类器,写出得到的决策规则;将该分类器应用到测试样本,考察测试错误情况。在分类器设计时可以考察采用不同先验概率(如0.5对0.5, 0.75对0.25, 0.9对0.1等)进行实验,考察对决策规则和错误率的影响。
    2.应用两个特征进行实验:同时采用身高和体重数据作为特征,假设二者不相关,在正态分布假设下估计概率密度函数,建立最小错误率Bayes分类器,写出得到的决策规则;将该分类器应用到训练/测试样本,考察训练/测试错误情况。在分类器设计时可以考察采用不同先验概率(如0.5 vs. 0.5, 0.75 vs. 0.25, 0.9 vs. 0.1等)进行实验,考察对决策和错误率的影响。
    3.应用两个特征进行实验:同时采用身高和体重数据作为特征,假设二者相关,在正态分布假设下估计概率密度函数,建立最小错误率Bayes分类器,写出得到的决策规则,将该分类器应用到训练/测试样本,考察训练/测试错误情况。比较相关假设和不相关假设下结果的差异。在分类器设计时可以考察采用不同先验概率(如0.5 vs. 0.5, 0.75 vs. 0.25, 0.9 vs. 0.1等)进行实验,考察对决策和错误率的影响。
    4.应用两个特征进行实验:同时采用身高和体重数据作为特征,利用PCA进行变换,在正态分布假设下估计概率密度函数,建立最小错误率Bayes分类器,写出得到的决策规则,将该分类器应用到训练/测试样本,考察训练/测试错误情况,并与变换前结果进行比较。
    5.自行给出一个风险表,采用最小风险的Bayes决策重复上面的某个或全部实验。

实验2. 用线性判别方法进行性别分类的实验
基本要求:

  • 设计线性分类器,与基于概率密度估计的贝叶斯分类器进行比较。
    具体做法:
    1.同时采用身高和体重数据作为特征,用Fisher线性判别方法构建分类器,将该分类器应用到训练和测试样本,考察训练和测试错误情况。将训练样本和求得的决策边界画到图上。
    2.利用PCA变换样本的特征空间,构建Fisher线性判别分类器,并与上述方法的结果进行比较。
    3.将Fisher线性判别分类器的识别结果与贝叶斯分类器的识别结果进行比较分析。

实验3. 用近邻法进行性别分类的实验
基本要求:

  • 采用最近邻法、k-近邻法及压缩k-近邻法进行分类,与基于概率密度估计的贝叶斯分类器进行比较。
    具体做法:
    1.同时采用身高和体重数据作为特征,用最近邻法进行分类,考察测试准确率。
    2.同时采用身高和体重数据作为特征,用k-近邻进行分类,考察不同k取值情况下的测试准确率。
    3.同时采用身高和体重数据作为特征,用压缩k-近邻法进行分类,考察测试准确率。
    4.对不同方法的结果进行比较。

实验4. 用PCA方法进行人脸识别的实验
基本要求:

  • 利用ORL人脸数据库作为训练集和测试集,实现人脸识别系统。
  • 采用N-交叉法估计错误率。
    具体做法:
    1.利用PCA方法对人脸数据进行特征降维,采用k-近邻法进行人脸识别。
    2.用N-交叉法估计准确率,对不同降维维数和k取值情况下的准确率进行比较。

实验一第一小问代码参考:

# -*- coding:utf-8 -*-
# Jonathan.K.Wolf
# 2022/5/12import numpy as np
import pandas as pd
import scipy.stats as st
import mathmale_data = pd.read_csv('./MALE.TXT', delim_whitespace=True)
female_data = pd.read_csv('./FEMALE.TXT', delim_whitespace=True)# 身高数据
male_data = male_data.iloc[:, 0]
female_data = female_data.iloc[:, 0]labels_male = []
labels_female = []
for i in range(len(male_data)):labels_male.append(1)for i in range(len(female_data)):labels_female.append(0)# ======================================================================================================================
data_male = []
data_female = []
for j in range(len(male_data)):data_male.append([male_data[j], labels_male[j]])for j in range(len(female_data)):data_female.append([female_data[j], labels_female[j]])sum1 = 0
sum2 = 0
for i in range(len(data_male)):sum1 += data_male[i][0]for j in range(len(data_female)):sum2 += data_female[j][0]# 均值
theta1_male = sum1 / len(data_male)
theta1_female = sum2 / len(data_female)sum11 = 0
sum12 = 0
for i in range(len(data_male)):sum11 += (data_male[i][0] - theta1_male) ** 2for j in range(len(data_female)):sum12 += (data_female[j][0] - theta1_female) ** 2# 方差
theta2_male = sum11 / len(data_male)
theta2_female = sum12 / len(data_female)print('male:{},{}'.format(theta1_male, theta2_male))
print('female:{},{}'.format(theta1_female, theta2_female))# ======================================================================================================================
height_male = []
height_female = []for i in range(len(data_male)):height_male.append(data_male[i][0])for j in range(len(data_female)):height_female.append(data_female[j][0])# 类条件概率密度函数 · 正态分布
def normal_male(x):return st.norm.pdf(x, loc=theta1_male, scale=math.sqrt(theta2_male))def normal_female(x):return st.norm.pdf(x, loc=theta1_female, scale=math.sqrt(theta2_female))# 先验概率
p_male = 0.5
p_female = 0.5# 后验概率
def p_male_x(x):res = (normal_male(x) * p_male) / (normal_male(x) * p_male + normal_female(x) * p_female)return resdef p_female_x(x):res = (normal_female(x) * p_female) / (normal_male(x) * p_male + normal_female(x) * p_female)return res# =========测试阶段=========test_data = pd.read_csv('./test1.txt', delim_whitespace=True)labels_test = test_data.iloc[:, 2]label_test = []
label_pred = []height = test_data.iloc[:, 0]male_height = []
female_height = []
for i in range(len(labels_test)):if labels_test[i] == 'm':male_height.append(height[i])label_test.append(1)elif labels_test[i] == 'f':female_height.append(height[i])label_test.append(0)# 计算男生正确率
acc_of_male = 0
for index_1 in male_height:if p_male_x(index_1) >= p_female_x(index_1):acc_of_male += 1else:passacc_of_male = acc_of_male / len(male_height)
acc_of_male = round(acc_of_male, 2)# 计算女生正确率
acc_of_female = 0
for index_2 in female_height:if p_male_x(index_2) < p_female_x(index_2):acc_of_female += 1else:passacc_of_female = acc_of_female / len(female_height)
acc_of_female = round(acc_of_female, 2)for index in (male_height + female_height):if p_male_x(index) >= p_female_x(index):label_pred.append(1)elif p_male_x(index) < p_female_x(index):label_pred.append(0)print('实际标签:{}'.format(label_test))
print('预测标签:{}'.format(label_pred))
print('在测试集上预测男生的正确率:{}'.format(acc_of_male))
print('在测试集上预测女生的正确率:{}'.format(acc_of_female))

完整代码链接:
https://download.csdn.net/download/weixin_52456426/85407603?spm=1001.2014.3001.5503

malefemale分类+人脸识别——《模式识别》实验课作业相关推荐

  1. [数据结构 算法] A*算法--罗马尼亚度假问题(实验课作业)

    #问题表述 利用A算法找到从A城市到B城市的最短路径,以及代价,其中A算法中的h也就是从当前点到目标点的距离已经给出. 作为人工智能课程实验课的题目,给的帮助代码是纯C语言写的,连容器都是以头文件形式 ...

  2. Windows | PJSIP使用说明 | 北邮计算机网络实验课作业 | 视频通话

    文章目录 官网 首页 使用说明文档 下载地址 实验环境 安装 Build Preparation for Windows Requirements Tools and SDKs Build and r ...

  3. 人脸识别算法实验:facenet人脸识别率测试

    前言 本文记录对人脸识别算法facenet在亚洲人脸数据集上准确率的详细测试结果. 2020-4-7 日更新每个人三张底片 2020-4-2 日更新每个人一张图片作为数据和两张图片作为数据. 数据集 ...

  4. 【学习记录】第二次实验课作业

    实验二 选择结构 编程题 1. if双分支结构简单应用 [问题描述] 输入一个整数,如果输入的数是偶数或者负数,则输出其平方,否则输出其一半的值. [输入形式] 整型数据 [输出形式] 整型数据 [样 ...

  5. c语言回溯实验报告,实验报告: 人脸识别方法回溯与实验分析 【OpenCV测试方法源码】...

    实验报告: 人脸识别方法回顾与实验分析 [OpenCV测试方法源码] 趁着还未工作,先把过去做的东西整理下出来~ (涉及个人隐私,源码不包含测试样本,请谅解~) 对实验结果更感兴趣的朋友请直接看第5章 ...

  6. 实验报告: 人脸识别方法回顾与实验分析 【OpenCV测试方法源码】

    趁着还未工作,先把过去做的东西整理下出来~   Github源码:https://github.com/Blz-Galaxy/OpenCV-Face-Recognition (涉及个人隐私,源码不包含 ...

  7. 【项目实战课】基于Pytorch的MTCNN与Centerloss人脸识别实战

    欢迎大家来到我们的项目实战课,本期内容是<基于Pytorch的MTCNN与Centerloss人脸识别实战>. 所谓项目实战课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个 ...

  8. AI人脸识别 生物识别 活体检测 的发展历程

    https://www.toutiao.com/a6683767811531080200/ 2019-04-25 17:52:41 人脸识别是一个被广泛研究着的热门问题,大量的研究论文层出不穷,在一定 ...

  9. 2dpca matlab程序,[转载]人脸识别-2dpca之Matlab程序

    本程序采用2级PCA提取特征,最小藕欧距离分类器进行人脸识别,实验数据为orl人脸库. 本文作为我从事模式识别研究的开始,留下此代码作为见证. 由于Matlab软件是初次使用,很多函数还不是很熟识,所 ...

最新文章

  1. Elasticsearch之深入了解Doc Values 和 Fielddata
  2. 突破对银河系的传统认知 大量超高能宇宙加速器被发现
  3. map for循环_如何用Map、Filter和Reduce替换Python For循环?
  4. python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例
  5. SQL Server 2000 索引视图提高性能2
  6. 使用Eclipse创建Web工程后未生成web.xml文件
  7. TemplateBinding与Binding区别,以及WPF自定义控件开发的遭遇
  8. C/C++函数指针与指针函数
  9. 在centos服务器上安装配置私人邮箱,并在web端管理邮件
  10. Spring Boot、Spring Cloud、Dubbo的区别
  11. 手动抛出异常_Java异常处理最佳实践及陷阱防范
  12. matlab 工具函数 —— normalize(归一化数据)
  13. 【算法】排序_基数排序
  14. bugku 社工-初步收集
  15. 牛顿插值法python代码_牛顿插值法——用Python进行数值计算
  16. [渝粤教育] 南京邮电大学 Python语言程序设计基础 参考 资料
  17. Server2016系统关闭windows自动更新
  18. SHT30 温湿度传感器 使用示例
  19. Material Design 之Style(三)
  20. 数据库为什么要分库分表

热门文章

  1. 全志A33Linux连接脚本,全志A33编译脚本分析
  2. 关于Swiper插件的使用
  3. 新知实验室TRTC初体验
  4. 美和易思高校学生素养提升平台
  5. C#.net使用DotNetCharting控件生成报表统计图
  6. 计算机常用文件夹怎么关,Win10常用文件夹和最近使用的文件怎么不让显示?关闭常用文件夹...
  7. 机器学习的基本数学知识1
  8. Neo4j -CQL的基本使用(新手快速入门)
  9. 中南大学计算机学院竞赛,中南大学AIMADS团队获2019中国高校计算机大赛-人工智能创意赛特等奖...
  10. Android setText 出现文本重叠的问题