黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

python數(shù)據(jù)分析之機(jī)器學(xué)習(xí)K-Means聚類算法學(xué)習(xí)筆記!

系統(tǒng) 2625 0

K-Means是一種聚類算法,無參照物,沒有訓(xùn)練數(shù)據(jù)。

該算法的原理:有一群雜亂無章的點(diǎn),分布混亂,現(xiàn)在規(guī)定把這些點(diǎn)分成K類,首先找到這K類的中心店,然后選擇一個(gè)距離(歐氏距離、曼哈頓距離、切比雪夫距離等),計(jì)算各點(diǎn)到各中心點(diǎn)之間的距離,離哪個(gè)中心店近就劃分到該中心店所屬的類中。

重復(fù)上述操作,直到類不發(fā)生變化,或者你也可以設(shè)置最大迭代次數(shù),這樣即使類中心點(diǎn)發(fā)生變化,但是只要達(dá)到最大迭代次數(shù)就會(huì)結(jié)束。

下面通過一個(gè)實(shí)例:利用python給亞洲球隊(duì)做聚類分析(以下為學(xué)習(xí)資料摘抄)

python數(shù)據(jù)分析之機(jī)器學(xué)習(xí)K-Means聚類算法學(xué)習(xí)筆記!_第1張圖片

?

針對(duì)上面的排名,我們首先需要做的是數(shù)據(jù)規(guī)范化。你可以把這些值劃分到 [0,1] 或者按照均值為 0,方差為 1 的正態(tài)分布進(jìn)行規(guī)范化。

得到下面數(shù)據(jù):

python數(shù)據(jù)分析之機(jī)器學(xué)習(xí)K-Means聚類算法學(xué)習(xí)筆記!_第2張圖片

?

如果我們隨機(jī)選取中國(guó)、日本、韓國(guó)為三個(gè)類的中心點(diǎn),我們就需要看下這些球隊(duì)到中心點(diǎn)的距離。(這里選擇常用的歐氏距離)

python數(shù)據(jù)分析之機(jī)器學(xué)習(xí)K-Means聚類算法學(xué)習(xí)筆記!_第3張圖片

?

然后我們?cè)僦匦掠?jì)算這三個(gè)類的中心點(diǎn),如何計(jì)算呢?最簡(jiǎn)單的方式就是取平均值,然后根據(jù)新的中心點(diǎn)按照距離遠(yuǎn)近重新分配球隊(duì)的分類,再根據(jù)球隊(duì)的分類更新中心點(diǎn)的位置。計(jì)算過程這里不展開,最后一直迭代(重復(fù)上述的計(jì)算過程:計(jì)算中心點(diǎn)和劃分分類)到分類不再發(fā)生變化,可以得到以下的分類結(jié)果:

python數(shù)據(jù)分析之機(jī)器學(xué)習(xí)K-Means聚類算法學(xué)習(xí)筆記!_第4張圖片

?

下面用sklearn中的K-means

            
              from sklearn.cluster import KMeans

KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm='auto')

            
          

參數(shù)說明:

python數(shù)據(jù)分析之機(jī)器學(xué)習(xí)K-Means聚類算法學(xué)習(xí)筆記!_第5張圖片

在創(chuàng)建好 K-Means 類之后,就可以使用它的方法,最常用的是 fit 和 predict 這個(gè)兩個(gè)函數(shù)。你可以單獨(dú)使用 fit 函數(shù)和 predict 函數(shù),也可以合并使用 fit_predict 函數(shù)。其中 fit(data) 可以對(duì) data 數(shù)據(jù)進(jìn)行 k-Means聚類。

predict(data) 可以針對(duì) data 中的每個(gè)樣本,計(jì)算最近的類。

完整的代碼如下:

            
              
# coding: utf-8
from sklearn.cluster import KMeans
from sklearn import preprocessing
import pandas as pd
import numpy as np
# 輸入數(shù)據(jù)
data = pd.read_csv('data.csv', encoding='gbk')
train_x = data[["2019 年國(guó)際排名 ","2018 世界杯 ","2015 亞洲杯 "]]
df = pd.DataFrame(train_x)
kmeans = KMeans(n_clusters=3)
# 規(guī)范化到 [0,1] 空間
min_max_scaler=preprocessing.MinMaxScaler()
train_x=min_max_scaler.fit_transform(train_x)
# kmeans 算法
kmeans.fit(train_x)
predict_y = kmeans.predict(train_x)
# 合并聚類結(jié)果,插入到原數(shù)據(jù)中
result = pd.concat((data,pd.DataFrame(predict_y)),axis=1)
result.rename({0:u'聚類'},axis=1,inplace=True)
print(result)

            
          

?

結(jié)果:

            
              國(guó)家  2019 年國(guó)際排名  2018 世界杯  2015 亞洲杯  聚類
0       中國(guó)         73       40        7   2
1       日本         60       15        5   0
2       韓國(guó)         61       19        2   0
3       伊朗         34       18        6   0
4       沙特         67       26       10   0
5      伊拉克         91       40        4   2
6      卡塔爾        101       40       13   1
7      阿聯(lián)酋         81       40        6   2
8   烏茲別克斯坦         88       40        8   2
9       泰國(guó)        122       40       17   1
10      越南        102       50       17   1
11      阿曼         87       50       12   1
12      巴林        116       50       11   1
13      朝鮮        110       50       14   1
14      印尼        164       50       17   1
15      澳洲         40       30        1   0
16     敘利亞         76       40       17   1
17      約旦        118       50        9   1
18     科威特        160       50       15   1
19    巴勒斯坦         96       50       16   1

            
          

示例數(shù)據(jù)已上傳到github:https://github.com/cystanford/kmeans


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論