Algorithms
拾毅者
长期关注机器学习,数据挖掘和人工智能领域。
展开
-
八大内部排序算法(中)-基数排序(java实现)
基数排序理论很好理解,基本思想就是:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。对于基数排序有两种方法:最高位优先法(MSD)(Most Significant Digit first)最低位优先法(LSD)(Least Significant原创 2015-04-24 21:01:41 · 2917 阅读 · 0 评论 -
Add header and footer to some file
今天整理资料的时候,发现要在很多文件中的头部和尾部添加相同的文本,于是自己使用Python做的一个简单的文件拼接功能,也可以说是文件追加,批量追加头尾内容,省事,还可以练习下Python。下面来介绍下:现在有三个文件,如下:content.txt 位于一个叫path的文件中;header.txt用于添加到content.txt头部的文件;footer.txt用于添加到content.txt尾部原创 2015-11-03 19:08:29 · 1208 阅读 · 0 评论 -
机器学习算法-决策树(续)Python实现
决策树算法的理论部分参考:决策树理论决策树算法实现一共分为以下几个部分:加载数据集部分熵的计算按照给定特征划分数据集根据信息增益的最大值的属性作为划分属性递归构建决策树样本的分类创建分支节点伪代码函数createBranch()如下所示:检测数据集的每个子项是否属于同一类: if so return 类标签; else 寻找划分数据集的最好特征原创 2015-05-25 08:18:26 · 8684 阅读 · 0 评论 -
机器学习算法-朴素贝叶斯Python实现
引文:前面提到的K最近邻算法和决策树算法,数据实例最终被明确的划分到某个分类中,下面介绍一种不能完全确定数据实例应该划分到哪个类别,或者说只能给数据实例属于给定分类的概率。基于贝叶斯决策理论的分类方法之朴素贝叶斯优点:在数据较少的情况下仍然有效,可以处理多类别问题缺点:对于输入数据的准备方式较为敏感 适用数据类型:标称型数据。朴素贝叶斯的一般过程收集数据:可以使用任何方式准备数据:需要数原创 2015-05-28 12:59:06 · 16099 阅读 · 1 评论 -
机器学习算法-K-means聚类
引文: k均值算法是一种聚类算法,所谓聚类,他是一种无监督学习,将相似的对象归到同一个蔟中。蔟内的对象越相似,聚类的效果越好。聚类和分类最大的不同在于,分类的目标事先已知,而聚类则不一样。因为其产生的结果和分类相同,而只是类别没有预先定义。算法的目的: 使各个样本与所在类均值的误差平方和达到最小(这也是评价K-means算法最后聚类效果的评价标准)K-均值聚类优点:容易实现缺点:可能收敛到局部最原创 2015-06-03 12:30:14 · 3440 阅读 · 1 评论 -
机器学习算法-决策树理论
用较少的东西,同样可以做好的事情。越是小的决策树,越优于大的决策树。引文数据分类是一个两阶段过程,包括学习阶段(构建分类模型)和分类阶段(使用模型预测给定数据的类标号)。决策树分类算法是监督学习的一种,即Supervised learning。分类过程的第一阶段也可以看做学习一个映射或函数y=f(x),它可以预测给定元组X的类标号y。在第二阶段,使用模型进行分类。首先评估分类器的预测准确率。这个原创 2015-09-21 08:04:22 · 3630 阅读 · 0 评论 -
BinarySearch二分查找算法
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以原创 2015-04-27 20:13:07 · 4286 阅读 · 0 评论 -
最长递增子序列长度算法
求最长连续子序列的长度,数字保存在数组中使用动态规划算法,理解状态转移,dp[i]表示i位置下的最大连续子序列长度。初始状态dp[0] = 1,表示在数组下标为0的时候,它的最长子序列长度就是1,接着从1开始从左到右扫描,如果后一个数大于前一个数,则它的最长子序列长度增加1,否则,此位置的最长子序列长度置为1,同时记录下当前的最大子序列长度;最后返回记录的最大连续子序列变量。代码如下:Cod原创 2015-06-13 22:15:15 · 1300 阅读 · 0 评论 -
第五届在线编程大赛月赛第一题:完全平方数的个数
第五届在线编程大赛月赛第一题:完全平方数的个数 题目详情: 给定整数区间[A,B]问其中有多少个完全平方数。 输入格式: 多组数据,包含两个正整数A,B 1<=A<=B<=2000000000。 输出格式: 每组数据输出一行包含一个整数,表示闭区间[A,B]中包含的完全平方数的个数。 答题说明: 输入样例 1 1 1 2 3 10 3 3 输出样例: 1 1 2原创 2015-05-22 19:51:43 · 1075 阅读 · 0 评论 -
化抽象为具体学动态规划
最近在看动态规划,这篇文章是0-1背包问题,看到这个具体化的例子真的讲的不错,收藏了,顺便附带了原文评论中的分析部分!原文地址:http://www.cnblogs.com/sdjl/articles/1274312.html对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读转载 2015-06-14 09:32:03 · 1114 阅读 · 0 评论 -
机器学习算法-Apriori关联分析
引文: 学习一个算法,我们最关心的并不是算法本身,而是一个算法能够干什么,能应用到什么地方。很多的时候,我们都需要从大量数据中提取出有用的信息,从大规模数据中寻找物品间的隐含关系叫做关联分析(association analysis)或者关联规则学习(association rule learning)。比如在平时的购物中,那些商品一起捆绑购买销量会比较好,又比如购物商城中的那些推荐信息,都是根据用原创 2015-06-04 08:59:46 · 5365 阅读 · 1 评论 -
Stanford机器学习[第三课]-欠拟合与过拟合
1.本次课程大纲局部加权回归: 线性回归的变化版本Probability interpretation:另一种可能的对于线性回归的解释Logistic回归: 基于2的一个分类算法感知器算法: 对于3的延伸,简要讲牛顿方法(用来对logistic进行拟合的算法,这节课没讲)2.过拟合与欠拟合的距离评估房子的价格,假设三种拟合算法: (1)X1=size, 拟合出一条线性曲线; (2)x原创 2015-05-29 19:56:09 · 2104 阅读 · 0 评论 -
十进制数转二进制形式并判断它是否为2的n次幂(Java实现)
java提供了十进制转化为二进制、十六进制、八进制的函数;在java.lang.Integer这个API包中,转换函数如下 public static String toBinaryString(int i) public static String toHexString(int i) public static Strin原创 2015-04-26 22:33:30 · 1845 阅读 · 0 评论 -
八大内部排序算法(上)-冒泡、直接插入、简单选择、快速
八大内部排序算法(上)冒泡、直接插入、简单选择、快速排序分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。1.直接插入排序将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看原创 2015-04-21 16:43:34 · 2837 阅读 · 0 评论 -
机器学习算法-K最近邻从原理到实现(Python)
引文:决策树和基于规则的分类器都是积极学习方法(eager learner)的例子,因为一旦训练数据可用,他们就开始学习从输入属性到类标号的映射模型。一个相反的策略是推迟对训练数据的建模,直到需要分类测试样例时再进行。采用这种策略的技术被称为消极学习法(lazy learner)。最近邻分类器就是这样的一种方法。1.K最近邻分类器原理首先给出一张图,根据这张图来理解最近邻分类器,如下:原创 2015-10-04 17:20:16 · 11648 阅读 · 0 评论