使用sklearn实现朴素贝叶斯
# 导入模块
import numpy as np
from sklearn import naive_bayes as nb
from sklearn.preprocessing import LabelEncoder
def loaddata():
X = np.array([[1,'S'],[1,'M'],[1,'M'],[1,'S'],
[1,'S'],[2,'S'],[2,'M'],[2,'M'],
[2,'L'],[2,'L'],[3,'L'],[3,'M'],
[3,'M'],[1,'L'],[3,'L']])
y = np.array([-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,-1])
return X,y
X,y = loaddata()
把字符类型的转换为数字类型,即对字符类型进行编码
X[:,1] = LabelEncoder().fit_transform(X[:,1])
X = X.astype(int)
调用朴素贝叶斯模型,并fit数据
model = nb.MultinomialNB()
model.fit(X,y)
预测:对[2,‘S’]进行预测,同样S要转换成2
print(model.predict([[2,2]]))