泰州建设局网站安监站通报,南京手机网站,专业做网站较好的公司广州,哪些公司做外贸网站朴素贝叶斯分类
贝叶斯分类理论
假设现有两个数据集#xff0c;分为两类 我们现在用p1(x,y)表示数据点(x,y)属于类别1(图中红色圆点表示的类别)的概率#xff0c;用p2(x,y)表示数据点(x,y)属于类别2(图中蓝色三角形表示的类别)的概率#xff0c;那么对于一个新数据点(x,y)…朴素贝叶斯分类
贝叶斯分类理论
假设现有两个数据集分为两类 我们现在用p1(x,y)表示数据点(x,y)属于类别1(图中红色圆点表示的类别)的概率用p2(x,y)表示数据点(x,y)属于类别2(图中蓝色三角形表示的类别)的概率那么对于一个新数据点(x,y)可以用下面的规则来判断它的类别 如果p1(x,y)p2(x,y)那么类别为1 如果p1(x,y)p2(x,y)那么类别为2
条件概率
条件概率是指在一定条件下事件发生的概率 P(A|B)即表示事件B发生的情况下事件A发生的概率。
有图可知在事件B发生的情况下事件A发生的概率就是P(A∩B)除以P(B)。
(A|B)(A∩B)/(B)
变换可得
(A∩B)(A|B)(B) 或(A∩B)(B|A)(A)
即(|)(B|A)()/()
这为条件概率公式。
全概率公式
假定样本空间S是两个事件A与A的和。 红色部分是事件A绿色部分是事件A它们共同构成了样本空间S。
在这种情况下事件B可以划分成两个部分。 事件B的概率即可表示为()(∩)(∩′)
由上可得(∩)(|)()
所以()(|)()(|′)(′)
这就是全概率公式。它的含义是如果A和A构成样本空间的一个划分那么事件B的概率就等于A和A的概率分别乘以B对这两个事件的条件概率之和。
贝叶斯推断
对条件概率公式进行变形可以得到如下形式: 我们把P(A)称为先验概率Prior probability即在B事件发生之前我们对A事件概率的一个判断。
P(A|B)称为后验概率Posterior probability即在B事件发生之后我们对A事件概率的重新评估。
P(B|A)/P(B)称为可能性函数Likelyhood这是一个调整因子使得预估概率更接近真实概率。
后验概率 先验概率调整因子
朴素贝叶斯推断
贝叶斯和朴素贝叶斯的概念是不同的区别就在于“朴素”二字朴素贝叶斯对条件概率分布做了条件独立性的假设。
根据贝叶斯定理后验概率 P(a|X) 可以表示为 P(X|a) 是给定类别 ( a ) 下观测到特征向量 $X(x_1, x_2, ..., x_n) $的概率 P(a) 是类别 a 的先验概率 P(X) 是观测到特征向量 X 的边缘概率通常作为归一化常数处理。
又因朴素贝叶斯分类器的关键假设是特征之间的条件独立性 因此我们可以将联合概率 P(X|a) 分解为各个特征的概率乘积 将这个条件独立性假设应用于贝叶斯公式我们得到 这样朴素贝叶斯分类器就可以通过计算每种可能类别的条件概率和先验概率然后选择具有最高概率的类别作为预测结果。
纹理色泽鼔声类别1清晰清绿清脆好瓜2模糊乌黑浊响坏瓜3模糊清绿浊响坏瓜4清晰乌黑沉闷好瓜5清晰清绿浊响好瓜6模糊乌黑沉闷坏瓜7清晰乌黑清脆好瓜8模糊清绿沉闷好瓜9清晰乌黑浊响坏瓜10模糊清绿清脆好瓜11清晰清绿沉闷12模糊乌黑浊响 按例中第12个瓜来判断
首先计算样本中好瓜和坏瓜的概率10个瓜中有6个好瓜4个坏瓜
P(好瓜)0.6
P(坏瓜)0.4
--------------
P(纹理清晰)0.5
P(纹理模糊)0.5
--------------
P(色泽清绿)0.5
P(色泽乌黑)0.5
--------------
P(声音清脆)0.3
P(声音沉闷)0.3
P(声音浊响)0.4
-----------------
第12个瓜的特征是纹理模糊色泽乌黑声音浊响
则
P(纹理模糊|好瓜)1/3
P(纹理模糊|坏瓜)3/4
P(色泽乌黑|好瓜)1/3
P(色泽乌黑|坏瓜)3/4
P(声音浊响|好瓜)1/3
P(声音浊响|坏瓜)3/4
---------------------
P(好瓜)P(纹理模糊|好瓜)*P(色泽乌黑|好瓜)*P(声音浊响|好瓜)*P(好瓜)/p(纹理模糊色泽乌黑声音浊响)((1/3)*(1/3)*(1/3)*0.6)/p(纹理模糊色泽乌黑声音浊响)
P(坏瓜)P(纹理模糊|坏瓜)*P(色泽乌黑|坏瓜)*P(声音浊响|坏瓜)*P(坏瓜)/p(纹理模糊色泽乌黑声音浊响)((3/4)*(3/4)*(3/4)*0.4)/p(纹理模糊色泽乌黑声音浊响)P(好瓜) P(坏瓜)
故第12个瓜推断为坏瓜
拉普拉斯平滑系数
些事件或特征可能从未出现过这会导致它们的概率被估计为零。然而在实际应用中即使某个事件或特征没有出现在训练集中也不能完全排除它在未来样本中出现的可能性。拉普拉斯平滑技术可以避免这种“零概率陷阱”
公式为: 一般α取值1m的值为总特征数量
例如
sklearn API
sklearn.naive_bayes.MultinomialNB()
estimator.fit(x_train, y_train)
y_predict estimator.predict(x_test) sklearn 示例
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
# 加载数据
x,y load_iris(return_X_yTrue)
# 分割
x_train,x_test,y_train,y_test train_test_split(x,y,train_size0.8,random_state42,stratifyy)
# 创建模型
bayes MultinomialNB()
# 训练
bayes.fit(x_train,y_train)
# 评估
score bayes.score(x_test,y_test)
print(score)
# 预测
y_predictbayes.predict([[2,5,3,5]])
print(y_predict) 决策树-分类
概念
树结构通过条件判断而进行分支选择的节点。
基于信息增益决策树的建立
信息增益决策树倾向于选择取值较多的属性在有些情况下这类属性可能不会提供太多有价值的信息算法只能对描述属性为离散型属性的数据集构造决策树。
(1) 信息熵
信息熵描述的是不确定性。信息熵越大不确定性越大。信息熵的值越小则D的纯度越高。
假设样本集合D共有N类第k类样本所占比例为Pk则D的信息熵为
(2) 信息增益
信息增益是一个统计量用来描述一个属性区分数据样本的能力。信息增益越大那么决策树就会越简洁。这里信息增益的程度用信息熵的变化程度来衡量, 信息增益公式 (3) 信息增益决策树建立步骤
第一步,计算根节点的信息熵
上表根据是否贷款把样本分成2类样本是占4/62/3, 否占2/61/3,
所以
第二步,计算属性的信息增益
计算各特征的信息增益
第三步, 划分属性
对比属性信息增益选择最大的特征作为第一个节点将剩下的特征及目标继续重复计算信息熵得到最大的作为第二个以此类推。
基于基尼指数决策树的建立
基尼指数Gini Index是决策树算法中用于评估数据集纯度的一种度量基尼指数衡量的是数据集的不纯度或者说分类的不确定性。在构建决策树时基尼指数被用来决定如何对数据集进行最优划分以减少不纯度。
基尼指数的计算
对于一个二分类问题如果一个节点包含的样本属于正类的概率是 (p)则属于负类的概率是 (1-p)。那么这个节点的基尼指数 (Gini(p)) 定义为 对于多分类问题如果一个节点包含的样本属于第 k 类的概率是 则节点的基尼指数定义为 当一个节点的所有样本都属于同一类别时基尼指数为 0表示纯度最高。 当一个节点的样本均匀分布在所有类别时基尼指数最大表示纯度最低。
案例: 首先工资有两个取值分别是0和1。当工资1时有3个样本。
因此
同时在这三个样本中工作都是好。
故
同理当工资0时有5个样本在这五个样本中工作有3个是不好2个是好。 两个式子相加得 得到工资的基尼系数
同理可算出压力的基尼系数平台的基尼系数 根据基尼指数最小准则 我们优先选择工资或者平台0作为D的第一特征。
再将剩下的特征再进行相同计算再选择一个基尼系数最小的作为第二特征
sklearn API 示例
葡萄酒分类
用决策树对葡萄酒进行分类
from sklearn.datasets import load_wine
from sklearn.tree import DecisionTreeClassifier,export_graphviz
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_splitwine load_wine()
x wine.data
y wine.target# 分割,stratify可指定按谁分割。
x_train,x_test,y_train,y_test train_test_split(x,y,train_size0.8,random_state42,stratifyy)
# 标准化
transfer StandardScaler()
x_train transfer.fit_transform(x_train)
x_test transfer.transform(x_test)
# 模型,criterionentropy表示用信息熵来计算criteriongini表示用基尼系数来计算默认值用基尼系数
decter DecisionTreeClassifier(criterionentropy)
# 训练
decter.fit(x_train,y_train)
# 评估
score decter.score(x_test,y_test)
print(score)
# 预测
y_predict decter.predict([[1,2,3,4,5,5,7,8,9,6,4,8,9]])
print(y_predict)
# 可视化
export_graphviz(decter, out_file./model/wine1.dot, feature_nameswine.feature_names) 下列是可视化文件