真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python+mle函數(shù),python中函數(shù)

python scikit-learn 有什么算法

1,前言

公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出代縣免費(fèi)做網(wǎng)站回饋大家。

很久不發(fā)文章,主要是Copy別人的總感覺(jué)有些不爽,所以整理些干貨,希望相互學(xué)習(xí)吧。不啰嗦,進(jìn)入主題吧,本文主要時(shí)說(shuō)的為樸素貝葉斯分類算法。與邏輯回歸,決策樹(shù)一樣,是較為廣泛使用的有監(jiān)督分類算法,簡(jiǎn)單且易于理解(號(hào)稱十大數(shù)據(jù)挖掘算法中最簡(jiǎn)單的算法)。但其在處理文本分類,郵件分類,拼寫(xiě)糾錯(cuò),中文分詞,統(tǒng)計(jì)機(jī)器翻譯等自然語(yǔ)言處理范疇較為廣泛使用,或許主要得益于基于概率理論,本文主要為小編從理論理解到實(shí)踐的過(guò)程記錄。

2,公式推斷

一些貝葉斯定理預(yù)習(xí)知識(shí):我們知道當(dāng)事件A和事件B獨(dú)立時(shí),P(AB)=P(A)(B),但如果事件不獨(dú)立,則P(AB)=P(A)P(B|A)。為兩件事件同時(shí)發(fā)生時(shí)的一般公式,即無(wú)論事件A和B是否獨(dú)立。當(dāng)然也可以寫(xiě)成P(AB)=P(B)P(A|B),表示若要兩件事同事發(fā)生,則需要事件B發(fā)生后,事件A也要發(fā)生。

由上可知,P(A)P(B|A)= P(B)P(A|B)

推出P(B|A)=

其中P(B)為先驗(yàn)概率,P(B|A)為B的后驗(yàn)概率,P(A|B)為A的后驗(yàn)概率(在這里也為似然值),P(A)為A的先驗(yàn)概率(在這也為歸一化常量)。

由上推導(dǎo)可知,其實(shí)樸素貝葉斯法就是在貝葉斯定理基礎(chǔ)上,加上特征條件獨(dú)立假設(shè),對(duì)特定輸入的X(樣本,包含N個(gè)特征),求出后驗(yàn)概率最大值時(shí)的類標(biāo)簽Y(如是否為垃圾郵件),理解起來(lái)比邏輯回歸要簡(jiǎn)單多,有木有,這也是本算法優(yōu)點(diǎn)之一,當(dāng)然運(yùn)行起來(lái)由于得益于特征獨(dú)立假設(shè),運(yùn)行速度也更快。

. 參數(shù)估計(jì)

3,參數(shù)估計(jì)

由上面推斷出的公式,我們知道其實(shí)樸素貝葉斯方法的學(xué)習(xí)就是對(duì)概率P(Y=ck)和P(X(j)=x(j)|Y=ck)的估計(jì)。我們可以用極大似然估計(jì)法估計(jì)上述先驗(yàn)概率和條件概率。

其中I(x)為指示函數(shù),若括號(hào)內(nèi)成立,則計(jì)1,否則為0。李航的課本直接給出了用極大似然(MLE)估計(jì)求出的結(jié)果,并沒(méi)給推導(dǎo)過(guò)程,

我們知道,貝葉斯較為常見(jiàn)的問(wèn)題為0概率問(wèn)題。為此,需要平滑處理,主要使用拉普拉斯平滑,如下所示:

K是類的個(gè)數(shù),Sj是第j維特征的最大取值。實(shí)際上平滑因子λ=0即為最大似然估計(jì),這時(shí)會(huì)出現(xiàn)提到的0概率問(wèn)題;而λ=1則避免了0概率問(wèn)題,這種方法被稱為拉普拉斯平滑。

4,算法流程

5,樸素貝葉斯算法優(yōu)缺點(diǎn)

優(yōu)點(diǎn):樸素貝葉斯模型發(fā)源于古典數(shù)學(xué)理論,有著堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ),以及穩(wěn)定的分類效率

需調(diào)參較少,簡(jiǎn)單高效,尤其是在文本分類/垃圾文本過(guò)濾/情感判別等自然語(yǔ)言處理有廣泛應(yīng)用。

在樣本量較少情況下,也能獲得較好效果,計(jì)算復(fù)雜度較小,即使在多分類問(wèn)題。

無(wú)論是類別類輸入還是數(shù)值型輸入(默認(rèn)符合正態(tài)分布)都有相應(yīng)模型可以運(yùn)用。

缺點(diǎn):0概率問(wèn)題,需要平滑處理,通常為拉普拉斯平滑,但加一平滑不一定為效果最好,

樸素貝葉斯有分布獨(dú)立的假設(shè)前提,生活中較少完全獨(dú)立,在屬性個(gè)數(shù)比較多或者屬性之間相關(guān)性較大時(shí),NBC模型的分類效率比不上決策樹(shù)模型。而在屬性相關(guān)性較小時(shí),NBC模型的性能最為良好。

模型注意點(diǎn):

1, 大家也知道,很多特征是連續(xù)數(shù)值型的,一般選擇使用樸素貝葉斯高斯模型。

2, 為避免0概率事件,記得平滑,簡(jiǎn)單一點(diǎn)可以用『拉普拉斯平滑』。先處理處理特征,把相關(guān)特征去掉,

3, 樸素貝葉斯分類器一般可調(diào)參數(shù)比較少,需集中精力進(jìn)行數(shù)據(jù)的預(yù)處理等特征工程工作。

6,Scikit-learn三大樸素貝葉斯模型

Scikit-learn里面有3種不同類型的樸素貝葉斯(:

1, 高斯分布型模型:用于classification問(wèn)題,假定屬性/特征是服從正態(tài)分布的,一般用在數(shù)值型特征。,

2, 多項(xiàng)式型模型:用于離散值模型里。比如文本分類問(wèn)題里面我們提到過(guò),我們不光看詞語(yǔ)是否在文本中出現(xiàn),也得看出現(xiàn)的次數(shù)。如果總詞數(shù)為n,出現(xiàn)詞數(shù)為m的話,說(shuō)起來(lái)有點(diǎn)像擲骰子n次出現(xiàn)m次這個(gè)詞的場(chǎng)景。

3, 伯努利模型:這種情況下,就如提到的bag ofwords處理方式一樣,最后得到的特征只有0(沒(méi)出現(xiàn))和1(出現(xiàn)過(guò))。

7. Scikit-learn算法實(shí)踐

小編通過(guò)實(shí)現(xiàn)樸素貝葉斯三種模型以及主要分類算法,對(duì)比發(fā)現(xiàn)跟SVM,隨機(jī)森林,融合算法相比,貝葉斯差距明顯,但其時(shí)間消耗要遠(yuǎn)低于上述算法,以下為主要算法主要評(píng)估指標(biāo))。

8. Python代碼

# -*-coding: utf-8 -*-

importtime

fromsklearn import metrics

fromsklearn.naive_bayes import GaussianNB

fromsklearn.naive_bayes import MultinomialNB

fromsklearn.naive_bayes import BernoulliNB

fromsklearn.neighbors import KNeighborsClassifier

fromsklearn.linear_model import LogisticRegression

fromsklearn.ensemble import RandomForestClassifier

fromsklearn import tree

fromsklearn.ensemble import GradientBoostingClassifier

fromsklearn.svm import SVC

importnumpy as np

importurllib

# urlwith dataset

url ="-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"

#download the file

raw_data= urllib.request.urlopen(url)

#load the CSV file as a numpy matrix

dataset= np.loadtxt(raw_data, delimiter=",")

#separate the data from the target attributes

X =dataset[:,0:7]

#X=preprocessing.MinMaxScaler().fit_transform(x)

#print(X)

y =dataset[:,8]

print("\n調(diào)用scikit的樸素貝葉斯算法包GaussianNB ")

model= GaussianNB()

start_time= time.time()

model.fit(X,y)

print('training took %fs!' % (time.time() - start_time))

print(model)

expected= y

predicted= model.predict(X)

print(metrics.classification_report(expected,predicted))

print(metrics.confusion_matrix(expected,predicted))

print("\n調(diào)用scikit的樸素貝葉斯算法包MultinomialNB ")

model= MultinomialNB(alpha=1)

start_time= time.time()

model.fit(X,y)

print('training took %fs!' % (time.time() - start_time))

print(model)

expected= y

predicted= model.predict(X)

print(metrics.classification_report(expected,predicted))

print(metrics.confusion_matrix(expected,predicted))

print("\n調(diào)用scikit的樸素貝葉斯算法包BernoulliNB ")

model= BernoulliNB(alpha=1,binarize=0.0)

start_time= time.time()

model.fit(X,y)

print('training took %fs!' % (time.time() - start_time))

print(model)

expected= y

predicted= model.predict(X)

print(metrics.classification_report(expected,predicted))

print(metrics.confusion_matrix(expected,predicted))

print("\n調(diào)用scikit的KNeighborsClassifier ")

model= KNeighborsClassifier()

start_time= time.time()

model.fit(X,y)

print('training took %fs!' % (time.time() - start_time))

print(model)

expected= y

predicted= model.predict(X)

print(metrics.classification_report(expected,predicted))

print(metrics.confusion_matrix(expected,predicted))

print("\n調(diào)用scikit的LogisticRegression(penalty='l2')?")

model= LogisticRegression(penalty='l2')

start_time= time.time()

model.fit(X,y)

print('training took %fs!' % (time.time() - start_time))

print(model)

expected= y

predicted= model.predict(X)

print(metrics.classification_report(expected,predicted))

print(metrics.confusion_matrix(expected,predicted))

print("\n調(diào)用scikit的RandomForestClassifier(n_estimators=8)? ")

model= RandomForestClassifier(n_estimators=8)

start_time= time.time()

model.fit(X,y)

print('training took %fs!' % (time.time() - start_time))

print(model)

expected= y

predicted= model.predict(X)

print(metrics.classification_report(expected,predicted))

print(metrics.confusion_matrix(expected,predicted))

print("\n調(diào)用scikit的tree.DecisionTreeClassifier()?")

model= tree.DecisionTreeClassifier()

start_time= time.time()

model.fit(X,y)

print('training took %fs!' % (time.time() - start_time))

print(model)

expected= y

predicted= model.predict(X)

print(metrics.classification_report(expected,predicted))

print(metrics.confusion_matrix(expected,predicted))

print("\n調(diào)用scikit的GradientBoostingClassifier(n_estimators=200) ")

model= GradientBoostingClassifier(n_estimators=200)

start_time= time.time()

model.fit(X,y)

print('training took %fs!' % (time.time() - start_time))

print(model)

expected= y

predicted= model.predict(X)

print(metrics.classification_report(expected,predicted))

print(metrics.confusion_matrix(expected,predicted))

print("\n調(diào)用scikit的SVC(kernel='rbf', probability=True) ")

model= SVC(kernel='rbf', probability=True)

start_time= time.time()

model.fit(X,y)

print('training took %fs!' % (time.time() - start_time))

print(model)

expected= y

predicted= model.predict(X)

print(metrics.classification_report(expected,predicted))

print(metrics.confusion_matrix(expected,predicted))

"""

# 預(yù)處理代碼集錦

importpandas as pd

df=pd.DataFrame(dataset)

print(df.head(3))

print(df.describe())##描述性分析

print(df.corr())##各特征相關(guān)性分析

##計(jì)算每行每列數(shù)據(jù)的缺失值個(gè)數(shù)

defnum_missing(x):

return sum(x.isnull())

print("Missing values per column:")

print(df.apply(num_missing, axis=0)) #axis=0代表函數(shù)應(yīng)用于每一列

print("\nMissing values per row:")

print(df.apply(num_missing, axis=1).head()) #axis=1代表函數(shù)應(yīng)用于每一行"""

概率論mle什么意思

mle的意思是最大似然估計(jì),英文為maximum likelihood estimation,簡(jiǎn)稱MLE。最大似然估計(jì)一種重要而普遍的求估計(jì)量的方法。最大似然法明確地使用概率模型,其目標(biāo)是尋找能夠以較高概率產(chǎn)生觀察數(shù)據(jù)的系統(tǒng)發(fā)生樹(shù)。最大似然法是一類完全基于統(tǒng)計(jì)的系統(tǒng)發(fā)生樹(shù)重建方法的代表。

最大似然估計(jì)是一種統(tǒng)計(jì)方法,它用來(lái)求一個(gè)樣本集的相關(guān)概率密度函數(shù)的參數(shù)。這個(gè)方法最早是遺傳學(xué)家以及統(tǒng)計(jì)學(xué)家羅納德·費(fèi)雪爵士在1912年至1922年間開(kāi)始使用的?!八迫弧笔菍?duì)likelihood的一種較為貼近文言文的翻譯,“似然”用現(xiàn)代的中文來(lái)說(shuō)即“可能性”。故而,若稱之為“最大可能性估計(jì)”則更加通俗易懂。

最大后驗(yàn)概率MAP

統(tǒng)計(jì)學(xué)中,MAP為最大后驗(yàn)概率(Maximum a posteriori)的縮寫(xiě)。估計(jì)方法根據(jù)經(jīng)驗(yàn)數(shù)據(jù)獲得對(duì)難以觀察的量的點(diǎn)估計(jì)。它與最大似然估計(jì)中的Fisher方法有密切關(guān)系,但是它使用了一個(gè)增大的優(yōu)化目標(biāo),這種方法將被估計(jì)量的先驗(yàn)分布融合到其中。所以最大后驗(yàn)估計(jì)可以看作是規(guī)則化的最大似然估計(jì)。

幾何分布的參數(shù)估計(jì): 現(xiàn)在已知一組數(shù)據(jù)服從幾何分布,如何從這組數(shù)據(jù)中估計(jì)出參數(shù)P???matlab?公式?

matlab中有函數(shù)mle(最大似然估計(jì))可以估計(jì)常用分布的參數(shù)

下面是一段測(cè)試程序,用geornd生成服從幾何分布的一組數(shù)據(jù)

p = 0.01;

x = geornd(p,[1 100]);

[PEstimate,PCI] = mle(x,'distribution','geometric')

PEstimate 是估計(jì)出來(lái)的參數(shù)值

PCI 是置信度為95%區(qū)間

你把你的數(shù)據(jù)導(dǎo)進(jìn)x里就可以了得到估計(jì)的參數(shù)了

極大似然估計(jì)MLE

極大似然估計(jì)(Maximum Likelihood Estimation,MLE),也稱最大似然估計(jì)。統(tǒng)計(jì)學(xué)中,極大似然估計(jì)是重要的參數(shù)估計(jì)方法;機(jī)器學(xué)習(xí)領(lǐng)域,也經(jīng)??吹街苯邮褂脴O大似然估計(jì)以及使用極大似然思想的方法。

在這篇筆記里,主要涉及極大似然的思想和非參數(shù)極大似然估計(jì)NPMLE。

在參數(shù)估計(jì)[1]任務(wù)中,極大似然估計(jì)在 給定樣本 且 已知概率分布(密度) 條件下,估計(jì)分布參數(shù)的重要方法。

(在機(jī)器學(xué)習(xí)中,會(huì)用到未知概率分布(密度)的極大似然估計(jì),見(jiàn)下文)

極大似然估計(jì)的核心思想,就是估計(jì)出使樣本出現(xiàn)概率最大的參數(shù)作為分布(密度)參數(shù);從另一個(gè)角度,極大似然估計(jì)認(rèn)為已經(jīng)發(fā)生的(這些樣本出現(xiàn))就是是概率最大的,從而求出分布(密度)參數(shù)。

極大似然估計(jì)在絕大多數(shù)概率論或統(tǒng)計(jì)課程中都有詳細(xì)的介紹,我這里就不贅述了,具體參見(jiàn)課本和網(wǎng)上資料。

這里貼幾個(gè)還不錯(cuò)的網(wǎng)上資料:

維基百科 《極大似然估計(jì)》 [2]

《最大似然估計(jì)》 [3]

筆者在參考李航博士《統(tǒng)計(jì)學(xué)習(xí)方法》[4]學(xué)習(xí)最大熵模型,遇到條件概率P(Y|X)的對(duì)數(shù)似然函數(shù)(6.2.4節(jié))時(shí),真的是一頭霧水。如下圖

一直接觸的極大似然估計(jì)都是已知模型,通過(guò)樣本求參數(shù)。而這個(gè)似然函數(shù),模型未知,參數(shù)未知,更不知道是怎么來(lái)的,懵圈了。。。

為了搞清楚這個(gè)問(wèn)題,查閱了《統(tǒng)計(jì)學(xué)習(xí)方法》的參考文獻(xiàn)《A Maximum Entropy Approach to Natural Language Processing》[5],也沒(méi)有搞清楚這個(gè)問(wèn)題。

后來(lái)各種關(guān)鍵字在google上搜,終于搜到了比較靠譜的信息,大概如下:

[6]

[7]

[8]

這大概是一個(gè)經(jīng)驗(yàn)似然(Empirical Likelihood)問(wèn)題,但是有點(diǎn)艱深,筆者并不打算深入挖掘下去,只是從機(jī)器學(xué)習(xí)數(shù)學(xué)基礎(chǔ)的角度搞清楚上述公式的由來(lái)。筆者看到了[4]的第一個(gè)公式,終于明白了李航博士書(shū)中公式的由來(lái),如下。

非參數(shù)極大似然估計(jì)(Non-Parametric Maximum Likelihood Estimation,NPMLE),在大多數(shù)初級(jí)的概率論課本里是沒(méi)有的。

這里根據(jù)常規(guī)MLE的假設(shè)和建模過(guò)程,來(lái)簡(jiǎn)略推導(dǎo)NPMLE的似然函數(shù)。下圖[3]為常規(guī)MLE的假設(shè)和似然函數(shù)建模過(guò)程。

參考常規(guī)MLE,假設(shè)非參數(shù)的分布有相同的采樣,但沒(méi)有參數(shù)。

[1]、百度百科 《參數(shù)估計(jì)》

[2]、維基百科 《極大似然估計(jì)》

[3]、 《最大似然估計(jì)》

[4]、李航《統(tǒng)計(jì)學(xué)習(xí)方法》

[5]、Adam L. Berger, Stephen A. Della Pietra《A Maximum Entropy Approach to Natural Language Processing》

[6]、

[7]、

[8]、


分享標(biāo)題:python+mle函數(shù),python中函數(shù)
URL標(biāo)題:http://weahome.cn/article/dsgcopg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部