例子
從上圖中,我們可以看到,A,B,C,D,E是五個(gè)在圖中點(diǎn)。而灰色的點(diǎn)是我們的種子點(diǎn),也就是我們用來(lái)找點(diǎn)群的點(diǎn)。有兩個(gè)種子點(diǎn),所以K=2。
然后,K-Means的算法如下:
隨機(jī)在圖中取K(這里K=2)個(gè)種子點(diǎn)。
然后對(duì)圖中的所有點(diǎn)求到這K個(gè)種子點(diǎn)的距離,假如點(diǎn)Pi離種子點(diǎn)Si最近,那么Pi屬于Si點(diǎn)群。(上圖中,我們可以看到A,B屬于上面的種子點(diǎn),C,D,E屬于下面中部的種子點(diǎn))
接下來(lái),我們要移動(dòng)種子點(diǎn)到屬于他的“點(diǎn)群”的中心。(見(jiàn)圖上的第三步)
然后重復(fù)第2)和第3)步,直到,種子點(diǎn)沒(méi)有移動(dòng)(我們可以看到圖中的第四步上面的種子點(diǎn)聚合了A,B,C,下面的種子點(diǎn)聚合了D,E)。
K值如何確定
在實(shí)際應(yīng)用中,由于Kmean一般作為數(shù)據(jù)預(yù)處理,或者用于輔助分聚類(lèi)貼標(biāo)簽。所以k一般不會(huì)設(shè)置很大??梢酝ㄟ^(guò)枚舉,令k從2到一個(gè)固定值如10,在每個(gè)k值上重復(fù)運(yùn)行數(shù)次kmeans(避免局部最優(yōu)解),并計(jì)算當(dāng)前k的平均輪廓系數(shù),最后選取輪廓系數(shù)最大的值對(duì)應(yīng)的k作為最終的集群數(shù)目。參考
我們知道隨著群集數(shù)量的增加,該值不斷減少,但是如果繪制結(jié)果,則可能會(huì)發(fā)現(xiàn)平方距離的總和急劇下降到k的某個(gè)值,然后再慢一些。 在這里,我們可以找到最佳聚類(lèi)數(shù)。

?
Python Code
#Import Library
from sklearn.cluster import KMeans
#Assumed you have, X (attributes) for training data set and x_test(attributes) of test_dataset
# Create KNeighbors classifier object model
k_means = KMeans(n_clusters=3, random_state=0)
# Train the model using the training sets and check score
model.fit(X)
#Predict Output
predicted= model.predict(x_test)
R Code
library(cluster)
fit <- kmeans(X, 3) # 5 cluster solution
8. Random Forest(隨機(jī)樹(shù)林)
隨機(jī)森林(Random Forest)是一個(gè)包含多個(gè)決策樹(shù)的分類(lèi)器, 其輸出的類(lèi)別由個(gè)別樹(shù)輸出類(lèi)別的眾數(shù)而定。(相當(dāng)于許多不同領(lǐng)域的專(zhuān)家對(duì)數(shù)據(jù)進(jìn)行分類(lèi)判斷,然后投票)
?
感覺(jué)原文沒(méi)有將什么實(shí)質(zhì)內(nèi)容,給大家推進(jìn)這一篇Random Forest入門(mén)
9. 降維算法
在過(guò)去的4-5年中,數(shù)據(jù)挖掘在每個(gè)可能的階段都呈指數(shù)級(jí)增長(zhǎng)。 公司/政府機(jī)構(gòu)/研究機(jī)構(gòu)不僅有新的來(lái)源,而且他們正在非常詳細(xì)地挖掘數(shù)據(jù)。
例如:電子商務(wù)公司正在捕獲更多關(guān)于客戶(hù)的細(xì)節(jié),例如人口統(tǒng)計(jì),網(wǎng)絡(luò)爬網(wǎng)歷史,他們喜歡或不喜歡的內(nèi)容,購(gòu)買(mǎi)歷史記錄,反饋信息等等,給予他們個(gè)性化的關(guān)注,而不是離你最近的雜貨店主。
作為數(shù)據(jù)科學(xué)家,我們提供的數(shù)據(jù)還包括許多功能,這對(duì)建立良好的穩(wěn)健模型是非常有用的,但是有一個(gè)挑戰(zhàn)。 你如何識(shí)別出1000或2000年高度重要的變量? 在這種情況下,維數(shù)降低算法可以幫助我們與決策樹(shù),隨機(jī)森林,PCA,因子分析,基于相關(guān)矩陣,缺失值比等的其他算法一起使用。
要了解更多有關(guān)此算法的信息,您可以閱讀?“Beginners Guide To Learn Dimension Reduction Techniques“.
Python Code
#Import Library
from sklearn import decomposition
#Assumed you have training and test data set as train and test
# Create PCA obeject pca= decomposition.PCA(n_components=k) #default value of k =min(n_sample, n_features)
# For Factor analysis
#fa= decomposition.FactorAnalysis()
# Reduced the dimension of training dataset using PCA
train_reduced = pca.fit_transform(train)
#Reduced the dimension of test dataset
test_reduced = pca.transform(test)
For more detail on this, please refer?.
R Code
library(stats)
pca <- princomp(train, cor = TRUE)
train_reduced <- predict(pca,train)
test_reduced <- predict(pca,test)
10. Gradient Boosting & AdaBoost
當(dāng)我們處理大量數(shù)據(jù)以預(yù)測(cè)高預(yù)測(cè)能力時(shí),GBM&AdaBoost是更加強(qiáng)大的算法。 Boosting是一種綜合學(xué)習(xí)算法,它結(jié)合了幾個(gè)基本估計(jì)器的預(yù)測(cè),以提高單個(gè)估計(jì)器的魯棒性。 它將多個(gè)弱或平均預(yù)測(cè)值組合到一個(gè)強(qiáng)大的預(yù)測(cè)變量上。 這些提升算法在數(shù)據(jù)科學(xué)比賽中總是能夠很好地運(yùn)行,如Kaggle,AV Hackathon,CrowdAnalytix。
More:?Know about Gradient and AdaBoost in detail
Python Code
#Import Library
from sklearn.ensemble import GradientBoostingClassifier
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create Gradient Boosting Classifier object
model= GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)
# Train the model using the training sets and check score
model.fit(X, y)
#Predict Output
predicted= model.predict(x_test)
R Code
library(caret)
x <- cbind(x_train,y_train)
# Fitting model
fitControl <- trainControl( method = "repeatedcv", number = 4, repeats = 4)
fit <- train(y ~ ., data = x, method = "gbm", trControl = fitControl,verbose = FALSE)
predicted= predict(fit,x_test,type= "prob")[,2]
電子發(fā)燒友App










評(píng)論