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

熱線電話:13121318867

登錄
首頁精彩閱讀一篇文章透徹解讀聚類分析及案例實(shí)操(二)
一篇文章透徹解讀聚類分析及案例實(shí)操(二)
2016-04-05
收藏

一篇文章透徹解讀聚類分析及案例實(shí)操(二)

4  SAS聚類分析案例

1 問題背景

考慮下面案例,一個(gè)棒球管理員希望根據(jù)隊(duì)員們的興趣相似性將他們進(jìn)行分組。顯然,在該例子中,沒有響應(yīng)變量。管理者希望能夠方便地識(shí)別出隊(duì)員的分組情況。同時(shí),他也希望了解不同組之間隊(duì)員之間的差異性。

該案例的數(shù)據(jù)集是在SAMPSIO庫中的DMABASE數(shù)據(jù)集。下面是數(shù)據(jù)集中的主要的變量的描述信息:

在這個(gè)案例中,設(shè)置TEAM,POSITION,LEAGUE,DIVISION和SALARY變量的模型角色為rejected,設(shè)置SALARY變量的 模型角色為rejected是由于它的信息已經(jīng)存儲(chǔ)在LOGSALAR中。在聚類分析和自組織映射圖中是不需要目標(biāo)變量的。如果需要在一個(gè)目標(biāo)變量上識(shí)別 分組,可以考慮預(yù)測(cè)建模技術(shù)或者定義一個(gè)分類目標(biāo)。

2 聚類方法概述

聚類分析經(jīng)常和有監(jiān)督分類相混淆,有監(jiān)督分類是為定義的分類響應(yīng)變量預(yù)測(cè)分組或者類別關(guān)系。而聚類分析,從另一方面考慮,它是一種無監(jiān)督分類技術(shù)。 它能夠在所有輸入變量的基礎(chǔ)上識(shí)別出數(shù)據(jù)集中的分組和類別信息。這些組、簇,賦予不同的數(shù)字。然而,聚類數(shù)目不能用來評(píng)價(jià)類別之間的近似關(guān)系。自組織映射 圖嘗試創(chuàng)建聚類,并且在一個(gè)圖上用圖形化的方式繪制出聚類信息,在此處我們并沒有考慮。

1) 建立初始數(shù)據(jù)流

2) 設(shè)置輸入數(shù)據(jù)源結(jié)點(diǎn)

打開輸入數(shù)據(jù)源結(jié)點(diǎn)

從SAMPSIO庫中選擇DMABASE數(shù)據(jù)集

設(shè)置NAME變量的模型角色為id,TEAM,POSIOTION,LEAGUE,DIVISION和SALARY變量的模型角色為rejected

探索變量的分布和描述性統(tǒng)計(jì)信息

選擇區(qū)間變量選項(xiàng)卡,可以觀察到只有LOGSALAR和SALARY變量有缺失值。選擇類別變量選項(xiàng)卡,可以觀察到?jīng)]有缺失值。在本例中,沒有涉及到任何類別變量。

關(guān)閉輸入數(shù)據(jù)源結(jié)點(diǎn),并保存信息。

3) 設(shè)置替代結(jié)點(diǎn)

雖然并不是總是要處理缺失值,但是有時(shí)候缺失值的數(shù)量會(huì)影響聚類結(jié)點(diǎn)產(chǎn)生的聚類解決方案。為了產(chǎn)生初始聚類,聚類結(jié)點(diǎn)往往需要一些完整的觀測(cè)值。當(dāng)缺失值太多的時(shí)候,需要用替代結(jié)點(diǎn)來處理。雖然這并不是必須的,但是在本例中使用到了。

4) 設(shè)置聚類結(jié)點(diǎn)

打開聚類結(jié)點(diǎn),激活變量選項(xiàng)卡。K-means聚類對(duì)輸入數(shù)據(jù)是敏感的。一般情況下,考慮對(duì)數(shù)據(jù)集進(jìn)行標(biāo)準(zhǔn)化處理。

在變量選項(xiàng)卡,選擇標(biāo)準(zhǔn)偏差單選框

選擇聚類選項(xiàng)卡

觀察到默認(rèn)選擇聚類數(shù)目的方法是自動(dòng)的

關(guān)閉聚類結(jié)點(diǎn)

5) 聚類結(jié)果

在聚類結(jié)點(diǎn)處運(yùn)行流程圖,查看聚類結(jié)果。

6) 限定聚類數(shù)目

打開聚類結(jié)點(diǎn)

選擇聚類選項(xiàng)卡

在聚類數(shù)目選擇部分,點(diǎn)擊選擇標(biāo)準(zhǔn)按鈕

輸入最大聚類數(shù)目為10

點(diǎn)擊ok,關(guān)閉聚類結(jié)點(diǎn)

7)結(jié)果解釋

我們可以定義每個(gè)類別的信息,結(jié)合背景識(shí)別每個(gè)類型的特征。選擇箭頭按鈕,

選擇三維聚類圖的某一類別,

在工具欄選擇刷新輸入均值圖圖標(biāo),

點(diǎn)擊該圖標(biāo),可以查看該類別的規(guī)范化均值圖

同理,可以根據(jù)該方法對(duì)其他類別進(jìn)行解釋。

8)運(yùn)用Insight結(jié)點(diǎn)

Insight結(jié)點(diǎn)可以用來比較不同屬性之間的異常。打開insight結(jié)點(diǎn),選擇整個(gè)數(shù)據(jù)集,關(guān)閉結(jié)點(diǎn)。

從insight結(jié)點(diǎn)處運(yùn)行。

變量_SEGMNT_標(biāo)識(shí)類別,distance標(biāo)識(shí)觀測(cè)值到所在類別中心的距離。運(yùn)用insight窗口的analyze工具評(píng)估和比較聚類結(jié)果。

首先把_SEGMNT_的度量方式從interval轉(zhuǎn)換成nominal。


R語言

以R基礎(chǔ)包自帶的鳶尾花(Iris)數(shù)據(jù)進(jìn)行聚類分析。分析代碼如下:

###### 代碼清單 #######

data(iris); attach(iris)

iris.hc <- hclust( dist(iris[,1:4]))

# plot( iris.hc, hang = -1)

plclust( iris.hc, labels = FALSE, hang = -1)

re <- rect.hclust(iris.hc, k = 3)

iris.id <- cutree(iris.hc, 3)

table(iris.id, Species)

###### 運(yùn)行結(jié)果 #######

> table(iris.id,Species)

Species

iris.id setosa versicolor virginica

1 50 0 0

2 0 23 49

3 0 27 1

聚類分析生成的圖形如下:

結(jié)果表明,函數(shù)cuttree()將數(shù)據(jù)iris分類結(jié)果iris.hc編為三組分別以1,2, 3表示,保存在iris.id中。將iris.id與iris中Species作比較發(fā)現(xiàn):1應(yīng)該是setosa類,2應(yīng)該是virginica類(因?yàn)? virginica的個(gè)數(shù)明顯多于versicolor),3是versicolor。

仍以R基礎(chǔ)包自帶的鳶尾花(Iris)數(shù)據(jù)進(jìn)行K-均值聚類分析,分析代碼如下:

###### 代碼清單 #######

library(fpc)

data(iris)

df<-iris[,c(1:4)]

set.seed(252964) # 設(shè)置隨機(jī)值,為了得到一致結(jié)果。

(kmeans <- kmeans(na.omit(df), 3)) # 顯示K-均值聚類結(jié)果

plotcluster(na.omit(df), kmeans$cluster) # 生成聚類圖

生成的圖如下:


Python篇

Python運(yùn)行條件:

1.Python運(yùn)行環(huán)境與編輯環(huán)境;

2.Matplotlib.pyplot圖形庫,可用于快速繪制2D圖表,與matlab中的plot命令類似,而且用法也基本相同。

# coding=utf-8

##

作者:Chan

程序:kmeans算法

##

import matplotlib.pyplot as plt

import math

import numpy

import random

#dotOringalNum為各個(gè)分類最初的大小

dotOringalNum=100

#dotAddNum最后測(cè)試點(diǎn)的數(shù)目

dotAddNum=1000

fig = plt.figure()

ax = fig.add_subplot(111)

sets=

colors=[‘b’,’g’,’r’,’y’]

#第一個(gè)分類,顏色為藍(lán)色,在左下角

a=

txx=0.0

tyy=0.0

for i in range(0,dotOringalNum):

tx=float(random.randint(1000,3000))/100

ty=float(random.randint(1000,3000))/100

a.append([tx,ty])

txx+=tx

tyy+=ty

#ax.plot([tx],[ty],color=colors[0],linestyle=”,marker=’.’)

#a的第一個(gè)元素為a的各個(gè)元素xy值之合

a.insert(0,[txx,tyy])

sets.append(a)

#第二個(gè)分類,顏色為綠色,在右上角

b=

txx=0.0

tyy=0.0

for i in range(0,dotOringalNum):

tx=float(random.randint(4000,6000))/100

ty=float(random.randint(4000,6000))/100

b.append([tx,ty])

txx+=tx

tyy+=ty

#ax.plot([tx],[ty],color=colors[1],linestyle=”,marker=’.’)

b.insert(0,[txx,tyy])

sets.append(b)

#第三個(gè)分類,顏色為紅色,在左上角

c=

txx=0.0

tyy=0.0

for i in range(0,dotOringalNum):

tx=float(random.randint(1000,3000))/100

ty=float(random.randint(4000,6000))/100

c.append([tx,ty])

txx+=tx

tyy+=ty

#ax.plot([tx],[ty],color=colors[2],linestyle=”,marker=’.’)

c.insert(0,[txx,tyy])

sets.append(c)

#第四個(gè)分類,顏色為黃色,在右下角

d=

txx=0

tyy=0

for i in range(0,dotOringalNum):

tx=float(random.randint(4000,6000))/100

ty=float(random.randint(1000,3000))/100

d.append([tx,ty])

txx+=tx

tyy+=ty

#ax.plot([tx],[ty],color=colors[3],linestyle=”,marker=’.’)

d.insert(0,[txx,tyy])

sets.append(d)

#測(cè)試

for i in range(0,dotAddNum):

tx=float(random.randint(0,7000))/100

ty=float(random.randint(0,7000))/100

dist=9000.0

setBelong=0

for j in range(0,4):

length=len(sets[j])-1

centX=sets[j][0][0]/length

centY=sets[j][0][1]/length

if (centX-tx)*(centX-tx)+(centY-ty)*(centY-ty)

運(yùn)行效果:


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

若不方便掃碼,搜微信號(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)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(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ù)說明請(qǐng)參見: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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }