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

熱線電話:13121318867

登錄
首頁精彩閱讀論文中的機(jī)器學(xué)習(xí)算法——基于密度峰值的聚類算法
論文中的機(jī)器學(xué)習(xí)算法——基于密度峰值的聚類算法
2017-03-21
收藏

論文中的機(jī)器學(xué)習(xí)算法——基于密度峰值的聚類算法

下面還是主要來談?wù)務(wù)撐牡闹饕枷搿?

算法的主要思想思想

    在聚類算法中主要有這樣幾種:

劃分的方法,如K-Means

層次的方法,如CURE

基于密度的方法,如DBSCAN

基于網(wǎng)格的方法,如CLIQUE

基于模型的方法,主要是一些概率分布

在以往的學(xué)習(xí)過程中,我只關(guān)注過劃分的方法,如K-Means(見博文“簡單易學(xué)的機(jī)器學(xué)習(xí)算法——kMeans”)。

    Science上的這篇文章《Clustering by fast search and find of density peaks》主要講的是一種基于密度的聚類方法,基于密度的聚類方法的主要思想是尋找被低密度區(qū)域分離的高密度區(qū)域。而在文章中提出的聚類方法(以下稱為“Desity Peaks Clusering Algorithm, DPCA”)也同樣基于這樣的一種假設(shè):對于一個(gè)數(shù)據(jù)集,聚類中心被一些低局部密度的數(shù)據(jù)點(diǎn)包圍,而且這些低局部密度的點(diǎn)距離其他有高局部密度的點(diǎn)的距離都比較大。在這樣的模型中,DPCA主要有兩個(gè)需要計(jì)算的量:第一,局部密度;第二,與高密度點(diǎn)之間的距離。

1、局部密度的定義為:


其中,

稱為截?cái)嗑嚯x(Cut-off distance)。這個(gè)公式的含義是說找到與第個(gè)數(shù)據(jù)點(diǎn)之間的距離小于截?cái)嗑嚯x的數(shù)據(jù)點(diǎn)的個(gè)數(shù)。

2、與高密度點(diǎn)之間的距離

這個(gè)公式的含義是說找到所有比第個(gè)數(shù)據(jù)點(diǎn)的局部密度都大的數(shù)據(jù)點(diǎn)中,與第個(gè)數(shù)據(jù)點(diǎn)之間的距離的最小值。而對于具有最大密度的數(shù)據(jù)點(diǎn),通常取

3、如何聚類

對于聚類問題,我們需要回答的是聚類中心是什么,對于每個(gè)數(shù)據(jù)點(diǎn),如何定義所屬的類別。DPCA中將那些具有較大距離且同時(shí)具有較大局部密度的點(diǎn)定義為聚類中心。

(圖片來源于文章)
如上圖B,數(shù)據(jù)點(diǎn)1和數(shù)據(jù)點(diǎn)10同時(shí)具有相對較高的距離和局部密度,所以是聚類中心。而在圖中具有相對較高的距離,但是局部密度卻較小的數(shù)據(jù)點(diǎn)26,27和28稱為異常點(diǎn)。對于那些非異常點(diǎn),如何對他們聚類呢?DPCA采用的是將他們歸類到比他們的密度更大的最相近的類中心所屬的類別中。到此,整個(gè)算法的基本思想解釋結(jié)束。數(shù)據(jù)分析師培訓(xùn)

    對于這樣的算法,如何去定義相對較高,作者并沒有給出解釋,在作者提供的程序和數(shù)據(jù)中,我做了實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如下:

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

若不方便掃碼,搜微信號(hào):CDAshujufenxi

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

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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".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); }