基于朴素贝叶斯分类算法的邮件过滤系统

转自穆晨阅读目录前言准备数据:切分文本训练并测试小结回到顶部      朴素贝叶斯算法最为广泛而经典的应用毫无疑问是文档分类,更具体的情形是邮件过滤系统。      本文详细地讲解一个基于朴素贝叶斯分类算法的邮件过滤系统的具体实现。      本文侧重于工程实现,至于其中很多算法的细节请参考之前的一篇文章:朴素贝叶斯分类算法原理分析与代码实现。回到顶部      获取到文本文件之后,首先要做的是两件事情:      1.将文本文件转换为词汇列表      2.将上一步的结果进一步转换为词向量      对于1,具体来说,就是将文本文件以非字母或数字之外的字符为界进行切割。&...

基于K-近邻分类算法的手写识别系统

本文转自:穆晨补充:2000个训练集也是32x32矩阵。阅读目录前言第一步:收集并准备数据第二步:测试算法小结回到顶部      本文将继续讲解K-近邻算法的项目实例-手写识别系统。      该系统在获取用户的手写输入后,判断用户写的是什么。      为了突出核心,简化细节,本示例系统中的输入为32x32矩阵,分类结果也均为数字。但对于汉字或者别的分类情形原理都是一样的。      有了前面学习的基础,下面直接进入项目开发步骤。回到顶部      在用户主目录的trainingDigits子目录中,存放的是2000个样本数据。      每个样本一个文件,其中一部分如下所示:    &nb...

决策树介绍及算法

定义:决策树是一种分而治之(DivideandConquer)的决策过程。一个困难的预测问题,通过树的分支节点,被划分成两个或多个较为简单的子集,从结构上划分为不同的子问题。将依规则分割数据集的过程不断递归下去(RecursivePartitioning)。随着树的深度不断增加,分支节点的子集越来越小,所需要提的问题数也逐渐简化。当分支节点的深度或者问题的简单程度满足一定的停止规则(StoppingRule)时,该分支节点会停止劈分,此为自上而下的停止阈值(CutoffThreshold)法;有些决策树也使用自下而上的剪枝(Pruning)法。分支节点正如名称所指,分支节点决定输入数据进入哪一个分支。每个分支节点对应一个分支函数(劈分函数),将不同的预测变量的值域映射到有限,离散的分支上。根节点根节点是一个特殊的分支节点,它是决策树的起点。对于决策树来说,所有节点的分类或者回归目标都要在根节点已经定义好了。如果决策树的目标变量是离散的(序数型或者是列名型变量),则称它为分类树(ClassificationTree);如果目标变量是连续的(区间型变量),则称它为回归树(Regressio...
代码星球 代码星球·2021-02-23

knn算法介绍以及实例演示

本文参考:常用数据挖掘算法总结及Python实现,机器学习实战,以及网友http://www.cnblogs.com/jtianwen2014/p/4249003.html算法思路:  存在一个样本数据集,也称作训练样本集,并且样本中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系,输入没有标签的新数据后,将新数据的每个特征与样本集中的数据对应的特征进行比较,然后算法提取样本集中特征最相似的数据(最近邻)的分类标签。一般来说,我们只选择样本集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数,最后,选择k个最相似的数据中出现次数最多的分类,作为新数据的分类。算法优缺点1)优点简单,易于理解,易于实现,无需估计参数,无需训练;适合样本容量比较大的分类问题特别适合于多分类问题(multi-modal,对象具有多个类别标签),例如根据基因特征来判断其功能分类,kNN比SVM的表现要好2)缺点懒惰算法,对测试样本分类时的计算量大,内存开销大,评分慢;可解释性较差,无法给出决策树那样的规则对于样本量较小的分类问题,会产生误差适用情况:由于k...

Java面试题目大汇总(附参考答案)

足足准备了长达3个月的面试,终于在上周拿到了阿里的offer!博主汇总整理了一份我面试之前看的一些Java面试题目,可以说是非常详细!分享给大家,希望对正在面试Java岗位的朋友有帮助哈~~(文末附参考答案)JDK和JRE有什么区别?==和equals的区别是什么?两个对象的hashCode()相同,则equals()也一定为true,对吗?final在java中有什么作用?java中的Math.round(-1.5)等于多少?String属于基础的数据类型吗?java中操作字符串都有哪些类?它们之间有什么区别?Stringstr="i"与Stringstr=newString("i")一样吗?如何将字符串反转?String类的常用方法都有那些?抽象类必须要有抽象方法吗?普通类和抽象类有哪些区别?抽象类能使用final修饰吗?接口和抽象类有什么区别?java中IO流分为几种?BIO、NIO、AIO有什么区别?Files的常用方法都有哪些?java容器都有哪些?Collection和Collections有什么区别?List、Set、Map之间的区别是什么?HashMap和Hashtab...

本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密算法。

BASE64编码算法不算是真正的加密算法。     MD5、SHA、HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法。我们通常只把他们作为加密的基础。单纯的以上三种的加密并不可靠。 BASE64 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(TheBase64Content-Transfer-Encodingisdesignedtorepresentarbitrarysequencesofoctetsinaformthatneednotbehumanlyreadable.) 常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。  通过java代码实现如下: Java代码  /**  * BASE64解密  * &nbs...

Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

本文由网络资料整理转载而来,如有问题,欢迎指正!分类:1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。先来看看8种排序之间的关系:1.直接插入排序(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。(2)实例(3)用java实现 [java]viewplaincopy1.packagecom.njue;2.3.publicclassinsertSort{4.5.publicinsertSort(){6.inta[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};7.inttemp=0;8.for(inti=1...

Scala核心编程_第11章_2节 数据结构-数组列表元祖

数组Array是定长数组,ArrayBuffer是变长数组创建数组定长数组1.new方式定义数组中括号的类型就是数组的类型,valarr1=newArray[Int](10)赋值,集合元素采用小括号访问arr1(1)=7反编译    2.apply方式定义数组valarr1=Array(1,2)apply方法:   反编译  增删改查数组索引访问集合元素采用小括号+索引的方式访问 循环数组for(i<-arr){println(i)}for(index<-arr.indices){printf("arr[%d]=%s",index,arr(index)+"")}变长数组valarr01=newArrayBuffer[Any](3)println(arr01.length)//0println("arr01.hash="+arr01.hashCode())arr01.append(90.0,13)//println("arr01.hash="+arr01.hashCode())...

Scala核心编程_第11章_1节 数据结构-集合总论

scala集合基本介绍Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问。在scala中集合主要在三个包里面:scala.collection,scala.collection.immutable和scala.collection.mutable。两个主要的包:不可变集合:scala.collection.immutable可变集合:scala.collection.mutableScala默认采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变(mutable)和不可变(immutable)的版本不可变集合:scala不可变集合,就是这个集合本身不能动态变化。(类似java的数组,是不可以动态增长的)可变集合:可变集合,就是这个集合本身可以动态变化的。(比如:ArrayList,是可以动态增长的)Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质,在Scala中集合有可变(mutable)和不可变(immutable)两种类型。我们看下这三个包的层次结构:scala.collection的层次结构如下:&n...

TF-IDF算法

1...
代码星球 代码星球·2021-02-22

java数据结构5--集合Map

  Map与Collection在集合框架中属并列存在Map存储的是键值对<K,V>Map存储元素使用put方法,Collection使用add方法Map集合没有直接取出元素的方法,而是先转成Set集合,再通过迭代获取元素Map集合中键要保证唯一性(和HashSet一样,用hashcode和equals)此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get和put)提供稳定的性能。迭代collection视图所需的时间与HashMap实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。HashMap的实例有两个参数影响其性能:初始容量和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行rehash操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。通常,默认加载因子(.75)在时间和空间成本上寻求一...
代码星球 代码星球·2021-02-22

java数据结构4--集合Set

  Set接口用来表示:一个不包含“重复元素”的集合Set接口中并没有定义特殊的方法,其方法多数都和Collection接口相同。重复元素的理解:通常理解:拥有相同成员变量的对象称为相同的对象,如果它们出现在同一个集合中的话,称这个集合拥有重复的元素HashSet中对重复元素的理解:和通常意义上的理解不太一样!两个元素(对象)的hashCode返回值相同,并且equals返回值为true时(或者地址相同时),才称这两个元素是相同的。TreeSet中对重复元素的理解:元素的compareTo方法或者集合的比较器compare方法返回值为0则认为这两个元素是相同的元素。 1Set接口的方法可知Set接口并没有比父类Collection接口提供更多的新方法。线程不安全,存取速度快它的大多数方法都和Collection相同它不保证元素的迭代顺序;也不保证该顺序恒久不变当HashSet中的元素超过一定数量时,会发生元素的顺序重新分配。2.1HashSet构造方法publicHashSet(){map=newHashMap<>();}publicHashS...
代码星球 代码星球·2021-02-22

java数据结构3--List

1.1list接口的简介  1.2list实现子类ArrayList:线程不安全,查询速度快,底层用的是数组,增删慢LinkedList:线程不安全,链表结构,增删速度快,查询慢Vector:线程安全,但速度慢,已被ArrayList替代 1.3list的遍历方法   迭代器注意事项:迭代器在Collcection接口中是通用的迭代器的next方法返回值类型是Object,如果需要所以要记得类型转换。1.4练习1.使用ArrayList存储基本数据类型对象,并遍历2.使用ArrayList存储字符串对象,并遍历importjava.util.ArrayList;/**使用ArrayList存储基本数据类型对象,并遍历*/publicclassDemo1{publicstaticvoidmain(String[]args){//Colletion//ListArrayListlist=newArrayList();list.add(10);//此处发生的是自动装箱int-->Integer1.5list.add(true)...
代码星球 代码星球·2021-02-22
首页上一页...45678...下一页尾页