国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python中如何使用樸素貝葉斯算法

2019-11-25 16:15:47
字體:
來源:轉載
供稿:網友

這里再重復一下標題為什么是"使用"而不是"實現":

首先,專業人士提供的算法比我們自己寫的算法無論是效率還是正確率上都要高。

其次,對于數學不好的人來說,為了實現算法而去研究一堆公式是很痛苦的事情。

再次,除非他人提供的算法滿足不了自己的需求,否則沒必要"重復造輪子"。

下面言歸正傳,不了解貝葉斯算法的可以去查一下相關資料,這里只是簡單介紹一下:

1.貝葉斯公式:

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

2.貝葉斯推斷:

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

用文字表述:

后驗概率=先驗概率×相似度/標準化常量

而貝葉斯算法要解決的問題就是如何求出相似度,即:P(B|A)的值

3. 在scikit-learn包中提供了三種常用的樸素貝葉斯算法,下面依次說明:

1)高斯樸素貝葉斯:假設屬性/特征是服從正態分布的(如下圖),主要應用于數值型特征。

 

使用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(['setosa', 'versicolor', 'virginica'], dtype='<U10')>>> 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)多項式分布樸素貝葉斯:常用于文本分類,特征是單詞,值是單詞出現的次數。

##示例來在官方文檔,詳細說明見第一個例子>>> 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)伯努力樸素貝葉斯:每個特征都是是布爾型,得出的結果是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]

補充說明:此文還不完善,示例一中也有部分說明需要寫,最近事情較多,后續會逐漸完善。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁河县| 永靖县| 会理县| 博客| 潍坊市| 甘南县| 南乐县| 咸丰县| 彩票| 延庆县| 涪陵区| 囊谦县| 黄浦区| 石柱| 北辰区| 德兴市| 阿拉善左旗| 孟州市| 鹿泉市| 巢湖市| 迁安市| 唐河县| 平安县| 普陀区| 芜湖市| 旬邑县| 浦城县| 河曲县| 古蔺县| 平武县| 荥阳市| 旌德县| 蒙城县| 沙田区| 兴业县| 阿鲁科尔沁旗| 马尔康县| 定襄县| 肥西县| 息烽县| 泽普县|