Skip to content

eric-chao/machine-learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 

Repository files navigation

贝叶斯模型

样本集 , 每个样本有 种可能出现的特征 和与之相对应的类别

贝叶斯公式:

    

由条件概率公式:

    

公式变换(乘法公式):

    

可知贝叶斯公式中的分子就是联合概率分布

    

由贝叶斯假设(假设 互斥且构成一个完全事件),可以得到:

   

建模的目标是从每一个分类的概率 中取最值:

    

所以,在计算中贝叶斯公式中的分母可以去除。

综上,计算模型可描述为如下公式:

    

样例DEMO

有总体样本数1000,转化样本数200。

其中,

     特征A在总体样本中出现200次,转化样本中出现80次;

     特征B在总体样本中出现800次,转化样本中出现120次。

转化概率用 表示,非转化概率用 表示,则有:

    

    

    

可得:

    

    

归一化处理:

    

数据处理

  • 数据去重,去除原始数据中出现的重复数据
  • 特征数据标准化,得到各个特征的字典值
  • 数据转换,根据特征字典值将原始数据转换为对应浮点型数据格式
  • 数据处理类库:pandas, numpy
  • 数据建模类库:sklearn.naive_bayes, sklearn.metrics

代码实现



	from sklearn.naive_bayes import MultinomialNB, BernoulliNB, GaussianNB
	from sklearn.model_selection import KFold
	import sklearn.metrics as mtx
	import pandas as pd
	import numpy as np

	# fit
	nb = GaussianNB()
	nb.fit(x_train_features, x_train_target)

	# predict
	pred_prob = nb.predict_proba(x_test_features)
	predicted = nb.predict(x_test_features)
	auc = mtx.roc_auc_score(x_test_target, pred_prob[:, 1])
	recall = mtx.recall_score(x_test_target, predicted)
	output = 'AUC: %(auc).4f  Recall: %(recall).4f'%{'auc':auc, 'recall':recall}
	print(output)

统计结果

评估结果

参考文献

  1. Naive Bayes classifiers in TensorFlow

  2. 《统计学关我什么事:生活中的极简统计学》[小岛宽之]

About

Put ml practices here.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published