100天搞定機器學習(100-Days-Of-ML)(十八)K-means聚類

第十八天
K-means聚類
無監督學習(Unsupervised Learning),顧名思義,就是不受監督的學習,一種自由的學習方式。該學習方式不需要先驗知識進行指導,而是不斷地自我認知,自我鞏固,最後進行自我歸納,在機器學習中,無監督學習可以被簡單理解爲不爲訓練集提供對應的類別標識(label)。
K-means聚類是一種典型的無監督學習模型。
在這裏插入圖片描述
本章使用一些真實的地理位置來進行k-means聚類操作。數據集中是俄勒岡州的波特蘭地區的一些真實的地址位置信息。我們對這些地理位置進行聚類。

第一步:導入包並加載數據集

數據集如下:
在這裏插入圖片描述

數據集中最後兩列是地址的經緯度,我們用經緯度來進行聚類。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
---------------------
文檔是txt格式,使用read_table讀取
data = pd.read_table('F:/places.txt')

data.head()

loc = data.iloc[ : , [3, 4]].values # 只取最後兩列的經緯度
---------------------------------
打印數據集查看
print(loc[0])

第二步:構建KMeans模型

這裏相比較其他有監督學習而言少了劃分數據集爲訓練集和測試集的過程,並不是不需要劃分和測試模型的算法。KMeans是無監督學習,簡單的來說可以視爲沒有訓練過程,沒有訓練過程當然也可以使用量化的誤差指標如誤差平方和來評價算法的結果。

from sklearn.cluster import KMeans
clusterModel = KMeans(n_clusters = 3, random_state = 5)
loc_kmeans = clusterModel.fit(loc)

--------------------------
查看聚族中心
loc_kmeans.cluster_centers_
查看所有點的聚族標籤
loc_kmeans.labels_
---------------------------
預測點的最近聚族
loc_pred = clusterModel.predict(loc) #這裏使用的就是當前的所有數據集

Tips: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=None, algorithm=’auto’)
----------------------------------------------------------
主要參數說明
n_clusters:int,optional,default 8,K-Means中聚類中簇的數目K
init:默認是k-means++,初始化簇中心的方法。
     k-means++:用一種特殊的方法選定初始質心從而能加速迭代過程的收斂,也叫k-means++方法,具體請查閱資料。
     random:隨機從訓練數據中選取初始化簇中心
     ndarray:自定義初始化簇中心
n_init:默認10,使用不同的簇中心運行算法的次數
max_iter:默認300,執行一次k-means算法所進行的最大迭代數
precompute_distances:auto、True、False;預計算距離,計算速度更快但佔用更多內存
tol:算法收斂的條件
官網API文檔:https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#examples-using-sklearn-cluster-kmeans
屬性說明:
cluster_centers_:array,返回的是聚簇的中心點
labels_:每個數據點的聚簇標誌
inertia_:樣本到最近聚簇中心的距離平方和
n_iter_:int,迭代的次數

第三步:可視化聚類結果

plt.scatter(X[ : , 0], X[ : , 1], c = loc_pred)
plt.title("kmeans")
plt.show()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章