版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mr_muli/article/details/84479667
- 机器学习之高斯贝叶斯分类器gaussianNB
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 25 10:55:17 2018
@author: muli
"""
from sklearn import naive_bayes,datasets,cross_validation
def load_data():
'''
加载用于分类问题的数据集。这里使用 scikit-learn 自带的 digits 数据集
:return: 一个元组,用于分类问题。元组元素依次为:训练样本集、测试样本集、训练样本集对应的标记、测试样本集对应的标记
'''
# 加载 scikit-learn 自带的 digits 数据集
digits=datasets.load_digits()
#分层采样拆分成训练集和测试集,测试集大小为原始数据集大小的 1/4
return cross_validation.train_test_split(digits.data,digits.target,
test_size=0.25,random_state=0,stratify=digits.target)
def test_GaussianNB(*data):
'''
测试 GaussianNB 的用法
:param data: 可变参数。
它是一个元组,这里要求其元素依次为:训练样本集、测试样本集、训练样本的标记、测试样本的标记
:return: None
'''
X_train,X_test,y_train,y_test=data
cls=naive_bayes.GaussianNB()
cls.fit(X_train,y_train)
print('Training Score: %.2f' % cls.score(X_train,y_train))
print('Testing Score: %.2f' % cls.score(X_test, y_test))
print("--------------")
# print(X_test) # 打印训练集
# print(np.shape(X_test)) # 训练集维度(450, 64)
# 测试集对应的预测概率
# predict_proba返回的是一个 n 行 k 列的数组,
# 第 i 行 第 j 列上的数值是模型预测 第 i 个预测样本为某个标签的概率,
# 并且每一行的概率和为1
print(cls.predict_proba(X_test))
if __name__=='__main__':
# 产生用于分类问题的数据集
X_train,X_test,y_train,y_test=load_data()
# 调用 test_GaussianNB
test_GaussianNB(X_train,X_test,y_train,y_test)