資料聚類的簡單應用

2022-09-18 16:27:11 字數 2094 閱讀 3579

資料聚類的簡單應用

資料聚類data

1.聚類時常被用於資料量很大(data-intensive)的應用中。

2. 聚類是無監督學習(unsupervised

learning)的乙個例子。無監督學習演算法並不利用帶有正確答案的樣本資料

進行「訓練」,它們的目的是要在一組資料中找尋某種結構,而這些資料本身並不是我們要找的答案。

3.聚類的結果不會告訴零售商每位顧客可能會買什麼,也不會**新來的顧客適合哪種時尚,聚類演算法的目標是採集資料,然後從中找出不同的陣列。

例如:可以通過聚類來對部落格使用者進行分類

這個說法的假設前提是:我們有眾多的部落格使用者,但這些使用者並沒有顯著的特徵標籤,在這種情況下,如何有效的對這些使用者進行分類。這時候聚類就派上用場了。

基本過程:

1. 構建乙個部落格訂閱源列表

2.利用訂閱源列表建立乙個單詞列表,將其實際用於針對每個部落格的單詞計數。

3.我們利用上述單詞列表和部落格列表來建立乙個文字檔案,其中包含乙個大的矩陣,記錄者針對每個部落格的所有單詞的統計情況。(例如:可以用列對應單詞,用行對應部落格),乙個可用的**如下:

[python] view plain copy

import

feedparser  

import re

# returns

title and dictionary of word counts for an rss feed

defgetwordcounts(url):  

# parse the feed  

d=feedparser.parse(url)  

wc={}  

# loop over all the entries  

for e in d.entries:  

if 'summary' in e: summary=e.summary  

else: summary=e.description  

# extract a list of words  

words=getwords(e.title ' ' summary)  

for word in words:  

wc.setdefault(word,0)  

wc[word] =1  

return d.feed.title,wc  

defgetwords(html):  

# remove all the html tags  

txt=re.compile(r']

>').sub('',html)  

# split words by all non-alpha characters  

words=re.compile(r'[^a-z^a-z] ').split(txt)

# convert to lowercase  

return [word.lower() for word in words if word!=''] 4.

當然這裡有很多可以減少需要統計的單詞量的技巧,有些常用的習慣性用於可以從這些列表中刪除掉。具體的構建過程這裡省略不談,感興趣的可以參考相關書籍。

5. 進行聚類:這裡有兩種可用的方法

分級聚類:

分級聚類通過連續不斷地將最為相似的群組兩兩合併,直到只剩乙個群組為止,來構造出乙個群組的層級結構。其過程可以參考下圖:

圖:分級聚類的過程

分級聚類基本演算法如下:(這裡省略了一些細節函式,如載入檔案,計算皮爾遜相似度等)

[python] view plain copy

defhcluster(rows,distance=pearson):  

distances={}  

currentclustid=-1  

# clusters are initially just the rows  

clust=[bicluster(rows[i],id=i) for i in range(len(rows))]

while len(clust)>1:  

lowestpair=(0,1)  

closest=distance(clust[0].vec,clust[1].vec)

聚類應用 crap

一。資料準備 1 資料抽取 2 資料淨化 清除資料來源中不正確 空值 不完整等不能達到資料探勘質量要求的資料 3 衍生變數 將變數的取值對映成適合聚類演算法的變數型別 基本來說,聚類演算法都是基於距離的,對於一些不是數值型別的變數,需要轉換一下表達方式 4 異常值處理 異常值指遠遠偏離一般值的資料,...

Spark 聚類應用

spark 機器學習庫提供了包括聚類,分類,回歸,協同過濾,維度約簡等。使用 spark 機器學習庫來做機器學習工作,可 以說是非常的簡單,通常只需要在對原始資料進行處理後,然後直接呼叫相應的 api 就可以實現。spark ml 提供了乙個基於 dataframe 的機器學習工作流式 api 套件...

簡單聚類實驗

今天又試驗了 鄰誤差 4進行聚類。以前覺得比較相鄰兩個畫素的誤差就可以聚類,實測輸出結果卻是那麼差勁。原來相鄰畫素基本都是相似的,對漸變過度的邊緣難以消化。37萬畫素聚類用了0.3秒,統計並生成9張面積最大的聚類則用了約0.2秒 將來有空再改善一下。假如不比相鄰畫素,比較相近的一小片區域效果肯定更好...