學而思,每日寫**
時間過得好快啊!
import numpy as np
def loaddataset(filename): #我這裡先想一下 open fr.readlines
datamat=
fr=open(filename)
for line in fr.readlines(
): curline=line.strip(
).split(
'\t'
) fltline=map(float,curline)
return datamat
def disteclud(veca,vecb):
return np.sqrt(np.sum(np.power(veca-vecb,2))
)#找個k個隨機中心點座標
def randcent(dataset,k): #所以說啊,要傳什麼引數也還是想不起來啊
n=np.shape(dataset)
[1]#找個表示行吧 不是是列
#接下來 min min——隨機數*range 然後資料儲存 你存成什麼形式,存在哪
centroids=np.mat(np.zeros((k,n))
)for j in range(n):
#注意表達形式,是每個j列的最小值
minj=min(dataset[:,j]
) rangej=float(max(dataset[:,j]
)-min(dataset[:,j]
))#每一步都要注意資料的儲存格式
array2=minj+rangej*np.random.rand(k,1)
#k行一列的【0,1】之間的數值
centroids[:,j]
=np.mat(array)
#所以是array就直接放進去了
return centroids
def kmeans(dataset,k,distmeas=disteclud,createcent=randcent):
m=np.shape(dataset)
[0] clusterassment=np.mat(np.zeros(m,2))
#你現在連為什麼寫這個mat都不知道,知識抄有用嗎,就是存index和mindist的
centroids=createcent(dataset,k)
clusterchanged=true
#敢問您為什麼 寫個括號 while clusterchanged():
while clusterchanged:
clusterchanged=false
for i in range(m):
mindist=np.inf #無窮
minindex=-1
for j in range(k):
distj=distmeas(centroids[j,:]-dataset[i,:]
)if distjimindist=distj
index=j
if clusterassment[i,0]
!=minindex:
clusterchanged=true
clusterassment[i,:]
=minindex,mindist
#因為紙質筆記,連縮排在**都不知道了..'''
你寫的**是沒有靈魂的 因為你根本不怎麼思考,倒是像在死記硬背或者硬抄
首先是 迴圈 乙個是、 min距離變化了嗎 變化了的話要等於 min index也要變
乙個是 到了最後迴圈結束 如果不再變了 制止迴圈 true false 最小距離不變停止迴圈
資料儲存和預設
首先是mindist 可以是負無窮或者是0 index是 0 開始的 等於j就不需要加號或者+=1
儲存 np.mat(np.zeros((m,2))
然後存進去[i,:]'''
'''下面是重新求三個中心點的距離
.a是轉換成陣列
true,false 代表的是屬於當前遍歷cent類別
'''for cent in range(k):
ptsinclust=dataset[np.nonzero(clusterassment[:,0].a==cent)
[0]]
#np.nonzero 返回陣列中不為false的行號下標組和列號下標組 就是把種都分別歸類起來
#dataset 是組成乙個矩陣
centroids[cent,:]
=np.mean(ptsinclust,axis=0)
return centroids,clusterassment
if_name_==
"_main_"
: datamat=np.mat(load dataset(
'\testset.txt'
)) k=3
centroids,clusterassment=kmeans(datamat,k,distmeas=disteclud,creatcent=randcent)
print centroids
print clusterassment
'''知識點補充
dataset原先是列表,
np.mat()是將序列轉為np的二維陣列,
np.transpose()是將陣列轉置'
''
第7天 CSS入門
在了解 xhtml 規 範後,我們就要 進行css布局。首先先介紹一些 css的入門知 識。如果你已 經很熟悉了,可以跳過這一 節,直接進 入下一節。css是 cascading style sheets 層疊 樣式表 的 縮寫。是一 種對web 文件新增樣式的 簡單機制,屬於表 現層的布局語言。1...
第7天 CSS入門
在了解xhtml 規範後,我們就要進行css布局。首先先介紹一些css的入門知識。如果你已經很熟悉了,可以跳過這一節,直接進入下一節。css是cascading style sheets 層疊樣式表 的縮寫。是一種對web文件新增樣式的簡單機制,屬於表現層的布局語言。分析乙個典型css的語句 p 顏...
python學習第7天
崔鑫陽 2019.225 課堂檢測題 輸入兩個數 求出他們之間所有的素數 把這些素數放在 乙個列表裡 求這個列表裡素數的和 以及 最大值 和最小值 寫到乙個 裡 num 1 int input 輸入第乙個數 num 2 int input 輸入第二個數 if num 1 num 2 turn num...