LDA 与 KNN 算法

https://github.com/zhanw15/LDA-and-KNN

how to use it

============= how to use LDA =====================  Input && Target is Matrix we know it's target.  W = LDA( Input, Target);  Data = Input*W;Data is dimension-reduced by LDA.
==================================================
============= how to use KNN =====================  Data is the test Matrix. We get it target by knn.  Input && Target is Matrix we know it's target.  k is the most nearst k neighbour.  Result = KNN( Data, Input, Target, k);
==================================================

LDA.m

% LDA - MATLAB subroutine to perform linear discriminant analysis
% by Will Dwinnell and Deniz Sevis
% modified at 29-Oct-2018 by zhanw15function W = LDA(Input,Target)% Determine size of input data[n,m] = size(Input);% Discover and count unique class labels 统计不同类别ClassLabel = unique(Target);k = length(ClassLabel);% InitializenGroup     = NaN(k,1);           % Group counts        各类容量GroupMean  = NaN(k,m);           % Group sample means  各属性均值Sw         = zeros(m,m);         % Pooled covarianceSb         = zeros(m,m);         % Sbu          = zeros(1,m);         % All sample means% Loop over classes to perform intermediate calculations 计算Swfor i = 1:k% Establish location and size of each class 标识当前类 && 计算类容量Group      = (Target == ClassLabel(i));nGroup(i)  = sum(double(Group));% Calculate group mean vectors 计算各类各属性均值GroupMean(i,:) = mean(Input(Group,:));% Accumulate pooled covariance information 计算SwSw = Sw + (nGroup(i) - 1).* cov(Input(Group,:));u = u + nGroup(i)*GroupMean(i,:)/n; % 计算均值endfor i = 1:k     % 计算 SbSb = Sb + nGroup(i)*( GroupMean(i,:)-u)'*( GroupMean(i,:)-u);end% 对特征向量进行排序[t,a] =        eig( Sb, Sw);b     = [ abs(diag(a)), t'];% 按照特征值大小对特征向量进行排序,并选择特征向量b = sortrows(     b,   'descend')';W =        b( 2:m+1,       1:k-1) ;end% EOF

KNN.m

% KNN k近邻算法 matlab实现
% add at 21-Apr-2019 by zhanw15
% ============= how to use it ======================
%% Data is the test Matrix. We get it target by knn.
%%
%% Input && Target is Matrix we know it's target.
%% k is the most nearst k neighbour.
%%
%% Result = KNN( Data, Input, Target, k);
% ==================================================function Result = KNN( Data, Input, Target, k)% Determine size of input anddata[n,~] = size(Input);[m,~] = size( Data);% Initialize, nSum is the total right targetResult = 0;% Loop over every line to computing accuracyfor i = 1:m% computing distance between every lineDis = repmat(Data(i,:),[n,1]) - Input;% sort to find the min k distance[~,I] = sort(sum(Dis.^2,2));% find the most show time of targetResult = [Result; mode(Target(I(1:k)))];endend% EOF

LDA 与 KNN 算法相关推荐

  1. 【基础机器学习算法原理与实现】使用感知器算法LDA、最小二乘法LSM、Fisher线性判别分析与KNN算法实现鸢尾花数据集的二分类问题

    本文设计并实现了PerceptronLA.PseudoIA.LeastSM.LinearDA.KNN等五个算法类,以及DataProcessor的数据处理类.对感知器算法LDA.最小二乘法LSM的伪逆 ...

  2. 机器学习与深度学习——通过knn算法分类鸢尾花数据集iris求出错误率并进行可视化

    什么是knn算法? KNN算法是一种基于实例的机器学习算法,其全称为K-最近邻算法(K-Nearest Neighbors Algorithm).它是一种简单但非常有效的分类和回归算法. 该算法的基本 ...

  3. 机器学习(6)KNN算法(K-近邻算法)

    目录 一.基础理论 1.估计器 1.生成模型 2. 模型评估 2.KNN基础 3.API 二.过程 1.获取数据 2.划分数据集 3.特征工程(标准化) 4.KNN算法预估器 4-1.得到预估器 4- ...

  4. 机器学习 KNN算法实践

    作者 | 叶庭云 来源 | 修炼Python 头图 | 下载于视觉中国 KNN算法简介 KNN(K-Nearest Neighbor)最邻近分类算法是数据挖掘分类(classification)技术中 ...

  5. 教你用OpenCV实现机器学习最简单的k-NN算法

    前言:OpenCV 的构建是为了提供计算机视觉的通用基础接口,现在已经成为经典和最优秀的计算机视觉和机器学习的综合算法工具集.作为一个开源项目,研究者.商业用户和政府部门都可以轻松利用和修改现成的代码 ...

  6. knn聚类还是分类_数据分析基本算法模型之KNN算法

    最近失业了...sad 休息了一个月,然后就想着找工作的事情.浏览了一些职位的JD,发现上面都会写了解机器学习算法模型,掌握回归.分类.聚类balabala.这就让我有点蛋疼了,这些在之前工作上都没怎 ...

  7. 机器学习:基于Knn算法的用户属性判断方案设计

    本文作者通过Knn算法进行了一次用户判断预测的流程,文章为作者根据自身经验所做出的总结,希望通过此文能够加深你对Knn算法的认识. knn算法简介 K最近邻(k-Nearest Neighbor,KN ...

  8. KNN算法的机器学习基础

    KNN算法的机器学习基础 https://mp.weixin.qq.com/s/985Ym3LjFLdkmqbytIqpJQ 本文原标题 : Machine Learning Basics with ...

  9. 通过KNN算法,确定球星的风格(很水)

    KNN算法,故名思议,K个最邻近值的分类算法.监督学习中的一种,典型的懒人算法,通过计算所有的预测样本到学习样本的距离,选取其中K个最小值加入样本组中,样本组中的样本隶属于那个分类的个数最多,那么我们 ...

最新文章

  1. 某程序员吐槽:潮汕女朋友狮子大开口要18万8彩礼,而且只能男友父母出,不能男友出!...
  2. 使用HTML+CSS实现鼠标划过的二级菜单栏
  3. 提供openssl -aes-256-cbc兼容加密/解密的简单python函数
  4. java闭包lambda,闭包在groovy vs闭包在java 8(lambda表达式)?
  5. Rundll32使用技巧
  6. TypeError: Expected bytes错误解决方法
  7. 深入理解分布式系统中的缓存架构(下)
  8. 使用Java中的FileChannel和ByteBuffer在文件中读取/写入文件
  9. linux找不到动态链接库 .so文件的解决方法
  10. Linux: shell 中命令代换 $() 和 ``(有图有代码有真相!!!)
  11. Calypso - Android和Evolution下的CalDAV/CardDAV/Web...
  12. Python监视进程创建情况和系统服务状态
  13. SAP License:更改物料基本计量单位
  14. jsp页面 字体颜色 白色_CSS 文本字体颜色(CSS color)
  15. 红米AirDots无线蓝牙耳机成功连接WIN7电脑
  16. 稳压二极管的原理和伏安特性
  17. highcharts pie ajax,Basic Pie
  18. C语言fflush方法
  19. img lazyload chrome
  20. 2018秋招面试经验(测试开发、产品)

热门文章

  1. Git:Terminal is dumb, but EDITOR unset
  2. C++11绑定器bind及function机制
  3. 【转载】win10环境下,利用自带虚拟机hyper-v安装centos7方法详解
  4. 创益德:30条APP开发商必懂原则话您知
  5. CPU卡PSAM卡 响应指令错误码
  6. rest_framework学习之解析器(Parsers)
  7. AdapterViewFlipper实现跑马灯横幅广告滚动效果
  8. 域名微信拦截html代码,多域名下获取微信openId,通过拦截器注解实现,减少代码量以及业务混淆...
  9. 搭建react + typescript + airbnb eslint 项目
  10. 基于 Flutter 视频客户端 Vistor【已开源】