计算流程在线性判别分析LDA原理总结文章总结了

计算类内间散度矩阵的原理是计算类内间散度矩阵

有了算法步骤和计算所需要的公式,可以实现代码:

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_irisdef LDA(X, y, nComponents):'''输入:X为数据集(m*n),y为label(m*1),nComponents为目标维数输出:W 矩阵(n * nComponents)'''#set():剔除矩阵y里的重复元素,化为集合的形式labels = list(set(y))  # list():将其转化为列表xClasses = {}  # 索引for label in labels:xClasses[label] = np.array([X[i] for i in range(len(X)) if y[i] == label])  # list解析# 整体均值meanAll = np.mean(X, axis=0)  # 按列求均值,结果为1*n(行向量)meanClasses = {}# 求各类均值for label in labels:meanClasses[label] = np.mean(xClasses[label], axis=0)  # 1*n# 全局散度矩阵St = np.zeros((len(meanAll), len(meanAll)))St = np.dot((X - meanAll).T, X - meanAll)# 求类内散度矩阵# Sw=sum(np.dot((Xi-ui).T, Xi-ui))   i=1...mSw = np.zeros((len(meanAll), len(meanAll)))  # n*nfor i in labels:Sw += np.dot((xClasses[i] - meanClasses[i]).T, (xClasses[i] - meanClasses[i]))# 求类间散度矩阵Sb = np.zeros((len(meanAll), len(meanAll)))  # n*nSb = St - Sw# 求类间散度矩阵# Sb=sum(len(Xj) * np.dot((uj-u).T,uj-u))  j=1...k# Sb=np.zeros((len(meanAll), len(meanAll) )) # n*n# for i in labels:#     Sb+= len(xClasses[i]) * np.dot( (meanClasses[i]-meanAll).T.reshape(len(meanAll),1),#                                     (meanClasses[i]-meanAll).reshape(1,len(meanAll))#                                )# 计算Sw-1*Sb的特征值和特征矩阵eigenValues, eigenVectors = np.linalg.eig(np.dot(np.linalg.inv(Sw), Sb))# 提取前nComponents个特征向量sortedIndices = np.argsort(eigenValues)  # 特征值排序W = eigenVectors[:, sortedIndices[:-nComponents - 1:-1]]  # 提取前nComponents个特征向量return Wdef main ():# 1.读取数据集iris = load_iris()X = iris.datay = iris.target# 2.LDA特征提取W = LDA(X, y, 2)  # 得到投影矩阵newX = np.dot(X, W)  # (m*n) *(n*k)=m*k# 3.绘图plt.scatter(newX[:, 0], newX[:, 1], c=y, marker='o')  # c=y,plt.title('LDA')plt.show()if '__main__' == __name__:main()

实现一下模式识别(三)FLD相关推荐

  1. matlab中阈值计算方法,三种阈值计算方法在MatLab6.5中的实现

    2007 年 10 月 湘南学院学报 Oct. ,2007 第 28 卷第 5 期 Journal of Xiangnan University Vol. 28 No. 5 收稿日期 :2007 - ...

  2. 汇编 浮点指令FLD,FSTP,FADD与FPU寄存器

    知识点:  浮点数的存放方式  st0至st7  FLD,FST,FADD指令一.浮点数的存放方式 00401000 /$ 55 PUSH EBP 00401001 |. 8BEC MOV EB ...

  3. 模式识别技术,目前主要应用于哪几方面?

    文字识别 汉字已有数千年的历史,也是世界上使用人数最多的文字,对于中华民族灿烂文化的形成和发展有着不可磨灭的功勋.所以在信息技术及计算机技术日益普及的今天,如何将文字方便.快速地输入到计算机中已成为影 ...

  4. 利用OpenCV的Haar特征目标检测方法进行人脸识别的尝试(一)

    一.前言 由于还处于学习阶段,大多数内容都是从网上学习借鉴的,重复的内容就不多赘述,只是将自己的经验和想法分享出来.感觉不错的学习资源如下 http://www.cnblogs.com/tornado ...

  5. 机器学习的方法排名靠前的十种方法介绍

    1.回归算法 在大部分机器学习课程中,回归算法都是介绍的第一个算法.原因有两个: 一.回归算法比较简单,介绍它可以让人平滑地从统计学迁移到机器学习中.二.回归算法是后面若干强大算法的基石,如果不理解回 ...

  6. 什么是深度学习,深度学习和机器学习之间,主要有什么区别

    在深度学习中,计算机模型学习直接从图像.文本或声音中执行分类任务.深度学习模式可以达到新的精确度,有时甚至超过人类的表现.大多数深度学习方法使用神经网络的架构,这也是深度学习模型通常被称为深度神经网络 ...

  7. 机器学习技术在日常生活和商业领域的应用有哪些,主要带来了什么商业收益?

    简而言之,机器学习将实现人.业务.物三者的智能连接,孕育客户与企业之间的全新互动场景,最终催生出真正的智能公司.为了充分发挥机器学习的应用潜力,我们需要营造现代化的商业环境,但前提是企业必须了解人工智 ...

  8. 中南大学自动化学院控制博士申请经验贴

    此贴旨在分享一下中南大学自动化学院博士考核的流程,尤其对于外校考生了解一下要具体准备的内容. 当然本人虽然参加了中南的博士申请考核,但最终还是选择了北航升学. 需要注意的是中南没有笔试环节,但在面试过 ...

  9. 机器学习和大数据的基本介绍,两者之间有什么联系?

    大数据的定义 大数据(bigdata),指无法在定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的信息资 ...

  10. 基于MATLAB的验证码识别

    摘要:验证码是各大网站用以防范计算机自动程序恶意攻击的手段之一.通过使用数字图像处理中的图片分割.开闭运算等手段,能够识别绝大部分网站的验证码.对验证码识别技术的研究,既能及早发现验证码的漏洞,也能对 ...

最新文章

  1. JVM(2)之 JAVA堆
  2. python导入csv文件-Python从CSV文件导入数据和生成简单图表
  3. long 比较大小_Long-Term Feature Banks
  4. 取两个日期相差几年_干货~44个最常用的日期和时间类函数组合
  5. boost::geometry::tuples用法的测试程序
  6. 现代软件工程 作业 结对编程 模板
  7. Spring Batch 批量处理策略
  8. python删除列表元素 // 列表的切片
  9. 程序员如何才算真正的高效编程?
  10. day2-python工具的选择使用
  11. Three20 NetWork
  12. JMeter Exception: java.net.BindException: Address already in use: connect(转)
  13. 免费后台挂尔雅浏览器下载及使用教程
  14. 彻底删除vmware
  15. 读后感之悟道-一位20年IT高管的职场心得
  16. 如何解决app store显示invalid address的问题
  17. 微信小程序开发,微信小程序轻松实现微信支付及微信提现到零钱功能
  18. java list里数据用逗号结合
  19. 【机器学习】机器学习30个笔试题
  20. lougu T7983 大芳的逆行板载

热门文章

  1. 智能硬件APP开发之路:基于机智云APP开源框架
  2. 大家好,我叫小K,初来乍到 请多多关照~
  3. 概率统计·参数估计【矩估计、极大似然估计、无偏性、有效性、相合性】
  4. 电脑桌面加html格式壁纸,巧妙使用IDM获取精美电脑桌面壁纸
  5. linux 启动 grub 修复工具,当Ubuntu无法启动时,如何修复GRUB2?
  6. Highest Scoring Word
  7. c语言 url字符串解析,c语言截取下载url中文件名称
  8. 精确率/召回率/准确率
  9. java 正则替换以 开头_String replaceAll-正则匹配-截取以指定字符开头,以指定字符结尾的字符串...
  10. Python——读取xlsx格式的Excel表格