例子
從上圖中,我們可以看到,A,B,C,D,E是五個在圖中點。而灰色的點是我們的種子點,也就是我們用來找點群的點。有兩個種子點,所以K=2。
然后,K-Means的算法如下:
隨機在圖中取K(這里K=2)個種子點。
然后對圖中的所有點求到這K個種子點的距離,假如點Pi離種子點Si最近,那么Pi屬于Si點群。(上圖中,我們可以看到A,B屬于上面的種子點,C,D,E屬于下面中部的種子點)
接下來,我們要移動種子點到屬于他的“點群”的中心。(見圖上的第三步)
然后重復第2)和第3)步,直到,種子點沒有移動(我們可以看到圖中的第四步上面的種子點聚合了A,B,C,下面的種子點聚合了D,E)。
K值如何確定
在實際應用中,由于Kmean一般作為數據預處理,或者用于輔助分聚類貼標簽。所以k一般不會設置很大。可以通過枚舉,令k從2到一個固定值如10,在每個k值上重復運行數次kmeans(避免局部最優解),并計算當前k的平均輪廓系數,最后選取輪廓系數最大的值對應的k作為最終的集群數目。參考
我們知道隨著群集數量的增加,該值不斷減少,但是如果繪制結果,則可能會發現平方距離的總和急劇下降到k的某個值,然后再慢一些。 在這里,我們可以找到最佳聚類數。
?
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(隨機樹林)
隨機森林(Random Forest)是一個包含多個決策樹的分類器, 其輸出的類別由個別樹輸出類別的眾數而定。(相當于許多不同領域的專家對數據進行分類判斷,然后投票)
?
感覺原文沒有將什么實質內容,給大家推進這一篇Random Forest入門
9. 降維算法
在過去的4-5年中,數據挖掘在每個可能的階段都呈指數級增長。 公司/政府機構/研究機構不僅有新的來源,而且他們正在非常詳細地挖掘數據。
例如:電子商務公司正在捕獲更多關于客戶的細節,例如人口統計,網絡爬網歷史,他們喜歡或不喜歡的內容,購買歷史記錄,反饋信息等等,給予他們個性化的關注,而不是離你最近的雜貨店主。
作為數據科學家,我們提供的數據還包括許多功能,這對建立良好的穩健模型是非常有用的,但是有一個挑戰。 你如何識別出1000或2000年高度重要的變量? 在這種情況下,維數降低算法可以幫助我們與決策樹,隨機森林,PCA,因子分析,基于相關矩陣,缺失值比等的其他算法一起使用。
要了解更多有關此算法的信息,您可以閱讀?“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
當我們處理大量數據以預測高預測能力時,GBM&AdaBoost是更加強大的算法。 Boosting是一種綜合學習算法,它結合了幾個基本估計器的預測,以提高單個估計器的魯棒性。 它將多個弱或平均預測值組合到一個強大的預測變量上。 這些提升算法在數據科學比賽中總是能夠很好地運行,如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]
評論