
数据挖掘
文章平均质量分 81
lengo
这个作者很懒,什么都没留下…
展开
-
特征选择之卡方统计 Chi-Square
%%% dataset中的最后一列为分类类别,k为要选择的特征个数function result=chiAttributeEva(dataset,k)% character_ordercharacter_order=[];% the count of classesclasses=unique(dataset(:,size(dataset,2)));n=size(dat原创 2016-03-25 20:15:13 · 7698 阅读 · 1 评论 -
一元概率层次聚类
本文依据《数据挖掘概念与技术》中的概率层次聚类算法而来,但与其略有不同。概率层次聚类是利用概率模型来度量簇之间的距离,本质是实现簇之间的合并。本算法需要一个前提条件,数据集被事先分为一些簇,并且没有单个点簇的情况,同时,数据是符合正太分布的。另外,与原书不同的是,本文增加了一个参数:簇合并门限。算法的伪代码如下:设定簇合并门限th计算所有簇的最大似然值PCwhile 1 寻找可以合原创 2018-01-21 12:29:17 · 721 阅读 · 0 评论 -
神经网络之后向传播分类(Classification by Backpropagation)
本算法是根据《数据挖掘概念与技术》第三版中的后向传播分类算法实现而来,中文书籍中有不少细节错误,影响阅读与判断,推荐看原书《Data Mining Concepts and Techniques》第三版。阅读本文需要注意以下两点:一是本文在与原书数据保持一致的情况下构造了输入数据矩阵文件,矩阵的下标与节点是相对应的,这点在程序中做了详细说明;二是While循环条件原书没有具体的设定,而且实验中也只原创 2018-01-06 12:10:55 · 850 阅读 · 0 评论 -
Apriori算法Matlab实现
clc;clear;%最小支持度设定min_sup=2;%最小置信度min_conf=0.7;%读取文件,当前的文件类型是txt文件,事务数据用数字来表示的,测试数据可以用《数据挖掘概念与技术》第三版中的数据为样本fid=fopen('D:\matlabFile\Apriori\dataApriori.txt','r');%记录读取的行号,与实际的事务数相对应,同时为了分配存储空间NumEvent...原创 2016-03-25 16:07:07 · 13089 阅读 · 13 评论 -
Logistic回归分类----梯度上升法
本算法根据《机器学习实战》一书改编而来,原书使用了Python语言所写,自我感觉没有Matlab好用,所以进行了改写。Logistic回归分类是一种常用的分类方法,其基本思想是利用现有数据对分类边界线建立回归公式,以此进行分类。本文的实验数据因为量大,所以放在了网盘上,https://pan.baidu.com/s/1qY9jFsg。以下为实现代码:clc;clear;%加载测试数原创 2018-01-06 17:40:45 · 596 阅读 · 0 评论 -
Logistic回归分类----随机梯度上升法
本文接着上一篇《Logistic回归分类----梯度上升法》,升级为随机梯度上升法。同理,《机器学习实战》一书改编而来,测试数据依然保存在网盘上,https://pan.baidu.com/s/1qY9jFsg。相比梯度上升算法,随机梯度上升算法的优势在于大大减少了循环次数,提高分类的效率。以下为改编的Matlab的程序:clc;clear;%加载测试数据文件,前两列为坐标值,后两列为原创 2018-01-06 20:40:00 · 914 阅读 · 0 评论 -
支持向量机SVM----简化版序列最小优化SMO(Sequential Minimal Optimation)
本算法根据《机器学习实战》中Python版的简化版SMO改编而来,所以详细的过程说明请参照原书,这里只给出了改编后的程序及结果。实验数据数量较大放在云盘上,https://pan.baidu.com/s/1cHJKku。需要注意的问题:因为存在第二个点是随机选择的特征,所以每次实验的结果可能都不会完全一样。以下为实验Matlab代码:clc;clear;%加载测试数据文件,前两列为原创 2018-01-07 14:34:45 · 442 阅读 · 0 评论 -
k-Means算法Matlab实现
clc;clear;%读取数据文件,生成点矩阵fileID = fopen('D:\matlabFile\data.txt'); C=textscan(fileID,'%f %f'); fclose(fileID); %显示数组结果%celldisp(C); %将cell类型转换为矩阵类型,这里只假设原数据为二维属性,且是二维的坐标点 CC_init=cat(2原创 2016-03-25 15:58:14 · 4204 阅读 · 0 评论 -
k-Mediods算法Matlab实现
clc;clear;%读取数据文件,生成点矩阵fileID = fopen('D:\matlabFile\data.txt'); C=textscan(fileID,'%f %f'); fclose(fileID); %显示数组结果%celldisp(C); %将cell类型转换为矩阵类型,这里只假设原数据为二维属性,且是二维的坐标点 CC_init=cat(2原创 2016-03-25 16:01:11 · 4811 阅读 · 67 评论 -
频繁模式挖掘FP-Growth(Frequent Pattern Growth)
本算法参照《数据挖掘概念与技术》第三版(韩家炜)来实现的,算法的伪代码如下(截图):FPGrowth频繁模式挖掘主程序:clc;clear;%最小支持度设定min_sup=2;%最小置信度min_conf=0.9;%读取事物数据,按行读fid=fopen('D:\matlabFile\FPGrowth\dataApriori.txt','r');%记录读...原创 2017-12-03 10:53:43 · 2285 阅读 · 4 评论 -
OPTICS (Ordering points to identify the clustering structure)算法实现
本文依照《数据挖掘概念与技术》第三版OPTICS算法描述,同时借鉴了博主皮果提对OPTICS算法的总结http://blog.youkuaiyun.com/itplus/article/details/10089323,以及本人之前缩写的DBSCAN算法http://blog.youkuaiyun.com/lengo/article/details/78700607综合而来。个人觉得OPTICS算法与DBSCAN算法基本原创 2018-01-25 19:54:31 · 2130 阅读 · 0 评论 -
Kruskal最小生成树(Minimum Spanning Tree)
最近因为任务需要了解了Kruskal最小生成树(Minimum Spanning Tree)算法,算法的描述请参考Kruskal's algorithm,现成的C++代码请参考(Kruskal’s Minimum Spanning Tree using STL in C++),本文是根据上述C++代码改编而来,供广大读者们学习参考:主程序如下:clc;clear;%加载文件,第一、二列数据为顶...原创 2018-05-21 21:03:13 · 825 阅读 · 0 评论 -
二维K-D树的构造及搜索
K-D(K-Dimensional)树在很多聚类算法中都有应用,例如CURE算法。K-D树的构造说明请参考J_Outsider的博文,本文这里只给出其构造代码如下:主程序代码:clc;clear;%读取数据文件,生成点矩阵fileID = fopen('D:\matlabFile\K-D tree\test.txt');C=textscan(fileID,'%f %f');fclo...原创 2018-05-15 22:17:38 · 1765 阅读 · 2 评论 -
支持向量机SVM----完整版序列最小优化SMO(Sequential Minimal Optimation)
本算法根据《机器学习实战》中Python版的完整版SMO改编而来,所以详细的过程说明请参照原书。由于代码量较大,函数较多,所以将整个算法和数据进行了打包,可在云盘上下载链接: https://pan.baidu.com/s/1eS6g0s6 密码: pat5。这里只给出主程序的代码及实验结果。需要注意的是,因为实验具有随机性,每次仿真的结果可能会有一定的差异。以下为实验Matlab代码:原创 2018-01-08 16:19:52 · 406 阅读 · 0 评论 -
CART---回归树
本算法根据《机器学习实战》改编而来,对回归树的详细说明请参照原书,数据的下载地址 https://pan.baidu.com/s/1gfKrBqj,以下为Matlab程序主程序:clc;clear;%加载测试数据文件,前两列为坐标值,后两列为类标号fileID = fopen('D:\matlabFile\CART\CART.txt');DS=textscan(fileID,'%f原创 2018-01-09 11:11:41 · 1364 阅读 · 0 评论 -
特征选择之互信息 Mutual Information
%%% dataset中的最后一列为分类类别,k为要选择的特征个数function result=MutualInformation(dataset,k)% character_ordercharacter_order=[];% the count of classesclasses=unique(dataset(:,size(dataset,2)));characte原创 2016-03-25 20:20:36 · 8116 阅读 · 0 评论 -
Adaboost算法(单层决策树)
本算法是根据《机器学习实战》改编而来,原书是用Phthon写的,后觉得phthon用着不习惯,所以改写matlab,具体含义,参见该书即可,很详细。下面是主程序adaBoost.m:clear;dataArr=[1,2.1;2,1.1;1.3,1;1,1;2,1];classLabels=[1.0,1.0,-1.0,-1.0,1.0]';% adaBoostTrainDS(da原创 2016-08-22 16:59:06 · 3602 阅读 · 0 评论 -
lwlr(局部加权线性回归)
根据《机器学习实战》中的phthon代码改编而来,详细说明参见原书,测试数据都是用的原书数据主程序:lwlr_test.mclc;clear;%高斯核波长k=0.01;%读取数据,fid=fopen('ex0.txt','r');dataset=zeros(1,3);m=size(dataset,1);while(~feof(fid)) linei原创 2016-08-22 17:25:09 · 2580 阅读 · 0 评论 -
期望最大化算法(Expectation Maximum, EM)
本算法根据《数据挖掘概念与技术》第三版(韩家炜)中的期望最大化算法(Expectation Maximum, EM)的步骤来实现的,EM算法属于基于概率模型的聚类的一种,它的主要步骤分为两步:期望步:给定当前的簇中心,每个对象都被指派到簇中心离该对象最近的簇。:给定当前的簇中心,每个对象都被指派到簇中心离该对象最近的簇。最大化步:给定簇指派,对于每个簇,算法调整其中心,使得指派到该簇的对象...原创 2017-12-03 09:52:34 · 2742 阅读 · 2 评论 -
k-最近邻聚类k-Nearest Neighbor
这里只给出k-最近邻聚类k-Nearest Neighbor的实现过程,算法的原理请自行搜索,代码如下:k-最近邻聚类算法的主程序:clc;clear;%读取数据文件,生成点矩阵fileID = fopen('D:\matlabFile\KNN\KNN.txt'); C=textscan(fileID,'%f %f'); fclose(fileID); %显示数组结果 %cell原创 2017-12-03 10:40:08 · 2365 阅读 · 0 评论 -
决策树归纳算法Decision Tree
本算法依据《数据挖掘概念与技术》第三版(韩家炜)中决策树归纳算法Decision Tree来实现的,DT算法的伪代码如下(截图):Decision Tree算法的主程序:clc;clear;%%%% first step----to construct the decision tree, the training tuple data%%%% should be load fi原创 2017-12-03 11:14:41 · 1144 阅读 · 0 评论 -
Delaunay三角网格生成
本文给出了Delaunay三角网格的生成算法,写本算法的本意是能利用Delaunay三角网格构成k阶最紧邻图,进而为Chameleon变色龙算法的实现打下基础,不足的地方请大家批评,具体Delaunay三角网格生成步骤请大家自行搜索,这里只给出了实现代码:Delaunay三角网格生成主程序:clc;clear;%读取数据文件,生成点矩阵fileID = fopen('D:\matlabF原创 2017-12-03 11:32:51 · 6389 阅读 · 3 评论 -
DBScan算法
本文依据《数据挖掘概念与技术》第三版(韩家炜)中的DBScan算法来实现的,其伪代码如下(截图):因为实验的需要,本文用经纬度数据作为测试数据,该距离计算参考了博主的文章(https://blog.youkuaiyun.com/xiejm2333/article/details/73297004);如需要直角坐标数据,则将dbEpsilon函数中的两点距离距离计算公式直接改为欧拉公式即可。算法中的数据结构说明...原创 2017-12-03 11:49:46 · 1118 阅读 · 3 评论 -
朴素贝叶斯分类Naive Bayesian
本算法依据《数据挖掘概念与技术》第三版(韩家炜)中的朴素贝叶斯算法描述来实现的,其分类过程可分为五步(这里只给了简略的步骤描述,详细的公式需看原书):(1)建立训练元组与类标号矩阵,并相互对应(2)计算每个类的最大后验概率(3)计算属性在不同类别下的概率(4)预测类标号朴素贝叶斯分类算法主程序:clc;clear;%%%% first step----to c原创 2017-12-03 10:23:43 · 298 阅读 · 0 评论 -
基于距离的离群点检测
本算法参照《数据挖掘概念与技术》第三版,算法中有需要人工设定的参数:r距离阈值和f分数阈值。距离阈值以目标对象为圆心,半径为r的范围;分数阈值f的范围(0,1),从伪代码中可以看到,它的本质还是计数统计。因此,基于距离的离群点检测其实是基于密度的聚类算法DBSCAN的简化版。其实现伪代码如下(原书截图):以下为算法的Matlab实现程序:clc;clear;%读取数据文件,生成点矩原创 2018-01-11 10:35:40 · 6094 阅读 · 3 评论 -
基于正太分布的一元离群点检测
以下为Matlab实现程序:clc;clear;%利用最大似然估计,检测一元离群点%气温测试数据,单位为摄氏度,这里假设数据服从正太分布TData=[24,24.1,28.9,28.9,29.0,29.1,29.1,29.2,29.2,29.3,29.4,29,28,29.2,29.3,29,29.5,29.3,29,29,29,29,29,29.4,29.1];len=leng原创 2018-01-10 22:10:47 · 1765 阅读 · 0 评论 -
基于二维K-D树的最近邻搜索实现
本文给出了对K-D树的最近邻搜索以及详细的代码,实现的灵感来自博主J_Outsider的博文。本文与前一篇博文《二维K-D树的构造及搜索》有很多的区别:首先,K-D树的构造上采用不同的方式:前一篇使用cell类型来构造树,本文使用矩阵代替,节省了内存开销,提高了查询效率;其次,K-D树的搜索方式按照上述博主的方式进行了实现,极大地提高了搜索效率。数据结构说明,如下图所示:各列依次的含义是:x坐标,...原创 2018-06-03 20:55:00 · 2040 阅读 · 0 评论