1、高斯分布朴素贝叶斯
高斯分布其实就是正态分布,用于解决一般分类问题
from sklearn.naive_bayes import GaussianNB
import sklearn.datasets as datasets
irls = datasets.load_iris()
train = iris.data
target = iris.target
train.std(asis=0) # 从四中特性中找出两种具有代表性的特征,使用方差
gauss = GaussianNB
features = train[:,[0,2]]
features.shape
gauss.fit(features, target)
2.多项式分布
from sklearn.learn.naive_bayes import MultinmialNB # 多项式分布朴素贝多斯
3. 伯努利分布
from sklearn.naive_bayes import BernoulliNB # 伯努利分布
使用三种贝叶斯模型,绘制鸢尾花分类边界
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.naive_bayes import GaussianNB
from sklearn.naive_bayes import BernoulliNB
from sklearn.naive_bayes import multinomialNB
from sklearn.model_selection import train_test_split
iris = datasets.load_iris()
train = iris.data[:,[0,2]]
target = iris.target
x_train,x_test,y_train,y_test=train_test_split(train,target,test_size=0.2,random_state=1)
# 绘图查看分类结果
plt.scatter(x_train[x_train[:,0],x_train[:,1],c+y_train)
# 绘制背景
xmin,xmax=x_train[:,0].min(),x_train[:,0].max()
ymin,ymax=x_train[:,1].min(),x_train[:,1].max()
x = np.linspace(xmin,xmax,300)
y = np.linspace(ymin,ymax,300)
xx,yy = np.meshgrid(x,y)
X_test=np.c_[xx.ravel(),yy.ravel()]
plt.scatter(X_test[:,0],X_test[:,1])
gauss = Gaussian()
multi = MulitinomialNB()
ber = BernoulliNB()
gauss.fit(x_train,y_train)
multi.fit(x_train,y_train)
ber.fit(x_train,y_train)
y1_ = gauss.predict(X_test)
y2_ = multi.predict(X_test)
y3_ = ber.predict(X_test)
from matplotlib.colors import ListedColormap
cmap = ListedColormap(['r','g','b'])
plt.figure(figsize=(8,8))
ax1 = plt.subplot(2,2,1)
ax2 = plt.subplot(2,2,2)
ax3 = plt.subplot(2,2,3)
ax1.scatter(X_test[:,0],X_test[:,1],cmap=cmap,
ax1.scatter(x_train[:,0],x_train[:,1],c=y_train
ax2.scatter(X_test[:,0],X_test[:,1],cmap=cmap,
ax2.scatter(x_train[:,0],x_train[:,1],c=y_train
ax3.scatter(X_test[:,0],X_test[:,1],cmap=cmap,
ax3.scatter(x_train[:,0],x_train[:,1],c=y_train