ホームページ  >  記事  >  バックエンド開発  >  Python で単純ベイズ アルゴリズムを使用する方法の紹介

Python で単純ベイズ アルゴリズムを使用する方法の紹介

高洛峰
高洛峰オリジナル
2017-03-21 09:09:391541ブラウズ

题 タイトルが「実装」ではなく「使用」である理由をここで繰り返します:

まず第一に、専門家が提供するアルゴリズムは、効率と精度の点で私たちが作成したアルゴリズムよりも優れています。

次に、数学が苦手な人にとって、アルゴリズムを実装するために大量の公式を勉強するのは非常に苦痛です。人 繰り返しになりますが、他者が提供するアルゴリズムがニーズを満たせない場合を除き、「車輪を繰り返す」必要はありません。正 次の単語がホームです。ベイズ アルゴリズムを知らない場合は、関連情報を確認してください。ここで簡単に説明します。

1. ベイズ公式:

p (a | b) = p ( ab)/p ( B)

2. ベイズ推論:

P(A|B)=P(A)×P(B|A)/P(B)

言葉で表すと:

事後確率 =事前確率 一般的に使用される単純ベイズ アルゴリズムについて、以下で順番に説明します。

1) ガウス単純ベイズ:

属性/特徴は正規分布 (以下に示すように) に従い、主に数値特徴に使用されると仮定します。 K i は、Scikit-Learn パッケージに付属のデータを使用します。コードと手順は次のとおりです。

>>>from sklearn import datasets   ##导入包中的数据
>>> iris=datasets.load_iris()     ##加载数据
>>> iris.feature_names            ##显示特征名字
    ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
>>> iris.data                     ##显示数据
    array([[ 5.1, 3.5, 1.4, 0.2],[ 4.9, 3. , 1.4, 0.2],[ 4.7, 3.2, 1.3, 0.2]............
>>> iris.data.size                ##数据大小 ---600个
>>> iris.target_names             ##显示分类的名字 
    array([&#39;setosa&#39;, &#39;versicolor&#39;, &#39;virginica&#39;], dtype=&#39;<U10&#39;)
>>> from sklearn.naive_bayes import GaussianNB  ##导入高斯朴素贝叶斯算法
>>> clf = GaussianNB()                          ##给算法赋一个变量,主要是为了方便使用
>>> clf.fit(iris.data, iris.target)             ##开始分类。对于量特别大的样本,可以使用函数partial_fit分类,避免一次加载过多数据到内存

>>> clf.predict(iris.data[0].reshape(1,-1))       ##验证分类。标红部分特别说明:因为predict的参数是数组,data[0]是列表,所以需要转换一下
array([0])
>>> data=np.array([6,4,6,2])                      ##验证分类
>>> clf.predict(data.reshape(1,-1))
array([2])

ここで問題が発生します。正規分布に沿ってデータを判断するにはどうすればよいでしょうか。 R言語には関連する関数の判定もあり、あるいは直接描画して見ることもできますが、これらはすべてP(x, y)を座標系で直接

描画できる状況です。この例ではまだわかりませんが、この部分は後で追加します。

2) 多項分布 Naive Bayes: テキスト分類によく使用され、特徴は単語であり、値は単語の出現回数です。

##示例来在官方文档,详细说明见第一个例子
>>> import numpy as np
>>> X = np.random.randint(5, size=(6, 100))    ##返回随机整数值:范围[0,5) 大小6*100 6行100列
>>> y = np.array([1, 2, 3, 4, 5, 6])
>>> from sklearn.naive_bayes import MultinomialNB
>>> clf = MultinomialNB()
>>> clf.fit(X, y)
MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)  
>>> print(clf.predict(X[2]))
[3]

3) Bernoulli Naive Bayes: 各特徴量はブール型であり、結果は 0 または 1、つまり、出現するか否かです

##示例来在官方文档,详细说明见第一个例子
>>> import numpy as np
>>> X = np.random.randint(2, size=(6, 100))
>>> Y = np.array([1, 2, 3, 4, 4, 5])
>>> from sklearn.naive_bayes import BernoulliNB
>>> clf = BernoulliNB()
>>> clf.fit(X, Y)
BernoulliNB(alpha=1.0, binarize=0.0, class_prior=None, fit_prior=True)  
>>> print(clf.predict(X[2]))
[3]

以上がPython で単純ベイズ アルゴリズムを使用する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。