最小错误率贝叶斯决策的基本思想_太赞了!机器学习基础核心算法:贝叶斯分类!(附西瓜书案例及代码实现)...
?Datawhale?
作者:尹曉丹,Datawhale優(yōu)秀學(xué)習(xí)者
寄語:首先,簡單介紹了生成模型和判別模型,對條件概率、先驗(yàn)概率和后驗(yàn)概率進(jìn)行了總結(jié);其次,對樸素貝葉斯的原理及公式推導(dǎo)做了詳細(xì)解讀;再次,對三種可能遇到的問題進(jìn)行了解析,給出了合理的解決辦法;最后,對樸素貝葉斯的sklearn參數(shù)和代碼進(jìn)行了詳解。貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎(chǔ),故統(tǒng)稱為貝葉斯分類。而樸素貝葉斯分類是貝葉斯分類中最簡單,也是應(yīng)用最為廣泛的分類算法之一。樸素貝葉斯方法是在貝葉斯算法的基礎(chǔ)上進(jìn)行了相應(yīng)的簡化,即假定給定目標(biāo)值時屬性之間相互條件獨(dú)立。知識框架
相關(guān)概念
生成模型
概率統(tǒng)計理論中, 生成模型是指能夠隨機(jī)生成觀測數(shù)據(jù)的模型,尤其是在給定某些隱含參數(shù)的條件下。它給觀測值和標(biāo)注數(shù)據(jù)序列指定一個聯(lián)合概率分布。
在機(jī)器學(xué)習(xí)中,生成模型可以用來直接對數(shù)據(jù)建模(例如根據(jù)某個變量的概率密度函數(shù)進(jìn)行數(shù)據(jù)采樣),也可以用來建立變量間的條件概率分布。條件概率分布可以由生成模型根據(jù)貝葉斯定理形成。
常見的基于生成模型算法有高斯混合模型和其他混合模型、隱馬爾可夫模型、隨機(jī)上下文無關(guān)文法、樸素貝葉斯分類器、AODE分類器、潛在狄利克雷分配模型、受限玻爾茲曼機(jī)等。
舉個栗子:要確定一個瓜是好瓜還是壞瓜,用判別模型的方法使從歷史數(shù)據(jù)中學(xué)習(xí)到模型,然后通過提取這個瓜的特征來預(yù)測出這只瓜是好瓜的概率,是壞瓜的概率。
判別模型
在機(jī)器學(xué)習(xí)領(lǐng)域判別模型是一種對未知數(shù)據(jù) y 與已知數(shù)據(jù) x 之間關(guān)系進(jìn)行建模的方法。
判別模型是一種基于概率理論的方法。已知輸入變量 x ,判別模型通過構(gòu)建條件概率分布 P(y|x) 預(yù)測 y 。
常見的基于判別模型算法有邏輯回歸、線性回歸、支持向量機(jī)、提升方法、條件隨機(jī)場、人工神經(jīng)網(wǎng)絡(luò)、隨機(jī)森林、感知器。
舉個栗子:利用生成模型是根據(jù)好瓜的特征首先學(xué)習(xí)出一個好瓜的模型,然后根據(jù)壞瓜的特征學(xué)習(xí)得到一個壞瓜的模型,然后從需要預(yù)測的瓜中提取特征,放到生成好的好瓜的模型中看概率是多少,在放到生產(chǎn)的壞瓜模型中看概率是多少,哪個概率大就預(yù)測其為哪個。
生成模型與判別模型的區(qū)別
生成模型是所有變量的全概率模型,而判別模型是在給定觀測變量值前提下目標(biāo)變量條件概率模型。
因此,生成模型能夠用于模擬(即生成)模型中任意變量的分布情況,而判別模型只能根據(jù)觀測變量得到目標(biāo)變量的采樣。判別模型不對觀測變量的分布建模,因此它不能夠表達(dá)觀測變量與目標(biāo)變量之間更復(fù)雜的關(guān)系。因此,生成模型更適用于無監(jiān)督的任務(wù),如分類和聚類。
先驗(yàn)概率、條件概率
條件概率
就是事件A在事件B發(fā)生的條件下發(fā)生的概率。條件概率表示為P(A|B),讀作“A在B發(fā)生的條件下發(fā)生的概率”。
先驗(yàn)概率
在貝葉斯統(tǒng)計中,某一不確定量 p 的先驗(yàn)概率分布是在考慮"觀測數(shù)據(jù)"前,能表達(dá) p 不確定性的概率分布。它旨在描述這個不確定量的不確定程度,而不是這個不確定量的隨機(jī)性。這個不確定量可以是一個參數(shù),或者是一個隱含變量。
后驗(yàn)概率
在貝葉斯統(tǒng)計中,一個隨機(jī)事件或者一個不確定事件的后驗(yàn)概率是在考慮和給出相關(guān)證據(jù)或數(shù)據(jù)后所得到的條件概率。
同樣,后驗(yàn)概率分布是一個未知量(視為隨機(jī)變量)基于試驗(yàn)和調(diào)查后得到的概率分布。“后驗(yàn)”在本文中代表考慮了被測試事件的相關(guān)證據(jù)。
貝葉斯決策理論
貝葉斯決策論是概率框架下實(shí)施決策的基本方法,對分類任務(wù)來說,在所有相關(guān)概率都已知的理想情形下,貝葉斯決策論考慮如何基于這些概率和誤判損失來選擇最優(yōu)的類別標(biāo)記。
假設(shè)有N種可能標(biāo)記,是將類誤分類為所產(chǎn)生的損失,基于后驗(yàn)概率可以獲得樣本x分類為所產(chǎn)生的期望損失 ,即在樣本x上的條件風(fēng)險:我們的任務(wù)是尋找一個判定準(zhǔn)則 以最小化總體風(fēng)險顯然,對每個樣本,若能最小化條件風(fēng)險,則總體風(fēng)險也將被最小化。這就產(chǎn)生了貝葉斯判定準(zhǔn)則:最小化總體風(fēng)險,只需要在每個樣本上選擇那個能使條件風(fēng)險最小的類別標(biāo)記,即:此時,稱作貝葉斯最優(yōu)分類器,與之對應(yīng)的總體風(fēng)險稱為貝葉斯風(fēng)險,反映了分類器能達(dá)到的最好性能,即機(jī)器學(xué)習(xí)所產(chǎn)生的模型精度的上限。具體來說,若目標(biāo)是最小化分類錯誤率(對應(yīng)0/1損失),則可以用損失改寫,得到條件風(fēng)險和最小化分類錯誤率的最優(yōu)分類器分別為:即對每個樣本x,選擇能使后驗(yàn)概率P(c|x)最大的類別標(biāo)識。獲得后驗(yàn)概率的兩種方法:
判別式模型 : 給定x, 可以通過直接建模P(c|x)來預(yù)測c。
生成模型 : 先對聯(lián)合分布p(x,c)模,然后再有此獲得P(c|x)。
貝葉斯公式
對生成模型來說,必然考慮:其中P(c)是“先驗(yàn)概率”;P(x|c)是樣本x對于類標(biāo)記c的類條件概率,或稱為“似然”;P(x)是用于歸一化的“證據(jù)”因子。上式即為貝葉斯公式,可以將其看做:
對類條件概率P(x|c)來說,直接根據(jù)樣本出現(xiàn)的頻率來估計將會遇到嚴(yán)重的困難,所以引入了極大似然估計。
極大似然估計估計類條件概率有一種常用的策略就是先假定其具有某種確定的概率分布形式,再基于訓(xùn)練樣本對概率分布的參數(shù)進(jìn)行估計。
假設(shè)P(x|c)具有某種確定的形式并且被參數(shù)唯一確定,則我們的任務(wù)就是利用訓(xùn)練結(jié)D估計參數(shù)。為了明確期間,我們將P(x|c)記為。舉個通俗的例子:假設(shè)一個袋子裝有白球與紅球,比例未知,現(xiàn)在抽取10次(每次抽完都放回,保證事件獨(dú)立性),假設(shè)抽到了7次白球和3次紅球,在此數(shù)據(jù)樣本條件下,可以采用最大似然估計法求解袋子中白球的比例(最大似然估計是一種“模型已定,參數(shù)未知”的方法)。
當(dāng)然,這種數(shù)據(jù)情況下很明顯,白球的比例是70%,但如何通過理論的方法得到這個答案呢?一些復(fù)雜的條件下,是很難通過直觀的方式獲得答案的,這時候理論分析就尤為重要了,這也是學(xué)者們?yōu)楹我岢鲎畲笏迫还烙嫷脑颉N覀兛梢远x從袋子中抽取白球和紅球的概率如下:
x1為第一次采樣,x2為第二次采樣,f為模型, theta為模型參數(shù)。其中θ是未知的,因此,我們定義似然L為:兩邊取ln,取ln是為了將右邊的乘號變?yōu)榧犹?#xff0c;方便求導(dǎo)。兩邊取ln的結(jié)果,左邊的通常稱之為對數(shù)似然。這是平均對數(shù)似然。最大似然估計的過程,就是找一個合適的theta,使得平均對數(shù)似然的值為最大。因此,可以得到以下公式:
最大似然估計的公式。這里討論的是2次采樣的情況,
當(dāng)然也可以拓展到多次采樣的情況:最大似然估計的公式(n次采樣)。我們定義M為模型(也就是之前公式中的f),表示抽到白球的概率為θ,而抽到紅球的概率為(1-θ),因此10次抽取抽到白球7次的概率可以表示為:將其描述為平均似然可得:10次抽取抽到白球7次的平均對數(shù)似然,抽球的情況比較簡單,可以直接用平均似然來求解。那么最大似然就是找到一個合適的theta,獲得最大的平均似然。因此我們可以對平均似然的公式對theta求導(dǎo),并另導(dǎo)數(shù)為0。求得,θ=0.7。求導(dǎo)過程 由此可得,當(dāng)抽取白球的概率為0.7時,最可能產(chǎn)生10次抽取抽到白球7次的事件。以上就用到了最大似然估計的思想。令Dc表示訓(xùn)練集D中第c類樣本組成的集合,假設(shè)這些集合是獨(dú)立同分布的,則對參數(shù)θc、對于數(shù)據(jù)集Dc的似然是:對θc進(jìn)行激發(fā)似然估計買就是去尋找能最大化似然函數(shù)的參數(shù)值θc直觀上,極大似然估計是在試圖在θc的所有可能的去職中,找到一個能使數(shù)據(jù)出現(xiàn)最大“可能性”的最大值上面的式子中的連乘操作容易造成下溢,通常使用對數(shù)似然:
此時,參數(shù)的極大似然估計為例如,在連續(xù)屬性的情形下,假設(shè)概率密度函數(shù),則參數(shù)和。也就是說通過極大似然發(fā)得到的額正態(tài)分布均值就是樣本均值,方差就是的均值。這顯然是一個符合只覺得結(jié)果,在離散屬性情形下,也可以通過類似的方法來估計類條件概率。需要注意的是這種方法雖然能夠使類條件概率估計變得簡單,但是估計結(jié)果準(zhǔn)確性嚴(yán)重依賴于所假設(shè)的概率分布形式是否符合潛在的真實(shí)數(shù)據(jù)分布。在顯示生活中往往需要應(yīng)用任務(wù)本身的經(jīng)驗(yàn)知識,“猜測”則會導(dǎo)致誤導(dǎo)性的結(jié)果。
貝葉斯分類器的訓(xùn)練過程就是參數(shù)估計。總結(jié)最大似然法估計參數(shù)的過程,一般分為以下四個步驟:寫出似然函數(shù);
對似然函數(shù)取對數(shù),并整理;
求導(dǎo)數(shù),令偏導(dǎo)數(shù)為0,得到似然方程組;
解似然方程組,得到所有參數(shù)即為所求。
樸素貝葉斯分類器
基于貝葉斯公式來估計后驗(yàn)概率P(c|x)主要困難在于類條件概率P(x|c)是所有屬性上的聯(lián)合概率,難以從有限的訓(xùn)練樣本直接估計而得。
基于有限訓(xùn)練樣本直接計算聯(lián)合概率,在計算上將會遭遇組合爆炸問題;在數(shù)據(jù)上將會遭遇樣本稀疏問題;屬性越多,問題越嚴(yán)重。
為了避開這個障礙,樸素貝葉斯分類器采用了“屬性條件獨(dú)立性假設(shè)”:對已知類別,假設(shè)所有屬性相互獨(dú)立。換言之,假設(shè)每個屬性獨(dú)立的對分類結(jié)果發(fā)生影響相互獨(dú)立。
回答西瓜的例子就可以認(rèn)為{色澤 根蒂 敲聲 紋理 臍部 觸感}這些屬性對西瓜是好還是壞的結(jié)果所產(chǎn)生的影響相互獨(dú)立。
基于條件獨(dú)立性假設(shè),對于多個屬性的后驗(yàn)概率可以寫成:
d為屬性數(shù)目,是在第個屬性上取值。對于所有的類別來說相同,基于極大似然的貝葉斯判定準(zhǔn)則有樸素貝葉斯的表達(dá)式:
極值問題情況下每個類的分類概率
很多時候遇到求出各種目標(biāo)函數(shù)(object function)的最值問題(最大值或者最小值)。關(guān)于函數(shù)最值問題,其實(shí)在高中的時候我們就已經(jīng)了解不少,最經(jīng)典的方法就是:直接求出極值點(diǎn)。
這些極值點(diǎn)的梯度為0。若極值點(diǎn)唯一,則這個點(diǎn)就是代入函數(shù)得出的就是最值;若極值點(diǎn)不唯一,那么這些點(diǎn)中,必定存在最小值或者最大值(去除函數(shù)的左右的最端點(diǎn)),所以把極值代入函數(shù),經(jīng)對比后可得到結(jié)果。
請注意:并不一定所有函數(shù)的極值都可以通過設(shè)置導(dǎo)數(shù)為0的方式求出。也就是說,有些問題中當(dāng)我們設(shè)定導(dǎo)數(shù)為0時,未必能直接計算出滿足導(dǎo)數(shù)為0的點(diǎn)(比如邏輯回歸模型),這時候就需要利用數(shù)值計算相關(guān)的技術(shù)(最典型為梯度下降法,牛頓法……)。
下溢問題如何解決
數(shù)值下溢問題:是指計算機(jī)浮點(diǎn)數(shù)計算的結(jié)果小于可以表示的最小數(shù),因?yàn)橛嬎銠C(jī)的能力有限,當(dāng)數(shù)值小于一定數(shù)時,其無法精確保存,會造成數(shù)值的精度丟失,由上述公式可以看到,求概率時多個概率值相乘,得到的結(jié)果往往非常小;因此通常采用取對數(shù)的方式,將連乘轉(zhuǎn)化為連加,以避免數(shù)值下溢。
零概率問題如何解決?
零概率問題,就是在計算實(shí)例的概率時,如果某個量x,在觀察樣本庫(訓(xùn)練集)中沒有出現(xiàn)過,會導(dǎo)致整個實(shí)例的概率結(jié)果是0。
在實(shí)際的模型訓(xùn)練過程中,可能會出現(xiàn)零概率問題(因?yàn)橄闰?yàn)概率和反條件概率是根據(jù)訓(xùn)練樣本算的,但訓(xùn)練樣本數(shù)量不是無限的,所以可能出現(xiàn)有的情況在實(shí)際中存在,但在訓(xùn)練樣本中沒有,導(dǎo)致為0的概率值,影響后面后驗(yàn)概率的計算)。
即便可以繼續(xù)增加訓(xùn)練數(shù)據(jù)量,但對于有些問題來說,數(shù)據(jù)怎么增多也是不夠的。這時我們說模型是不平滑的,我們要使之平滑,一種方法就是將訓(xùn)練(學(xué)習(xí))的方法換成貝葉斯估計。
現(xiàn)在看一個示例,及P(敲聲=清脆∣好瓜=是)=8/0=0。不論樣本的其他屬性如何,分類結(jié)果都會為“好瓜=否”,這樣顯然不太合理。
樸素貝葉斯算法的先天缺陷
其他屬性攜帶的信息被訓(xùn)練集中某個分類下未出現(xiàn)的屬性值“抹去”,造成預(yù)測出來的概率絕對為0。為了彌補(bǔ)這一缺陷,前輩們引入了拉普拉斯平滑的方法:對先驗(yàn)概率的分子(劃分的計數(shù))加1,分母加上類別數(shù);對條件概率分子加1,分母加上對應(yīng)特征的可能取值數(shù)量。這樣在解決零概率問題的同時,也保證了概率和依然為1:其中,N表示數(shù)據(jù)集中分類標(biāo)簽,表示第個屬性的取值類別數(shù),樣本容量,表示類別的記錄數(shù)量,表示類別中第個屬性取值為的記錄數(shù)量。將這兩個式子應(yīng)用到上面的計算過程中,就可以彌補(bǔ)樸素貝葉斯算法的這一缺陷問題。用西瓜的數(shù)據(jù)來看,當(dāng)我們計算 P(好瓜=是) 時,樣本有17個,所以|D| = 17,N,好瓜標(biāo)簽可以分為{是,否}兩類,所以N=2,(好瓜=是)的樣本個數(shù)有8個,所以這里。綜上,根據(jù)拉普拉斯平滑后有P(色澤=青綠|好瓜=是)時,色澤青綠的樣本有8個,所以|D_c| = 8,色澤標(biāo)簽可以分為{青綠,淺白,烏黑}三類,所以N=3,(好瓜=是)的樣本個數(shù)有3個,所以這里=3。綜上,根據(jù)拉普拉斯平滑后有
同理,分析可知,之前不合理的P(敲聲=清脆∣好瓜=是)=80=0P(敲聲=清脆|好瓜=是)=\frac{8}{0}=0P(敲聲=清脆∣好瓜=是)=?8/0?=0在進(jìn)行拉普拉斯平滑后為:
顯然結(jié)果不是0,使結(jié)果變得合理。優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
1. 樸素貝葉斯模型有穩(wěn)定的分類效率。2. 對小規(guī)模的數(shù)據(jù)表現(xiàn)很好,能處理多分類任務(wù),適合增量式訓(xùn)練,尤其是數(shù)據(jù)量超出內(nèi)存時,可以一批批的去增量訓(xùn)練。3. 對缺失數(shù)據(jù)不太敏感,算法也比較簡單,常用于文本分類。缺點(diǎn)
1. 理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實(shí)際上并非總是如此,這是因?yàn)闃闼刎惾~斯模型給定輸出類別的情況下,假設(shè)屬性之間相互獨(dú)立,這個假設(shè)在實(shí)際應(yīng)用中往往是不成立的,在屬性個數(shù)比較多或者屬性之間相關(guān)性較大時,分類效果不好。而在屬性相關(guān)性較小時,樸素貝葉斯性能最為良好。對于這一點(diǎn),有半樸素貝葉斯之類的算法通過考慮部分關(guān)聯(lián)性適度改進(jìn)。2. 需要知道先驗(yàn)概率,且先驗(yàn)概率很多時候取決于假設(shè),假設(shè)的模型可以有很多種,因此在某些時候會由于假設(shè)的先驗(yàn)?zāi)P偷脑驅(qū)е骂A(yù)測效果不佳。3. 由于我們是通過先驗(yàn)和數(shù)據(jù)來決定后驗(yàn)的概率從而決定分類,所以分類決策存在一定的錯誤率。4. 對輸入數(shù)據(jù)的表達(dá)形式很敏感。sklearn參數(shù)詳解
高斯樸素貝葉斯算法是假設(shè)特征的可能性(即概率)為高斯分布。
class sklearn.naive_bayes.GaussianNB(priors=None)
參數(shù):
1. priors : 先驗(yàn)概率大小,如果沒有給定,模型則根據(jù)樣本數(shù)據(jù)自己計算(利用極大似然法)。
2. var_smoothing:可選參數(shù),所有特征的最大方差
屬性:
3. class_prior_ : 每個樣本的概率
4. class_count : 每個類別的樣本數(shù)量
5. classes_ : 分類器已知的標(biāo)簽類型
6. theta_ : 每個類別中每個特征的均值
7. sigma_ : 每個類別中每個特征的方差
8. epsilon_ : 方差的絕對加值方法
貝葉斯的方法和其他模型的方法一致
1. fit(X,Y) : 在數(shù)據(jù)集(X,Y)上擬合模型。
2. get_params() : 獲取模型參數(shù)。
3. predict(X) : 對數(shù)據(jù)集X進(jìn)行預(yù)測。
4. predict_log_proba(X) : 對數(shù)據(jù)集X預(yù)測,得到每個類別的概率對數(shù)值。
5. predict_proba(X) : 對數(shù)據(jù)集X預(yù)測,得到每個類別的概率。
6. score(X,Y) : 得到模型在數(shù)據(jù)集(X,Y)的得分情況。
構(gòu)建樸素貝葉斯模型
這里采用GaussianNB 高斯樸素貝葉斯,概率密度函數(shù)為:import numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inlinefrom sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom collections import Counterimport mathimport?math# datadef create_data(): iris = load_iris() df = pd.DataFrame(iris.data, columns=iris.feature_names) df['label'] = iris.target df.columns = ['sepal length', 'sepal width', 'petal length', 'petal width', 'label'] data = np.array(df.iloc[:100, :]) # print(data)????return?data[:,:-1],?data[:,-1]import mathclass NaiveBayes: def __init__(self): self.model = None # 數(shù)學(xué)期望 @staticmethod def mean(X): """計算均值 Param: X : list or np.ndarray Return: avg : float """ avg = 0.0 # ========= show me your code ================== avg = sum(X) / float(len(X)) # ========= show me your code ================== return avg # 標(biāo)準(zhǔn)差(方差) def stdev(self, X): """計算標(biāo)準(zhǔn)差 Param: X : list or np.ndarray Return: res : float """ res = 0.0 # ========= show me your code ================== avg = self.mean(X) res = math.sqrt(sum([pow(x - avg, 2) for x in X]) / float(len(X))) # ========= show me your code ================== return res # 概率密度函數(shù) def gaussian_probability(self, x, mean, stdev): """根據(jù)均值和標(biāo)注差計算x符號該高斯分布的概率 Parameters: ---------- x : 輸入 mean : 均值 stdev : 標(biāo)準(zhǔn)差 Return: res : float, x符合的概率值 """ res = 0.0 # ========= show me your code ================== exponent = math.exp(-(math.pow(x - mean, 2) / (2 * math.pow(stdev, 2)))) res = (1 / (math.sqrt(2 * math.pi) * stdev)) * exponent # ========= show me your code ================== return res # 處理X_train def summarize(self, train_data): """計算每個類目下對應(yīng)數(shù)據(jù)的均值和標(biāo)準(zhǔn)差 Param: train_data : list Return : [mean, stdev] """ summaries = [0.0, 0.0] # ========= show me your code ================== summaries = [(self.mean(i), self.stdev(i)) for i in zip(*train_data)] # ========= show me your code ================== return summaries # 分類別求出數(shù)學(xué)期望和標(biāo)準(zhǔn)差 def fit(self, X, y): labels = list(set(y)) data = {label: [] for label in labels} for f, label in zip(X, y): data[label].append(f) self.model = { label: self.summarize(value) for label, value in data.items() } return 'gaussianNB train done!' # 計算概率 def calculate_probabilities(self, input_data): """計算數(shù)據(jù)在各個高斯分布下的概率 Paramter: input_data : 輸入數(shù)據(jù) Return: probabilities : {label : p} """ # summaries:{0.0: [(5.0, 0.37),(3.42, 0.40)], 1.0: [(5.8, 0.449),(2.7, 0.27)]} # input_data:[1.1, 2.2] probabilities = {} # ========= show me your code ================== for label, value in self.model.items(): probabilities[label] = 1 for i in range(len(value)): mean, stdev = value[i] probabilities[label] *= self.gaussian_probability( input_data[i], mean, stdev) # ========= show me your code ================== return probabilities # 類別 def predict(self, X_test): # {0.0: 2.9680340789325763e-27, 1.0: 3.5749783019849535e-26} label = sorted(self.calculate_probabilities(X_test).items(), key=lambda x: x[-1])[-1][0] return label # 計算得分 def score(self, X_test, y_test): right = 0 for X, y in zip(X_test, y_test): label = self.predict(X) if label == y: right += 1????????return?right?/?float(len(X_test))model = NaiveBayes()model.fit(X_train,?y_train)print(model.predict([3.4, 6.2, 2.0, 0.3]))model.score(X_test,?y_test)“為沉迷學(xué)習(xí)點(diǎn)贊↓
總結(jié)
以上是生活随笔為你收集整理的最小错误率贝叶斯决策的基本思想_太赞了!机器学习基础核心算法:贝叶斯分类!(附西瓜书案例及代码实现)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跌跌不休的特斯拉何时能反转
- 下一篇: 108 版已修复,安全公司披露可窃取用户