现在我们回到LDA的原理上,我们在第一节说讲到了LDA希望投影后希望同一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大,但是这只是一个感官的度量。
现在我们首先从比较简单的二类LDA入手,严谨的分析LDA的原理。
    假设我们的数据集D={(x1,y1),(x2,y2),...,((xm,ym))}D={(x1,y1),(x2,y2),...,((xm,ym))},其中任意样本xixi为n维向量,yi∈{0,1}yi∈{0,1}。
我们定义Nj(j=0,1)Nj(j=0,1)为第j类样本的个数,Xj(j=0,1)Xj(j=0,1)为第j类样本的集合,而μj(j=0,1)μj(j=0,1)为第j类样本的均值向量,定义Σj(j=0,1)Σj(j=0,1)为第j类样本的协方差矩阵(严格说是缺少分母部分的协方差矩阵)。
    μjμj的表达式为:μj=1Nj∑x∈Xjx(j=0,1)μj=1Nj∑x∈Xjx(j=0,1)    ΣjΣj的表达式为:Σj=∑x∈Xj(x−μj)(x−μj)T(j=0,1)Σj=∑x∈Xj(x−μj)(x−μj)T(j=0,1)    由于是两类数据,因此我们只需要将数据投影到一条直线上即可。
假设我们的投影直线是向量ww,则对任意一个样本本xixi,它在直线ww的投影为wTxiwTxi,对于我们的两个类别的中心点μ0,μ1μ0,μ1,在在直线ww的投影为wTμ0wTμ0和wTμ1wTμ1。
由于LDA需要让不同类别的数据的类别中心之间的距离尽可能的大,也就是我们要最大化||wTμ0−wTμ1||22||wTμ0−wTμ1||22,同时我们希望同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的协方差wTΣ0wwTΣ0w和wTΣ1wwTΣ1w尽可能的小,即最小化wTΣ0w+wTΣ1wwTΣ0w+wTΣ1w。
综上所述,我们的优化目标为:argmaxwJ(w)=||wTμ0−wTμ1||22wTΣ0w+wTΣ1w=wT(μ0−μ1)(μ0−μ1)TwwT(Σ0+Σ1)wargmax⏟wJ(w)=||wTμ0−wTμ1||22wTΣ0w+wTΣ1w=wT(μ0−μ1)(μ0−μ1)TwwT(Σ0+Σ1)w    我们一般定义类内散度矩阵SwSw为:Sw=Σ0+Σ1=∑x∈X0(x−μ0)(x−μ0)T+∑x∈X1(x−μ1)(x−μ1)TSw=Σ0+Σ1=∑x∈X0(x−μ0)(x−μ0)T+∑x∈X1(x−μ1)(x−μ1)T    同时定义类间散度矩阵SbSb为:Sb=(μ0−μ1)(μ0−μ1)TSb=(μ0−μ1)(μ0−μ1)T    这样我们的优化目标重写为:argmaxwJ(w)=wTSbwwTSwwargmax⏟wJ(w)=wTSbwwTSww    仔细一看上式,这不就是我们的广义瑞利商嘛!这就简单了,利用我们第二节讲到的广义瑞利商的性质,我们知道我们的J(w)J(w)最大值为矩阵S−12wSbS−12wSw−12SbSw−12的最大特征值,而对应的ww为S−12wSbS−12wSw−12SbSw−12的最大特征值对应的特征向量!而S−1wSbSw−1Sb的特征值和S−12wSbS−12wSw−12SbSw−12的特征值相同,S−1wSbSw−1Sb的特征向量w′w′和S−12wSbS−12wSw−12SbSw−12的特征向量ww满足w′=S−12www′=Sw−12w的关系!    注意到对于二类的时候,SbwSbw的方向恒为μ0−μ1μ0−μ1,不妨令Sbw=λ(μ0−μ1)Sbw=λ(μ0−μ1),将其带入:(S−1wSb)w=λw(Sw−1Sb)w=λw,可以得到w=S−1w(μ0−μ1)w=Sw−1(μ0−μ1),也就是说我们只要求出原始二类样本的均值和方差就可以确定最佳的投影方向ww了。
2024/7/30 21:57:26 3KB MATLAB 人脸识别 LDA knn
1
Description问题描述:在一个按照东西和南北方向划分成规整街区的城市里,n个居民点散乱地分布在不同的街区中。
用x坐标表示东西向,用y坐标表示南北向。
各居民点的位置可以由坐标(x,y)表示。
街区中任意2点(x1,y1)和(x2,y2)之间的距离可以用数值|x1-x2|+|y1-y2|度量。
居民们希望在城市中选择建立邮局的最佳位置,使n个居民点到邮局的距离总和最小。
编程任务:给定n个居民点的位置,编程计算n个居民点到邮局的距离总和的最小值。
Input输入由多组测试数据组成。
每组测试数据输入的第1行是居民点数n,1≤n≤10000。
接下来n行是居民点的位置,每行2个整数x和y,-10000≤x,y≤10000。
Output对应每组输入,输出的第1行中的数是n个居民点到邮局的距离总和的最小值。
SampleInput51222133-233SampleOutput10
2024/7/14 20:58:08 1KB 邮局选址问题
1
STM8L05单片机+LT89202.4G无线通信抢答器(硬件+源码+设计文档等全部资料),PROTEL99SE设计的硬件文件,包括原理图PCB,已制作样板测试,可以做为你的设计参考。
本验证板由LT8920和STM8L051组成,主要演示2.4G的无线收发通信实验。
本演示,需要两个PCBA,一个板做发射,另外一个板做接收。
硬件都一样的,只是烧录进单片机的软件不同(一个是Tx的HEX文件,另外一个是Rx的HEX文件)。
为了使用正常使用这个PCB空板,请大家按照一下步骤进行操作:第1步:根据BOM表,焊接出PCBA。
焊接过程中,需要注意的是Y1,C1,C2不用焊接,
1
等高线追踪基于TIN绘制等高线直接利用原始观测数据,避免了DTM内插的精度损失,因而等高线精度较高;
对高程注记点附近的较短封闭等高线也能绘制;
绘制的等高线分布在采样区域内而并不要求采样区域有规则四边形边界。
而同一高程的等高线只穿过一个三角形最多一次,因而程序设计也较简单。
但是,由于TIN的存贮结构不同,等高线的具体跟踪算法跟踪也有所不同。
基于三角形搜索的等高线绘制算法如下:对于记录了三角形表的TIN,按记录的三角形顺序搜索。
其基本过程如下:1)对给定的等高线高程h,与所有网点高程zi(i=1,2,?,n),进行比较,若zi=h,则将zi加上(或减)一个微小正数ε>0(如ε=10-4),以使程序设计简单而又不影响等高线的精度。
2)设立三角形标志数组,其初始值为零,每一元素与一个三角形对应,凡处理过的三角形将标志置为1,以后不再处理,直至等高线高程改变。
3)按顺序判断每一个三角形的三边中的两条边是否有等高线穿过。
若三角形一边的两端点为P1(x1,y1,z1),P2(x2,y2,z2)则(z1-h)(z2-h)0表明该边无等高线点。
直至搜索到等高线与网边的第一个交点,称该点为搜索起点,也是当前三角形的等高线进入边、线性内插该点的平面坐标(x,y):
2023/11/9 22:08:01 1.42MB 等高线 AutoCAD C#
1
源代码:#include#include#include#include#definePI3.1415926/*定义常量*/#defineUP0x4800/*上移↑键:修改时间*/#defineDOWN0x5000/*下移↓键:修改时间*/#defineESC0x11b/*ESC键:退出系统*/#defineTAB0xf09/*TAB键:移动光标*//*函数声明*/intkeyhandle(int,int);/*键盘按键判断,并调用相关函数处理*/inttimeupchange(int);/*处理上移按键*/inttimedownchange(int);/*处理下移按键*/intdigithour(double);/*将double型的小时数转换成int型*/intdigitmin(double);/*将double型的分钟数转换成int型*/intdigitsec(double);/*将double型的秒钟数转换成int型*/voiddigitclock(int,int,int);/*在指定位置显示时钟或分钟或秒钟数*/voiddrawcursor(int);/*绘制一个光标*/voidclearcursor(int);/*消除前一个光标*/voidclockhandle();/*时钟处理*/doubleh,m,s;/*全局变量:小时,分,秒*/doublex,x1,x2,y,y1,y2;/*全局变量:坐标值*/structtimet[1];/*定义一个time结构类型的数组*/main(){intdriver,mode=0,i,j;driver=DETECT;/*自动检测显示设备*/initgraph(&driver,&mode,"");/*初始化图形系统*/setlinestyle(0,0,3);/*设置当前画线宽度和类型:设置三点宽实线*/setbkcolor(0);/*用调色板设置当前背景颜色*/setcolor(9);/*设置当前画线颜色*/line(82,430,558,430);line(70,62,70,418);line(82,50,558,50);line(570,62,570,418);line(70,62,570,62);line(76,56,297,56);line(340,56,564,56);/*画主体框架的边直线*//*arc(intx,inty,intstangle,intendangle,intradius)*/arc(82,62,90,180,12);arc(558,62,0,90,12);setlinestyle(0,0,3);arc(82,418,180,279,12);setlinestyle(0,0,3);arc(558,418,270,360,12);/*画主体框架的边角弧线*/setcolor(15);outtextxy(300,53,"CLOCK");/*显示标题*/setcolor(7);rectangle(342,72,560,360);/*画一个矩形,作为时钟的框架*/setwritemode(0);/*规定画线的方式。
mode=0,则表示画线时将所画位置的原来信息覆盖*/setcolor(15);outtextxy(433,75,"CLOCK");/*时钟的标题*/setcolor(7);line(392,310,510,310);line(392,330,510,330);arc(392,320,90,270,10);arc(510,320,270,90,10);/*绘制电子动画时钟下的数字时钟的边框架*//*绘制数字时钟的时分秒的分隔符*/setcolor(5);for(i=431;i<=470;i+=39)for(j=317;j<=324;j+=7){setlinestyle(0,0,3);circle(i,j,1);/*以(i,y)为圆心,1为半径画圆*/}setcolor(15);line(424,315,424,325);/*在运行电子时钟前先画一个光标*//*绘制表示小时的圆点*/for(i=0,m=0,h=0;i<=11;i++,h++){x=100*sin(
2023/8/25 8:11:27 142KB c语言实现电子时钟 课程设计
1
本文实例为大家分享了用简单的神经网络来训练和测试的具体代码,供大家参考,具体内容如下刚开始学习tf时,我们从简单的地方开始。
卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第一个例子,就从神经网络开始。
神经网络没有卷积功能,只有简单的三层:输入层,隐藏层和输出层。
数据从输入层输入,在隐藏层进行加权变换,最后在输出层进行输出。
输出的时候,我们可以使用softmax回归,输出属于每个类别的概率值。
借用极客学院的图表示如下:其中,x1,x2,x3为输入数据,经过运算后,得到三个数据属于某个类别的概率值y1,y2,y3.用简单的公式表示如下:在训练过程中,我们将
2023/8/12 13:08:11 96KB fl flow mnist
1
设计8088最小系统要求:1、用8088CPU,配置8284时钟芯片,提供CLK、READY、RESET信号。
8284芯片及周围器件参数见教材。
2、用3片74LS373做地址总线分离器,分离出20根地址线A0~A193、用1片74LS245做双向数据总线驱动器。
4、配置32KROM(27C256),用作BIOS存储器5、配置2*32KRAM(62256)为系统内存储器 6、配置标准I/O接口,总线包括:D0~D7、A0~A2、WR、RD、CS。
7、注意ALE、DT/R 、DEN控制线的用法8、3片存储器的片选可用3-8译码器的输出Y0、Y1、Y2控制,Y4可接I/O的片选.9、IO/M,WR、RD、可通过逻辑或门得到两组独立的读写线,分别控制内存和I/O的读写操作10、注意MN/MX引脚的处理,CPU其他未用的引脚可以不画11、按工程制图标注电路中各芯片的型号、引脚功能和引脚号,不可用总线或简化画法。
2023/8/10 10:23:27 58KB 微机原理制图
1
x=[00.10.160.270.410.480.590.8];y=[59701181001705];y1=[22.822.822.822.822.822.822.822.8];values1=spcrv([[x(1)xx(end)];[y(1)yy(end)]],3,1000);values2=spcrv([[x(1)xx(end)];[y1(1)y1y1(end)]],3,1000);plot(values1(1,:),values1(2,:),'r',values2(1,:),values2(2,:),'b')
2023/8/8 15:21:55 33KB matlab绘图,平滑曲线
1
voidBresenham(intx0,inty0,intx1,inty1){ intdx,dy,d,up,down,x,y; if(x0>x1){ x=x1;x1=x0;x0=x; y=y1;y1=y0;y0=y; } dx=x1-x0;dy=y1-y0; d=dx-2*dy; up=2*dx-2*dy; down=-2*dy; if(dy>0&&abs(dy)-abs(dx)>0){ x=x0;x0=y0;y0=x0; y=x1;x1=y1;y1=x1; } if(dy0){ x=x0;x0=-y0;y0=x0; y=x1;x1=-y1;y1=x1; } if(dy<0&&abs(dy)-abs(dx)<0){ x0=-x0;x1=-x1; } while(x0<=x1){ putpixel(x0,y0); x0++; if(d<0){ y0++; d+=up; } elsed+=down; }}
2023/7/30 4:08:38 2KB Bresenham
1
匿名四轴飞控原理图+PCB文件,可直接打样制作四轴翱翔器。
及匿名独家视频教学以及阅历分享匿名科创--室内视觉定位演示https://v.youku.com/v_show/id_XOTE0MTIyNjEy.html?from=y1.7-1.2『匿名四轴』地面站外场调试飞交使用视频https://v.youku.com/v_show/id_XODA2NTg3NzQ4.html?from=y1.7-1.2『匿名四轴』匿名科创--分享四轴调试平台--万向云台https://v.youku.com/v_show/id_XNzUzMTcwNDU2.html?from=y1.7-1.2『匿名四轴』匿名飞控V2版--狭窄空间翱翔https://v.youku.com/v_show/id_XNzUyOTI0Mzg4.html?from=y1.7-1.2『匿名科创』RTT工程教学--20131206https://v.youku.com/v_show/id_XNjQ0NTk0Mjc2.html?from=y1.7-2『匿名四轴』开源飞控C语言源码教学https://v.youku.com/v_show/id_XNjAyMjgwNDU2.html?from=y1.7-2『匿名四轴』--地面站教学0513--总体介绍https://www.tudou.com/programs/view/4tyajcXBWLU/『匿名四轴』--地面站教学0513--底子收发+低级收码https://www.tudou.com/programs/view/lEjU0VjP3y4/『匿名四轴』--地面站教学0513--Excel写入https://www.tudou.com/programs/view/Apta_cbUXxA/『匿名四轴』--地面站教学0513--波形展现https://www.tudou.com/programs/view/Y8fqutrQpMo/『匿名四轴』--地面站教学0513--外形展现https://www.tudou.com/programs/view/QvCWglriJQs/『匿名四轴』--地面站教学0513--飞控配置https://www.tudou.com/programs/view/oWiOjcxSW9g/
2023/5/12 21:13:17 14.01MB 飞控原理图 飞控PCB
1
共 18 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡