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

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

系統 2362 0

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

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

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

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

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

?

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

得到下面數據:

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

?

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

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

?

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

python數據分析之機器學習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')

            
          

參數說明:

python數據分析之機器學習K-Means聚類算法學習筆記!_第5張圖片

在創建好 K-Means 類之后,就可以使用它的方法,最常用的是 fit 和 predict 這個兩個函數。你可以單獨使用 fit 函數和 predict 函數,也可以合并使用 fit_predict 函數。其中 fit(data) 可以對 data 數據進行 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
# 輸入數據
data = pd.read_csv('data.csv', encoding='gbk')
train_x = data[["2019 年國際排名 ","2018 世界杯 ","2015 亞洲杯 "]]
df = pd.DataFrame(train_x)
kmeans = KMeans(n_clusters=3)
# 規范化到 [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)
# 合并聚類結果,插入到原數據中
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      阿聯酋         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

            
          

示例數據已上傳到github:https://github.com/cystanford/kmeans


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 忻城县| 平阳县| 定陶县| 龙井市| 定襄县| 台东县| 永吉县| 汾阳市| 内黄县| 阿拉善右旗| 华阴市| 那坡县| 安溪县| 本溪市| 吴川市| 太原市| 德阳市| 郎溪县| 天全县| 湖州市| 蓬莱市| 桑日县| 浪卡子县| 鄂伦春自治旗| 都江堰市| 新巴尔虎左旗| 建水县| 崇文区| 乌兰浩特市| 连江县| 万载县| 古丈县| 金华市| 辛集市| 保亭| 贡嘎县| 广饶县| 涞水县| 工布江达县| 封丘县| 宣汉县|