機器學習:kmeans學習筆記
# -*- coding: utf-8 -*-
"""spyder editor
this is a temporary script file.
"""from numpy import *
def loaddataset(filename):
file=open(filename)
datamat=
for line in file.readlines():
curline=line.strip().split('\t')
floatline=map(float,curline)//這裡使用的是map函式直接把資料轉化成為float型別
return datamat
def disteclud(point1,point2)://pwer(x,2)計算x的平方
return sqrt(sum(power(point1-point2,2)))
//隨機的產生中心點
def createrandcenter(dataset,k):
n=shape(dataset)[1]
centerpoint=mat(zeros((k,n)))//需要使用相乘的都定義成為矩陣
for i in xrange(n)://這裡在給賦值的時候是直接對每列資料操作
mindata=min(dataset[:,i])
maxdata=max(dataset[:,i])
skipnum=float(maxdata-mindata)
centerpoint[:,i]=mindata+skipnum*random.rand(k,1)
return centerpoint
//lmeans函式,找出當前的每乙個點距離centor中的哪個點在最近
def kmeans(dataset,k,distmesns=disteclud,createcenter=createrandcenter):
m=shape(dataset)[0]
clusterassment=mat(zeros((m,2)))//第一位表示當前點屬於哪個center,第二個表示距離大小
centorpoint=createcenter(dataset,k)//中心點
clusteredchanged=true
while clusteredchanged://直到不再發生改變
clusteredchanged=false
for i in xrange(m):
mindist=inf;minindex=-1
for j in xrange(k):
distij=distmesns(dataset[i,:],centorpoint[j,:])
if distij
import matplotlib.pyplot as plt
def showcluster(dataset, k, centroids, clusterassment):
m=shape(dataset)[0]
print m
mark = ['or', 'ob', 'og', 'ok', '^r', '+r', 'sr', 'dr', '
學習筆記 機器學習實戰 Kmeans
kmeans演算法注釋版,新手小白,如有錯誤,還請不吝指教 kmeans演算法 def kmeans dataset,k dataset mat dataset 轉換成mat型別 m shape dataset 0 獲取資料集的行數 第一列記錄資料集的類別,第二列記錄資料集到聚類中心的距離 clus...
機器學習筆記 k means演算法
k means是一種無監督的聚類演算法,也就是不給標籤,演算法自動來進行分類,最終分成k個簇。輸入 k 簇的個數 訓練集 無標籤的樣本集合 輸出 k個簇 k應該比樣本數量小 1 隨機初始化k個均值向量 代表k個簇的中心 可以隨機選取k個訓練樣本作為初始均值向量。2 開始迴圈 1 對每個樣本進行遍歷,...
機器學習 kmeans
1 手寫kemeans 流程 手寫 f 桌面 rna seq1 leetcode 10 面試真題 6 位元組跳動 手寫kmeans.py 2 k 如何確定 t sne視覺化和手肘法,k值所決定的是在該聚類演算法中,所要分配聚類的簇的多少,kmeans 演算法對初始值敏感,相同的k,選的點不同,會影響...