实现本文的文本数据可以在THUCTC下载也可以自己手动爬虫生成, 本文主要参考:https://blog.csdn.net/hao5335156/article/details/82716923 nb表示朴素贝叶斯 rf表示随机森林 lg表示逻辑回归 初学者(我)通过本程序的学习可以巩固python基础,学会python文本的处理,和分类器的调用.方便接下来的机器学习的学习. 各个参数直观的含义: # -*- coding: utf-8 -*- """ Created on…
关于bayes的基础知识,请参考: 基于朴素贝叶斯分类器的文本聚类算法 (上) http://www.cnblogs.com/phinecos/archive/2008/10/21/1315948.html  基于朴素贝叶斯分类器的文本聚类算法 (下) http://www.cnblogs.com/phinecos/archive/2008/10/21/1316044.html 算法杂货铺——分类算法之朴素贝叶斯分类 http://www.cnblogs.com/leoo2sk/archive/…
朴素贝叶斯 朴素贝叶斯分类器的构造基础是贝叶斯理论.采用概率模型来表述,定义x=<x1,x2,...,xn>为某一n维特征向量,y∈{c1,c2,...ck}为该特征向量x所有k种可能的类别,记 P(y=ci|x)为特征向量x属于类别ci的概率.贝叶斯原理: P(y|x)=P(x|y)P(y)/P(x) #代码1:读取20类新闻文本的数据细节  #从sklearn.datasets里导入新闻数据抓取器fetch_20newsgroups from sklearn.datasets import…
朴素贝叶斯假设各属性间相互独立,直接从已有样本中计算各种概率,以贝叶斯方程推导出预测样本的分类. 为了处理预测时样本的(类别,属性值)对未在训练样本出现,从而导致概率为0的情况,使用拉普拉斯修正(假设属性值与类别均匀分布). 代码及注释如下: 一.离散值 1,朴素贝叶斯算法计算相关参数并返回,预测使用这些参数即可 # 手写拉普拉斯修正的朴素贝叶斯 import numpy as np import pandas as pd def naive_bayes(data): '''data:panda…
朴素贝叶斯分类器(Naïve Bayes classifier)是一种相当简单常见但是又相当有效的分类算法,在监督学习领域有着很重要的应用.朴素贝叶斯是建立在“全概率公式”的基础下的,由已知的尽可能多的事件A.B求得的$P(A|B)$来推断未知$P(B|A)$. 优点: 模型训练使用TF-IDF对训练数据做词频及概率统计: 分类使用朴素贝叶斯计算所有类目的概率; 适用于电商的短文本分类,加入部分人工干预,top3准确率可达到95%左右: 分类预测完全可解释,不存在神经网络黑盒,但比较依赖分词效果…
贝叶斯是搞概率论的.学术圈上有个贝叶斯学派.看起来吊吊的.关于贝叶斯是个啥网上有很多资料.想必读者基本都明了.我这里只简单概括下:贝叶斯分类其实就是基于先验概率的基础上的一种分类法,核心公式就是条件概率.举个俗气的例子,通过我们的以往观察,鲤鱼中尾巴是红色的占比达90%,鲫鱼中尾巴是红色的占比只有1%不到,那么新来了一条小鱼,他是鲤鱼还是鲫鱼呢?我看一下他的尾巴,发现是红色,根据过去的先验概率经验,它是鲤鱼的概率比较大,我认为它是鲤鱼. 这当时是个最简单的例子,实践中的问题就复杂了.比如说特征不…
def trainNB0(trainMatrix,trainCategory): numTrainDocs = len(trainMatrix) numWords = len(trainMatrix[0]) pAbusive = sum(trainCategory)/float(numTrainDocs) p0Num = ones(numWords); p1Num = ones(numWords) #change to ones() p0Denom = 2.0; p1Denom = 2.0 #c…
今天介绍机器学习中一种基于概率的常见的分类方法,朴素贝叶斯,之前介绍的KNN, decision tree 等方法是一种 hard decision,因为这些分类器的输出只有0 或者 1,朴素贝叶斯方法输出的是某一类的概率,其取值范围在 0-1 之间,朴素贝叶斯在做文本分类,或者说垃圾邮件识别的时候非常有效. 朴素贝叶斯就是基于我们常用的贝叶斯定理: p(x|y)=p(y|x)p(x)p(y) 假设我们要处理一个二分类问题: c1,c2,给定一个样本,比如说是一封邮件,可以用向量 x 来表示,邮…
(一)生成学习算法 在线性回归和Logistic回归这种类型的学习算法中我们探讨的模型都是p(y|x;θ),即给定x的情况探讨y的条件概率分布.如二分类问题,不管是感知器算法还是逻辑回归算法,都是在解空间中寻找一条直线从而把两种类别的样例分开,对于新的样例,只要判断在直线的哪一侧即可:这种直接对问题求解的方法可以称为判别学习方法.   而生成学习算法则是对两个类别分别进行建模,用新的样例去匹配两个模板,匹配度较高的作为新样例的类别,比如分辨大象(y=1)和狗(y=0),首先,观察大象,然后建立一…
1.K-近邻算法(KNN) 1.1 定义 (KNN,K-NearestNeighbor) 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 1.2 距离公式 两个样本的距离可以通过如下公式计算,又叫欧式距离. 简单理解这个算法: 这个算法是用来给特征值分类的,是属于有监督学习的领域,根据不断计算特征值和有目标值的特征值的距离来判断某个样本是否属于某个目标值. 可以理解为根据你的邻居来判断你属于哪个类别. 1.3 API sklea…