人工智能大作业


项目github地址链接

人工智能大作业——讨论手写数字识别的几种实现方法

一、实验目的

用多种机器学习方法实现手写数字识别,并比较不同。

二、实验环境

2.1 Python 3.7.6

2.2 Anaconda Spyder IDE

三、实验原理

3.1 线性判别(fisher判别)1

给定训练样本集,设法将样例投影到一条直线上,是的同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。

给定数据集 D = { ( x i , y i ) } i = 1 m , y i ∈ { 0 , 1 } D=\{(\boldsymbol x_i,y_i)\}_{i=1}^m,y_i \in \{0,1\} D={ (xi,yi)}i=1m,yi{ 0,1},令 X i X_i Xi μ i \boldsymbol \mu_i μi Σ i \boldsymbol \Sigma_i Σi分别表示第 i ∈ { 0 , 1 } i \in \{0,1\} i{ 0,1}类示例的集合、均值向量、协方差矩阵。若将数据投影到直线 w \boldsymbol w w上,则两类样本的中心在直线上的投影分别为 w T μ 0 \boldsymbol w^T\mu_0 wTμ0 w T μ 1 \boldsymbol w^T\mu_1 wTμ1;若将所有样本点都投影到直线上,则两类样本的协方差分布为 w T Σ 0 w \boldsymbol w^T\boldsymbol\Sigma_0\boldsymbol w wTΣ0w w T Σ 1 w \boldsymbol w^T\boldsymbol\Sigma_1\boldsymbol w wTΣ1w

欲使同类样例的投影尽可能接近,可以让同类样例投影点的协方差尽可能小,即 w T Σ 0 w + w T Σ 1 w \boldsymbol w^T\boldsymbol\Sigma_0\boldsymbol w+\boldsymbol w^T\boldsymbol\Sigma_1\boldsymbol w wTΣ0w+wTΣ1w尽可能小;而欲使异类样例的投影点尽可能远离,可以让类中心之间的距离尽可能大,即 ∥ w T μ 0 − w T μ 1 ∥ 2 2 \| \boldsymbol w^T\boldsymbol\mu_0-\boldsymbol w^T\boldsymbol\mu_1\|_2^2 wTμ0wTμ122尽可能大。同时考虑二者,则可得到最大化目标
J = ∥ w T μ 0 − w T μ 1 ∥ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( Σ 0 + Σ 1 ) w   . (1) \begin{aligned} \\ J &=\frac{\| \boldsymbol w^T\boldsymbol\mu_0-\boldsymbol w^T\boldsymbol\mu_1\|_2^2}{\boldsymbol w^T\boldsymbol\Sigma_0\boldsymbol w+\boldsymbol w^T\boldsymbol\Sigma_1\boldsymbol w}\\ &=\frac{\boldsymbol w^T(\boldsymbol\mu_0-\boldsymbol\mu_1)(\boldsymbol\mu_0-\boldsymbol\mu_1)^T\boldsymbol w}{\boldsymbol w^T(\boldsymbol\Sigma_0+\boldsymbol\Sigma_1)\boldsymbol w} \ . \tag{1} \end{aligned} J=wTΣ0w+wTΣ1wwTμ0wTμ122=wT(Σ0+Σ1)wwT(μ0μ1)(μ0μ1)Tw .(1)
定义“类内散度矩阵”
S w = Σ 0 + Σ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T   , (2) \begin{aligned} S_{\boldsymbol w} &=\boldsymbol \Sigma_0+\boldsymbol \Sigma_1 \\ &=\sum_{\boldsymbol x \in X_0}(\boldsymbol x-\boldsymbol \mu_0)(\boldsymbol x-\boldsymbol \mu_0)^T+\sum_{\boldsymbol x \in X_1}(\boldsymbol x-\boldsymbol \mu_1)(\boldsymbol x-\boldsymbol \mu_1)^T \ , \tag{2} \end{aligned} Sw=Σ0+Σ1=xX0(xμ0)(xμ0)T+xX1(xμ1)(xμ

  • 7
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作业一(Matlab) 假设x=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20),y=( 2.94, 4.53, 5.96, 7.88, 9.02, 10.94, 12.14, 13.96, 14.74, 16.68, 17.79, 19.67, 21.20, 22.07, 23.75, 25.22, 27.17, 28.84, 29.84, 31.78).请写出拟合的直线方程,并画图(包括原数据点及拟合的直线),请打印出来。 请使用线性回归模型来拟合bodyfat数据。数据集介绍可阅读:https://www.mathworks.com/help/nnet/examples/body-fat-estimation.html 在matlab中,在命令行中输入[X,Y] = bodyfat_dataset; 即可获得一个拥有13个属性,252个样本的数据集。使用前200个样本来获得模型,并写出你所获得的模型。使用后52个样本做测试,汇报你所获得的泛化误差。 编程实现对数回归,并给出教材89页上的西瓜数据集3.0上的结果。要求采用4折交叉验证法来评估结果。因为此处一共17个样本,你可以去掉最后一个样本,也可以用所有数据,然后测试用5个样本。在汇报结果时,请说明你的选择。请在二维图上画出你的结果(用两种不同颜色或者形状来标注类别),同时打印出完整的代码。 作业二 采用信息增益准则,基于表4.2中编号为1、2、3、6、7、9、10、14、15、16、17的11个样本的色泽、根蒂、敲声、文理属性构建决策树。(本次作业可以用笔算,鼓励编程实现,但都需要列出主要步骤,其中log2(3)=1.585,log2(5)=2.322,log2(6)=2.585,log2(7)=2.807,log2(9)=3.17,log2(10)=3.322,log2(11)=3.459) 用表4.2中编号为4、5、8、11、12、13的样本做测试集,对上题的训练数据采用预剪枝策略构建决策树,并汇报验证集精度。 用表4.2中编号为4、5、8、11、12、13的样本做测试集,对题1所构建的决策树进行后剪枝,并汇报验证集精度。 作业三(Matlab) 试编程实现累积BP算法,在西瓜数据集2.0上(用训练数据)训练一个单隐层网络,用验证集计算出均方误差。要自己实现,不能直接调用现成的库函数。 作业四 下载并安装libsvm,http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ,在西瓜数据集3.0a上分别用线性核训练一个SVM。用正类1-6和负类9-14作为训练集,其余作为测试集。C取不同的值,其它参数设为默认值。作出测试正确率随C取值变化的图,C=[1 100 10000 10^6 10^8]。 换成高斯核(宽度设为1),重复上题的步骤。 作业五 以西瓜数据集2.0(见教材76页表4.1)中样本1--16为训练集训练一个朴素贝叶斯分类器,对测试样本17进行分类。请写出详细的计算过程。 假设x_k是一个班上学生的分数,对应的分数及其分布是 x_1=30, P1=0.5,一共有14个学生; x_2=18, P2=mu,有6个学生; x_3=20, P3=2mu,有9个学生; x_4=23, P4=0.5-3mu,有10个学生; 通过最大对数似然法求出mu的值。 作业六(Python) 1 使用PCA对Yale人脸数据集进行降维,并分别观察前20、前100个特征向量所对应的图像。请随机选取3张照片来对比效果。数据集http://vision.ucsd.edu/content/yale-face-database

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值