数据挖掘——分类算法——贝叶斯分类、决策树

贝叶斯定理(Bayes Theorem)node

formula

朴素贝叶斯分类(Naive Bayes Classifier)python

  贝叶斯分类算法(NB),是统计学的一种分类方法,它是利用贝叶斯定理的几率统计知识,对离散型数据进行分类的算法。算法

 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的几率,哪一个最大,就认为此待分类项属于哪一个类别机器学习

tips:python中sklearn包的naive_bayes模块中,由三种贝叶斯算法类型:oop

  • GaussuanNB   高斯贝叶斯 :适用于特征值符合正态分布的数据,不须要知道具体每一个样本的数值,只需知道样本符合什么样的正态分布(均值、方差)便可计算;
  • BernoulliNB  伯努利贝叶斯:适用于特征值符合伯努利分布的数据,便是/否,0/1;
  • MultinomialNB  多项式贝叶斯:不知道特征值符合哪一种分布的时候,使用多项式贝叶斯算法计算每一个特征的几率,因此须要知道每一个特征值的数值大小(最经常使用于文本分类)。

使用多项式贝叶斯进行分本分类的实现:学习

#构建语料库,须要包含文本分类测试

#进行分词spa

#文本向量化code

#构建多项式贝叶斯模型orm

from sklearn.naive_bayes import MultinomialNB
#多项式贝叶斯分类模型创建
MNBmodle = MultinomialNB()
#将文本向量做为特征值传入,将分类序列做为目标序列传入
MNBmodle.fit(textVector,corpos['class'])
MNBmodle.score(textVector,corpos['class'])

tips:多项式贝叶斯很是适用于文本分类

#针对新文本进行分类(须要进行分词和向量化操做),获得分类预测

MNBmodle.predict(newTextVector)

 

决策树(Decision Tree)

  决策树经过对训练样本的学习,并创建分类规则,而后依据分类规则,对新样本数据进行分类预测,属于有监督学习

  决策树是在已知各类状况发生几率的基础上,经过构成决策树来求取净现值的指望值大于等于零的几率,评价项目风险,判断其可行性的决策分析方法,是直观运用几率分析的一种图解法。

  因为这种决策分支画成图形很像一棵树的枝干,故称决策树。

  在机器学习中,决策树是一个预测模型,他表明的是对象属性与对象值之间的一种映射关系。

  决策树是一种树形结构,其中每一个内部节点表示一个属性上的测试,每一个分支表明一个测试输出,每一个叶节点表明一种类别。

优势:

  决策树易于理解和实现

   决策树可同时处理数值型和非数值型数据

缺点:

  对连续性的字段较难预测

  对有时间顺序的数据,须要不少的预处理工做

  当类别较多时,错误可能增长的比较快  

 

python实现决策树模型的构建

重点代码:

dtmodel = DecisionTreeClassifier(max_leaf_nodes=None)   #最大叶子节点数

dtModel.fit(featureData, targetData)  #特征数据、目标数据

#对离散型变量进行虚拟化

#设置特征变量、目标变量

#构建决策树模型

 

from sklearn.tree import DecisionTreeClassifier
dtmodel = DecisionTreeClassifier(max_leaf_nodes=8) #最大叶数为8
#模型验证
from sklearn.model_selection import cross_val_score
cross_val_score(dtmodel,fdata,tdata,cv=10)  #交叉验证10次
#模型训练
dtmodel.fit(fdata,tdata)

 

#绘制决策树模型  (须要下载安装graphviz软件 并 安装pydot包,可参考http://wenda.chinahadoop.cn/question/5518

#绘制决策树图形
from sklearn.tree import export_graphviz
with open(r'D:\...\data.dot','w') as f:
    f = export_graphviz(dtmodel, out_file=f)

import pydot
from sklearn.externals.six import StringIO

dot_data = StringIO()
export_graphviz(
        dtmodel, #模型名称
        out_file=dot_data,  #图形数据的输出路径
        class_names=['A','B'],  #目标属性的名称
        feature_names=['a','b','c','d'],  #特征属性的名称
        filled=True, #是否使用颜色填充
        rounded=True, #边框是否圆角
        special_characters=True) #是否有特殊字符(含中文就算)

graph = pydot.graph_from_dot_data(dot_data.getvalue())

graph.get_node('node')[0].set_fontname('Microsoft YaHei')

graph.write_png(r'D:\...\决策树.png')

#最终在目标路径下获得决策树的图形

 

 

相关文章
相关标签/搜索