用我自己的大白話理解聚類就是,
聚類是無監督學習,就是沒有標準樣本去學習。一堆資料放在一起,判斷誰和誰靠的近,把靠的近的當成乙個新的整體,在去對新的整體繼續分析。直到最後只剩下乙個整體,則為聚類結束
//載入檔案
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資...