100天搞定机器学习(100-Days-Of-ML)(十八)K-means聚类

第十八天
K-means聚类
无监督学习(Unsupervised Learning),顾名思义,就是不受监督的学习,一种自由的学习方式。该学习方式不需要先验知识进行指导,而是不断地自我认知,自我巩固,最后进行自我归纳,在机器学习中,无监督学习可以被简单理解为不为训练集提供对应的类别标识(label)。
K-means聚类是一种典型的无监督学习模型。
100天搞定机器学习(100-Days-Of-ML)(十八)K-means聚类_第1张图片
本章使用一些真实的地理位置来进行k-means聚类操作。数据集中是俄勒冈州的波特兰地区的一些真实的地址位置信息。我们对这些地理位置进行聚类。

第一步:导入包并加载数据集

数据集如下:
100天搞定机器学习(100-Days-Of-ML)(十八)K-means聚类_第2张图片

数据集中最后两列是地址的经纬度,我们用经纬度来进行聚类。

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()

100天搞定机器学习(100-Days-Of-ML)(十八)K-means聚类_第3张图片

你可能感兴趣的:(100天搞定机器学习)