99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀python實現(xiàn)六大分群質量評估指標(蘭德系數(shù)、互信息、輪廓系數(shù))
python實現(xiàn)六大分群質量評估指標(蘭德系數(shù)、互信息、輪廓系數(shù))
2017-05-19
收藏

python實現(xiàn)六大分群質量評估指標(蘭德系數(shù)、互信息、輪廓系數(shù))

1 R語言中的分群質量——輪廓系數(shù)
因為先前慣用R語言,那么來看看R語言中的分群質量評估,節(jié)選自筆記︱多種常見聚類模型以及分群質量評估(聚類注意事項、使用技巧):
沒有固定標準,一般會3-10分群?;蛘哂靡恍┲笜嗽u價,然后交叉驗證不同群的分群指標。
一般的指標:輪廓系數(shù)silhouette(-1,1之間,值越大,聚類效果越好)(fpc包),蘭德指數(shù)rand;R語言中有一個包用30種方法來評價不同類的方法(NbClust),但是速度較慢
商業(yè)上的指標:分群結果的覆蓋率;分群結果的穩(wěn)定性;分群結果是否從商業(yè)上易于理解和執(zhí)行
輪廓系數(shù)旨在將某個對象與自己的簇的相似程度和與其他簇的相似程度進行比較。輪廓系數(shù)最高的簇的數(shù)量表示簇的數(shù)量的最佳選擇。

一般來說,平均輪廓系數(shù)越高,聚類的質量也相對較好。在這,對于研究區(qū)域的網格單元,最優(yōu)聚類數(shù)應該是2,這時平均輪廓系數(shù)的值最高。但是,聚類結果(k=2)的 SSE 值太大了。當 k=6 時,SEE 的值會低很多,但此時平均輪廓系數(shù)的值非常高,僅僅比 k=2 時的值低一點。因此,k=6 是最佳的選擇。
2 python中的分群質量
主要參考來自官方文檔:Clustering
部分內容來源于:機器學習評價指標大匯總
個人比較偏好的三個指標有:Calinski-Harabaz Index(未知真實index的模型評估)、Homogeneity, completeness and V-measure(聚類數(shù)量情況)、輪廓系數(shù)
1.1 Adjusted Rand index 調整蘭德系數(shù)

>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]

>>> metrics.adjusted_rand_score(labels_true, labels_pred)  
0.24
1.2 Mutual Information based scores 互信息

Two different normalized versions of this measure are available, Normalized Mutual Information(NMI) and Adjusted Mutual Information(AMI). NMI is often used in the literature while AMI was proposed more recently and is normalized against chance:

>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]

>>> metrics.adjusted_mutual_info_score(labels_true, labels_pred)  
0.22504
  
1.3 Homogeneity, completeness and V-measure
同質性homogeneity:每個群集只包含單個類的成員。
完整性completeness:給定類的所有成員都分配給同一個群集。
>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]

>>> metrics.homogeneity_score(labels_true, labels_pred)  
0.66...

>>> metrics.completeness_score(labels_true, labels_pred)
0.42...
兩者的調和平均V-measure:
>>> metrics.v_measure_score(labels_true, labels_pred)    
0.51...
1.4 Fowlkes-Mallows scores
The Fowlkes-Mallows score FMI is defined as the geometric mean of the pairwise precision and recall:

>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]
>>>
>>> metrics.fowlkes_mallows_score(labels_true, labels_pred)  
0.47140...
1.5 Silhouette Coefficient 輪廓系數(shù)

>>> import numpy as np
>>> from sklearn.cluster import KMeans
>>> kmeans_model = KMeans(n_clusters=3, random_state=1).fit(X)
>>> labels = kmeans_model.labels_
>>> metrics.silhouette_score(X, labels, metric='euclidean')
...                                                      
0.55...
1.6 Calinski-Harabaz Index
這個計算簡單直接,得到的Calinski-Harabasz分數(shù)值ss越大則聚類效果越好。Calinski-Harabasz分數(shù)值ss的數(shù)學計算公式是:

 也就是說,類別內部數(shù)據的協(xié)方差越小越好,類別之間的協(xié)方差越大越好,這樣的Calinski-Harabasz分數(shù)會高。
 在scikit-learn中, Calinski-Harabasz Index對應的方法是metrics.calinski_harabaz_score.
在真實的分群label不知道的情況下,可以作為評估模型的一個指標。
同時,數(shù)值越小可以理解為:組間協(xié)方差很小,組與組之間界限不明顯。
與輪廓系數(shù)的對比,筆者覺得最大的優(yōu)勢:快!相差幾百倍!毫秒級
>>> import numpy as np
>>> from sklearn.cluster import KMeans
>>> kmeans_model = KMeans(n_clusters=3, random_state=1).fit(X)
>>> labels = kmeans_model.labels_
>>> metrics.calinski_harabaz_score(X, labels)  
560.39...

數(shù)據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }