用python實現k均值演算法,鳶尾花花瓣長度資料做聚類並用散點圖顯示。
**:
import截圖:numpy as np
#隨機生成乙個陣列
x = np.random.randint(1,100,[20,1])
y = np.zeros(x.shape[0],dtype=int)
k = 3iris_length = [1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4, 1.1, 1.2, 1.5, 1.3, 1.4, 1.7, 1.5, 1.7, 1.5, 1.0, 1.7, 1.9, 1.6, 1.6, 1.5, 1.4, 1.6, 1.6, 1.5, 1.5, 1.4, 1.5, 1.2, 1.3, 1.4, 1.3, 1.5, 1.3, 1.3, 1.3, 1.6, 1.9, 1.4, 1.6, 1.4, 1.5, 1.4, 4.7, 4.5, 4.9, 4.0, 4.6, 4.5, 4.7, 3.3, 4.6, 3.9, 3.5, 4.2, 4.0, 4.7, 3.6, 4.4, 4.5, 4.1, 4.5, 3.9, 4.8, 4.0, 4.9, 4.7, 4.3, 4.4, 4.8, 5.0, 4.5, 3.5, 3.8, 3.7, 3.9, 5.1, 4.5, 4.5, 4.7, 4.4, 4.1, 4.0, 4.4, 4.6, 4.0, 3.3, 4.2, 4.2, 4.2, 4.3, 3.0, 4.1, 6.0, 5.1, 5.9, 5.6, 5.8, 6.6, 4.5, 6.3, 5.8, 6.1, 5.1, 5.3, 5.5, 5.0, 5.1, 5.3, 5.5, 6.7, 6.9, 5.0, 5.7, 4.9, 6.7, 4.9, 5.7, 6.0, 4.8, 4.9, 5.6, 5.8, 6.1, 6.4, 5.6, 5.1, 5.6, 6.1, 5.6, 5.5, 4.8, 5.4, 5.6, 5.1, 5.1, 5.9, 5.7, 5.2, 5.0, 5.2, 5.4, 5.1]
#選取前k個值作為中心值
defintcenter(myarr,k):
return
x[:k]
kc =intcenter(x,k)
#計算距離
defnearest(kc, i):
d = abs(kc -i)
w = np.where(d ==np.min(d))
return
w[0][0]
#計算樣本中每個資料應該為哪個類
defxclassify(x,y,kc):
for i in
range(x.shape[0]):
y[i] =nearest(kc, x[i])
returny#
更新聚類中心
defkcmean(x,y,kc,k):
l =list(kc)
flag =false
for i in
range(k):
part = np.where(y ==i)[0]
if len(np.where(y == i)[0]) ==0:
newcenter =l[i]
else
: newcenter =np.mean(x[part])
if newcenter != l[i]: #
如果原中心和新中心不相等,就再賦值,並標記
l[i] =newcenter
flag = true #
標記return
np.array(l),flag#整合
defk_means(x,k):
y =np.zeros(x.shape[0])
#選取k個中心
kc =intcenter(x,k)
#每個元素進行分類,重新計算新中心,並判斷中心是否發生變化
flag =true
while
flag:
y =xclassify(x,y,kc)
result,flag =kcmean(x,y,kc,k)
return
result
#不斷迭代分類
flag =true
while
flag:
y =xclassify(x,y,kc)
kc,flag =kcmean(x,y,kc,k)
(kc,flag)
#用鳶尾花花瓣作分析
x =np.array(iris_length)
y =np.zeros(x.shape[0])
kc = intcenter(x,3)
flag =true
while
flag:
y =xclassify(x,y,kc)
kc,flag = kcmean(x,y,kc,3)
(kc,flag)
#分析鳶尾花花瓣長度的資料,並用散點圖表示出來
import
matplotlib.pyplot as plt
plt.scatter(iris_length, iris_length, marker='
p', c=y, alpha=0.5, linewidths=4, cmap='
rainbow')
plt.show()
用sklearn.cluster.kmeans,鳶尾花花瓣長度資料做聚類並用散點圖顯示,鳶尾花完整資料做聚類並用散點圖顯示。
**:
import截圖:花瓣長度聚類散點numpy as np
from sklearn.cluster import
kmeans
from sklearn.datasets import
load_iris
from matplotlib import
pyplot
iris_data =load_iris()
#花瓣長度做聚類
iris_length = iris_data.data[:, 2:3]
x1 =iris_length
k_means1 = kmeans(n_clusters=3)
result1 =k_means1.fit(x1)
kc1 =result1.cluster_centers_
y_kmeans1 =k_means1.predict(x1)#畫圖
pyplot.scatter(x1,np.linspace(1,150,150),c=y_kmeans1,marker='
x',cmap='
rainbow
',linewidths=4)
pyplot.show()
#完整資料的聚類
x2 =iris_data.data
k_means2 = kmeans(n_clusters=3)
result2 =k_means2.fit(x2)
kc2 =result2.cluster_centers_
y_kmeans2 =k_means2.predict(x2)
(y_kmeans2, kc2)
(kc2.shape, y_kmeans2.shape, x2.shape)
pyplot.scatter(x2[:, 0], x2[:, 1], c=y_kmeans2, marker='
p', cmap='
rainbow
', linewidths=4, alpha=0.6)
pyplot.show()
完整資料聚類散點圖:
第八次作業
練習題 1 怎麼查出通過 from xx import xx導 的可以直接調 的 法?在test package資料夾中建立 init py檔案,裡邊什麼都不需要編輯。在 中把test package的檔案的路徑加入到python直譯器可以搜尋到的路徑列表中,這裡就用到了python的包sys模組 ...
第八次作業
問題 答案這個作業屬於那個課程 c語言程式設計ii 這個作業要求在 我在這個課程的目標是 更加熟練掌握markdown語法的相關用法 這個作業在那個具體方面幫助我實現目標 更加熟練的使用markdown,對本週知識總結 參考文獻 pta常見問題解析,c語言程式設計 1.pta實驗作業 1.1 求整數...
第八次作業
一 hive用本地檔案進行詞頻統計 1.準備本地txt檔案 2.啟動hadoop,啟動hive 3.建立資料庫,建立文字表 4.對映本地檔案的資料到文字表中 5.hql語句進行詞頻統計交將結果儲存到結果表中 6.檢視統計結果 二 hive用hdfs上的檔案進行詞頻統計 1.準備電子書或其它大的文字檔...