日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統(tǒng) 2448 0

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

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

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

下面通過一個實例:利用python給亞洲球隊做聚類分析(以下為學習資料摘抄)

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

?

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

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

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

?

如果我們隨機選取中國、日本、韓國為三個類的中心點,我們就需要看下這些球隊到中心點的距離。(這里選擇常用的歐氏距離)

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

?

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

python數(shù)據(jù)分析之機器學習K-Means聚類算法學習筆記!_第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ù)分析之機器學習K-Means聚類算法學習筆記!_第5張圖片

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

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

完整的代碼如下:

            
              
# 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 年國際排名 ","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)
# 合并聚類結果,插入到原數(shù)據(jù)中
result = pd.concat((data,pd.DataFrame(predict_y)),axis=1)
result.rename({0:u'聚類'},axis=1,inplace=True)
print(result)

            
          

?

結果:

            
              國家  2019 年國際排名  2018 世界杯  2015 亞洲杯  聚類
0       中國         73       40        7   2
1       日本         60       15        5   0
2       韓國         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       泰國        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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 哈巴河县| 宕昌县| 曲周县| 微博| 治县。| 巴林左旗| 满洲里市| 湄潭县| 林州市| 上思县| 东阳市| 宜都市| 灵山县| 丹阳市| 石河子市| 孟连| 监利县| 沙洋县| 西峡县| 米脂县| 子长县| 突泉县| 靖安县| 汶上县| 五指山市| 滁州市| 石景山区| 甘南县| 迁西县| 彰化县| 四川省| 贞丰县| 武平县| 郯城县| 芜湖市| 淮安市| 高陵县| 玉门市| 通化县| 龙井市| 额济纳旗|