贝叶斯分类算法,是统计学的一种分类方法,它是利用贝叶斯定理的概率统计知识,对离散型的数据进行分类的算法
优点:算法易于实现和部署,执行效率和准确度高
缺点:适合处理离散型的数据,不适合处理连续性的数据
sklearn包naive_bayes模块
1,GaussianNB 高斯贝叶斯方法
2,MultinomiaINB 多项朴素贝叶斯方法
3,BernoulliNB 伯努利贝叶斯方法
案例代码:
import numpy,pandas
data=pandas.read_csv('filepath')
#转成dict,to_dict()
fData=data[['ParentIncome','IQ','Gender','ParentEnourage']].to_dict('records')
tData=data[['ColleagePlans']].as_matrix()
#虚拟变量生成,并且(toarray)将特征字典转换成一个大的稀疏矩
from sklearn.feature_extraction import DictVectorizer
dictvectorizer=DictVectorizer()
pdata=dictvectorizer.fit_transform(fData).toarray()
#取值,对每个离散变量字段取(n-1)列
pdata=pdata[:,1,2,3,5]
# 重排序
permutation=numpy.random.permutation(data.shape[0])
pdata=pdata[permutation]
tdata=tdata[permutation]
# 建立高斯贝叶斯模型
from sklearn.naive_bayes
import GaussianNB
NBModel=GaussianNB()
NBModel.fit(pdata[:6000],tdata[:6000])
NModel.score(pdata[6000:],tdata[6000:])
#预测
NBModle1.predict([0,93,0,388])
#建立多项朴素贝叶斯模型from sklearn.naive_bayes
import MultinomialNB
MBModel=MultinomialNB()
MBModel.fit(pdata[:6000],tdata[:6000])
MultinomialNB.score(pdata[6000:],tdata[6000:])
#高斯模型输出结果
array(['Does not plan to attend '],
dtype='<U24')
NBModel.score(pdata[6000:],tdata[6000:])
Out[27]: 0.8125
网友评论