貝葉斯定理提供了一種由P(c),P(x)和P(x | c)計(jì)算概率P(c | x)的方法。 看下面的等式:
?
其中:
P(c | x)是在x條件下c發(fā)生的概率。
P(c)是c發(fā)生的概率。
P(x | c)在c條件下x發(fā)生的概率。
P(x)是x發(fā)生的概率。
示例:
讓我們用一個(gè)例子來(lái)理解它。 下面我有一個(gè)天氣和相應(yīng)的目標(biāo)變量“玩游戲”的訓(xùn)練數(shù)據(jù)集。 現(xiàn)在,我們需要根據(jù)天氣條件對(duì)玩家是否玩游戲進(jìn)行分類(lèi)。 我們按照以下步驟執(zhí)行。
步驟1:將數(shù)據(jù)集轉(zhuǎn)換為頻率表
步驟2:通過(guò)發(fā)現(xiàn)像“Overcast”概率= 0.29和播放概率為0.64的概率來(lái)創(chuàng)建似然表。
?
步驟3:現(xiàn)在,使用樸素貝葉斯方程來(lái)計(jì)算每個(gè)類(lèi)的概率。 其中概率最高的情況就是是預(yù)測(cè)的結(jié)果。
問(wèn)題:
如果天氣晴朗,玩家會(huì)玩游戲,這個(gè)說(shuō)法是正確的嗎?
我們可以使用上述方法解決,所以P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny)
這里,P(Sunny | Yes)= 3/9 = 0.33,P(Sunny)= 5/14 = 0.36,P(Yes)= 9/14 = 0.64
現(xiàn)在,P(Yes | Sunny)= 0.33 * 0.64 / 0.36 = 0.60,該事件發(fā)生的概率還是比較高的。
樸素貝葉斯使用類(lèi)似的方法根據(jù)各種屬性預(yù)測(cè)不同分類(lèi)的概率,該算法主要用于文本分類(lèi)和具有多個(gè)類(lèi)的問(wèn)題。
Python Code
#Import Library
from sklearn.naive_bayes import GaussianNB
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create SVM classification object model = GaussianNB()
# there is other distribution for multinomial classes like Bernoulli Naive Bayes, Refer link
# Train the model using the training sets and check score
model.fit(X, y)
#Predict Output
predicted= model.predict(x_test)
R Code
library(e1071)
x <- cbind(x_train,y_train)
# Fitting model
fit <-naiveBayes(y_train ~ ., data = x)
summary(fit)
#Predict Output
predicted= predict(fit,x_test)
6. KNN (K-近鄰算法)
它可以用于分類(lèi)和回歸問(wèn)題, 然而,它在行業(yè)中被廣泛地應(yīng)用于分類(lèi)問(wèn)題。 K-近鄰算法用于存儲(chǔ)所有訓(xùn)練樣本集(所有已知的案列),并通過(guò)其k個(gè)鄰近數(shù)據(jù)多數(shù)投票對(duì)新的數(shù)據(jù)(或者案列)進(jìn)行分類(lèi)。通常,選擇k個(gè)最近鄰數(shù)據(jù)中出現(xiàn)次數(shù)最多的分類(lèi)作為新數(shù)據(jù)的分類(lèi)。
這些計(jì)算機(jī)的距離函數(shù)可以是歐幾里德,曼哈頓,閔可夫斯基和漢明距離。 前三個(gè)函數(shù)用于連續(xù)函數(shù),第四個(gè)函數(shù)用于分類(lèi)變量。 如果K = 1,則簡(jiǎn)單地將該情況分配給其最近鄰的類(lèi)。 有時(shí),選擇K在執(zhí)行KNN建模時(shí)是一個(gè)難點(diǎn)。
?
KNN可以輕松映射到我們的現(xiàn)實(shí)生活中。 如果你想了解一個(gè)人,你沒(méi)有任何信息,你可能想知道先去了解他的親密的朋友和他活動(dòng)的圈子,從而獲得他/她的信息!
選擇KNN之前要考慮的事項(xiàng):
KNN在計(jì)算上是昂貴的
變量應(yīng)該被歸一化,否則更高的范圍變量可以偏移它
在進(jìn)行KNN之前,預(yù)處理階段的工作更像去除離群值、噪聲值
Python Code
#Import Library
from sklearn.neighbors import KNeighborsClassifier
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create KNeighbors classifier object model
KNeighborsClassifier(n_neighbors=6) # default value for n_neighbors is 5
# Train the model using the training sets and check score
model.fit(X, y)
#Predict Output
predicted= model.predict(x_test)
R Code
library(knn)
x <- cbind(x_train,y_train)
# Fitting model
fit <-knn(y_train ~ ., data = x,k=5)
summary(fit)
#Predict Output
predicted= predict(fit,x_test)
7. K-Means
它是解決聚類(lèi)問(wèn)題的一種無(wú)監(jiān)督算法。 其過(guò)程遵循一種簡(jiǎn)單而簡(jiǎn)單的方式,通過(guò)一定數(shù)量的聚類(lèi)(假設(shè)k個(gè)聚類(lèi))對(duì)給定的數(shù)據(jù)集進(jìn)行分類(lèi)。 集群內(nèi)的數(shù)據(jù)點(diǎn)與對(duì)等組是同構(gòu)的和異構(gòu)的。
嘗試從油墨印跡中找出形狀?(見(jiàn)下圖) k means 與這個(gè)活動(dòng)相似, 你通過(guò)墨水漬形狀來(lái)判斷有多少群體存在!
?
下面兩點(diǎn)感覺(jué)原文解釋的不是很清楚,自己然后查了下國(guó)內(nèi)的解釋方法
K-means如何形成集群
(1) 從 n個(gè)數(shù)據(jù)對(duì)象任意選擇 k 個(gè)對(duì)象作為初始聚類(lèi)中心;
(2) 根據(jù)每個(gè)聚類(lèi)對(duì)象的均值(中心對(duì)象),計(jì)算每個(gè)對(duì)象與這些中心對(duì)象的距離;并根據(jù)最小距離重新對(duì)相應(yīng)對(duì)象進(jìn)行劃分;
(3) 重新計(jì)算每個(gè)(有變化)聚類(lèi)的均值(中心對(duì)象)
(4) 循環(huán)(2)到(3)直到每個(gè)聚類(lèi)不再發(fā)生變化為止參考
評(píng)論
查看更多