麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Python中使用K-means算法

Python中使用K-means算法

來源:千鋒教育
發布人:xqq
時間: 2023-11-13 10:16:27 1699841787

python中使用K-means算法

k-means是機器學習中最常用的聚類算法,關于k-means算法的數學原理、算法、偽碼等已有相當豐富的文獻,在此不再贅述。

1、調用以下庫

importnumpyasnp#用于抽樣和生成隨機數

fromsklearn.clusterimportKMeans#sklearn自帶的Kmeans算法,用于嚴重本文算法結果是否正確

importmatplotlib.pyplotasplt#結果可視化

importsys#需要用到sys.exit()函數

若不需要驗證聚類結果是否可以不使用Sklearn庫。

2、生成用于訓練的隨機數據

np.set_printoptions(suppress=True)#令numpy的結果不以科學計數法的方式輸出

Data=np.array([[1.0,2.0],[1.5,1.8],[3,4],[6,8],[8,8],[1,0.6],

[9,11],[7,10]])#你也可以通過抽樣的方式來更快的獲得測試數據

3、定義用于選擇隨機初始點和簇數(k)的函數

defK_means(data,k):

globalMean

mean=[]

a=np.max(data[:,0])

b=np.min(data[:,0])

c=np.max(data[:,1])

d=np.min(data[:,1])

foriinrange(k):

x=np.random.uniform(a,b,1)

#此處返回array

y=np.random.uniform(c,d,1)#此處返回array

mean.append([float(x),float(y)])

Mean=np.array(mean)

returnMean

在上面的代碼中,為了限定初始點(x,y)的位置不會超出樣本點的范圍,因此均勻抽樣的上下限是指訓練數據(a,b)和(c,d)的最小橫距。

4、定義可視化函數,繪制測試數據散點圖

defvision(data,cell):

plt.figure(figsize=(12,6))

ax1=plt.subplot(121)

ax1.scatter(Data[:,0],Data[:,1])#原始數據散點圖

ax1.scatter(point[:,0],point[:,0])#同時將隨機選取的初始點表示出來

plt.xlabel("x")

plt.ylabel("y")

plt.title("scatterof"+"rural"+"data")

ax2=plt.subplot(122)

ax2.scatter(Data[:,0],Data[:,1])#原始數據散點圖

ax2.scatter(data[:,0],data[:,1])#經過迭代后最終確定的聚類點

plt.xlabel("x")

plt.ylabel("y")

plt.title("scatterof"+cell+"data")

plt.show()

聚類結果的可視化對于判斷聚類結果的準確性至關重要。

5、定義迭代過程,通過不斷計算各個樣本對聚類點的歐式聚類,來不斷更新聚類點

defiteration(Data,point):

A=[]

B=[]

foriinrange(len(Data)):

d1=np.sqrt(sum(pow(Data[i]-point[0],2)))

d2=np.sqrt(sum(pow(Data[i]-point[1],2)))

ifd1>d2:

A.append(list(Data[i]))

else:

B.append(list(Data[i]))

iflen(A)==len(Data)orlen(B)==len(Data):

print("初始化錯誤")

sys.exit(0)

new_x1=np.mean(np.array(A)[:,0])

new_y1=np.mean(np.array(A)[:,1])

new_x2=np.mean(np.array(B)[:,0])

new_y2=np.mean(np.array(B)[:,1])

new_point=np.array([[new_x1,new_y1],[new_x2,new_y2]])

returnnew_point

注意,上段代碼中加入了一個if語句

iflen(A)==len(Data)orlen(B)==len(Data):

print("初始化錯誤")

sys.exit(0)

由于初始點是隨機產生的,所以這個條件語句是非常必要的,因此有可能所有的樣本點都只接近一個聚類中心而遠離另一個聚類中心,這樣就不能形成兩個聚類中心,程序將會報錯,因此我們需要排除出現這種情況的可能性。一旦所有樣本點都接近一個聚類中心時令程序停止。

以上就是Python中使用K-means算法,希望能對大家有所幫助!更多Python學習教程請關注IT培訓機構:千鋒教育。

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 处处吻动漫免费观看全集 | 美女脱个精光让男人桶爽| 婷婷亚洲久悠悠色悠在线播放| 香蕉视频在线观看www| 狠狠天天| 中国speakingathome宾馆学生| 黄色一级片日本| 日韩午夜视频在线观看| 亚洲欧洲精品成人久久曰 | 老头猛挺进小莹的体内小说全集| sihu国产精品永久免费| 大女小娟二女小妍| 老少交欧美另类| 久久精品国产一区二区三区不卡| 国产精品久久国产三级国不卡顿| 亚洲人成网站在线播放2019 | 男人j进女人p免费视频| 爱情岛论坛亚洲永久入口口| 日韩av片无码一区二区不卡电影| 欧美性猛交xxxx乱大交丰满| 夫妇野外交换hd中文小说| 日本黄色片免费观看| 国产破处在线| 扒开腿狂躁女人爽出白浆| 一本大道一卡2卡三卡4卡麻豆| 正在播放国产美人| 一男n女高h后宫| 真实国产乱人伦在线视频播放 | 欧美日韩国产另类一区二区三区 | 攵女yin乱合集高h小丹| 扒开双腿猛进入免费观看美女 | 日本夫妇交换| 啦啦啦啦在线直播免费播放| 品色堂永久免费| 动漫美女和男人羞羞漫画| 国产欧美91| 挺进白嫩老师下面视频| 爽天天天天天天天| 欧美国产日本高清不卡| 国产亚洲欧美日韩在线看片| 国产乱子伦|