python資料分析入門 聚類

2021-09-25 02:44:17 字數 3114 閱讀 3089

用我自己的大白話理解聚類就是,

聚類是無監督學習,就是沒有標準樣本去學習。一堆資料放在一起,判斷誰和誰靠的近,把靠的近的當成乙個新的整體,在去對新的整體繼續分析。直到最後只剩下乙個整體,則為聚類結束

//載入檔案

def readfile

(filename)

: lines =

[line for line in

open

(filename)

] colname = lines[0]

.strip()

.split

('\t')[

1:]//strip() 去除空格

//split() 以xx為分割

rowsname =

data =

for line in lines[1:

]:p = line.

strip()

.split

('\t'

) rowsname.

(p[0])

data.([

float

(x)for x in p[1:

]])return colname,rowsname,data

把倆組資料想象成倆條直線,求倆條直線的過擬合線。

演算法不難,就是記不住哈哈

//皮爾遜相關係數

def sim_person

(p1,p2)

: sum1 =

sum(p1)

sum2 =

sum(p2)

sum1sq =

sum(

[pow

(v,2

)for v in p1]

) sum2sq =

sum(

[pow

(v,2

)for v in p2]

) psum =

sum(

[p1[i]

*p2[i]

for i in

range

(len

(p1))]

) num = psum-

(sum1*sum2/

len(v1)

) den =

sqrt

((sum1sq-

pow(sum1,2)

/len

(v1))*

(sum2sq-

pow(sum2,2)

/len

(v2)))

if den ==0:

return

0return

1.0-num/den

建立乙個類,用來表示聚類

//皮爾遜相關係數

class

bicuster

://倆個_ 剛開始學習的時候看書,倆個乙個傻傻看不清楚

def __init__

(self,vec,left=none,right=none,distance=

0.0,id=none)

://c++裡的建構函式

self.left = left

self.right = right

//左右用來表示聚類的位置

self.vec = vec

//聚類資料

self.id = id

//用來表示聚類是原始的還是生成的

self.distance = distance

//表示距離

def hcluster

(rows,distance=sim_person)

: distances =

currentocustid =-1

clust =

[bicluster

(rows[i]

,id=i)

for i in

range

(len

(rows))]

while

len(clust)

>

1: lowspair =(0

,1) closest =

distance

(clust[0]

.vec,clust[1]

.vec)

for i in

range

(len

(clust)):

for j in

range

(i+1

,len

(clust)):

if(clust[i]

.id,clust[j]

.id) not in distances:

distances[

(clust[i]

.id,clust[j]

.id)]=

distance

(clust[i]

.vec,clust[j]

.vec)

d = distances[

(clust[i]

.id,clust[j]

.id)

]if d < closest:

lowspair =

(i,j)

mergevec =

[(clust[lowspair[0]

].vec[i]

+clust[lowspair[1]

].vec[i])/

2.0for i in

range

(len

(clust[0]

.vec))]

newcluster =

bicluster

(mergevec,left=clust[lowspair[0]

],right=clust[lowspair[1]

],distance=closest,id=currentocustid)

del clust[lowerstpair[1]

] del clust[lowerstpair[0]

] clust.

(newcluster)

return clust[

0]

《集體智慧型程式設計》這本書確實不錯,以上就是第三章中的例子。

Python資料分析入門

原文 最近,analysis with programming加入了planet python。作為該 的首批特約部落格,我這裡來分享一下如何通過python來開始資料分析。具體內容如下 資料匯入 資料變換 資料統計描述 假設檢驗 視覺化 建立自定義函式。這是很關鍵的一步,為了後續的分析我們首先需要...

python資料分析與挖掘實戰 聚類演算法對比

coding utf 8 importnumpyasnp importmatplotlib.pyplotasplt fromsklearnimportdatasets x1,y1 datasets.make circles n samples 5000 factor 6 noise 0.05 x2,...

Python資料分析入門筆記

資料基本處理 資料缺失值處理有好幾種對應的函式,接下來介紹三種我學習的函式dropna,fillna,replace.這三種函式功能上的區別,以及不同的適用場景.這三種函式都在pandas裡,所以寫 時首先要匯入pandas dropna 函式是用來濾除缺失值的,預設的情況下是清除所有的含有nan資...