https://github.com/PacktPublishing/Machine-Learning-Algorithms
单纯贝氏有三种版本白努力、多项式、高斯,今天先学白努力。
白努力:是二元分布,适用於特徵存在或不存在时。
多项式:是离散分布,适用於特徵为整数时(NLP中单辞出现频率)。
高斯:是连续分布。
一样先导入套件,上面的是用来算数学的;下面的是用来画画的,并且帮它们取绰号(np & plt)。
import numpy as np
import matplotlib.pyplot as plt
再来,用seed()随机产生整数的乱数後,设定样本数300,建立资料集。
np.random.seed(1000) nb_samples = 300 from sklearn.datasets import make_classification def show_dataset(X, Y): fig, ax = plt.subplots(1, 1, figsize=(30, 25)) ax.grid() ax.set_xlabel('X') ax.set_ylabel('Y') for i in range(nb_samples): if Y[i] == 0: ax.scatter(X[i, 0], X[i, 1], marker='o', color='r') else: ax.scatter(X[i, 0], X[i, 1], marker='^', color='b') plt.show() X, Y = make_classification(n_samples=nb_samples, n_features=2, n_informative=2, n_redundant=0)
接着,把资料分成训练用跟测试用,跟之前一样。不同的是BernoulliNB里面有binarize功能,用来内部转换特徵,需要自行设定二元门槛,这里是设定0.0,建模後得到准确率。
from sklearn.model_selection import train_test_split, cross_val_score from sklearn.naive_bayes import BernoulliNB bnb = BernoulliNB(binarize=0.0) bnb.fit(X_train, Y_train) print('Bernoulli Naive Bayes score: %.3f' % bnb.score(X_test, Y_test)) // Bernoulli Naive Bayes score: 0.840 bnb_scores = cross_val_score(bnb, X, Y, scoring='accuracy', cv=10) print('Bernoulli Naive Bayes CV average score: %.3f' % bnb_scores.mean()) // Bernoulli Naive Bayes CV average score: 0.853
最後,试试看模型准不准确就完工了。
data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) Yp = bnb.predict(data) print(Yp)
最近,小弟有看到一篇资料科学家写的很浅显易懂的贝氏定理,在此跟各位分享
https://leemeng.tw/intuitive-understandind-of-bayes-rules-and-learn-from-experience.html
<<: Day6 Let's ODOO: Model(3) Decorators & Environment
这也是很多输家最爱用的手段之一,进场时说是「成长型」投资,被套牢了,改口说是「价值型」投资,你真的懂...
kotlin+mvvm+databinding+recyclerview 今天在跟朋友讨论程序码的时...
思考重点 网路是怎样连接起来的? 网路可以解决甚麽问题? 网路的本质是什麽? 核心知识 甚麽是网路 ...
照顾...是谁的工作? 当我病痛衰弱时,谁可以照顾我? 家人?朋友?爱人? 但照顾者不需要休息跟喘息...
前言 昨天讲了process 怎麽来的,今天来讲讲process 的生命周期。 process 的生...