算法模型之分类模型(无监督学习K-means)

  1. 什么是无监督学习
    没有目标值的时候,采用无监督学习。因为不存在学习的对象。
  2. 无监督学习包含算法
  3. 聚类算法:
    K-means(K均值聚类)
  4. 降维:
    PCA
    3.K-means的原理(K-means的算法步骤)
  5. 首先,随机寻找K个点(这里的K是想要分成的份数)
  6. 第二步,把所有点,向这K个点进行求取距离,距离近的点,标成不同的颜色
  7. 第三步,把所有颜色相同的点,进行求取均值,形成一个新的K个中心
  8. 第四步,重复第二个步骤,直到前后两次的聚类中心重合或者相差不大的时候,停止聚类
  9. K-means的API
    sklearn.cluster.KMeans(n_clusters=8, init=’k-means++’,max_iter)
    n_clusters:开始聚类的中心点,也就是K值的个数
    init:初始化方法,也就是开始选取聚类点的方法,默认为’k-means++’
    max_iter: 迭代次数的限定
  10. K-means模型的评估方法”轮廓系数法”
  11. 方法详解:
    SCi = (b_i – a_i) / max(b_i, a_i)
    a_i代表的是一个类别中的一个样本和另一个类别中样本的距离的平均值
    b_i代表的是一个类别中的一个样本和该类别中样本的距离的平均值
    当 b_i >> a_i 时,SCi ≈ 1
    当 b_i >> a_i 时,SCi ≈ -1
    因此我们可以认为,当SCi接近1时,聚类的效果越好,越能达到”高内聚,低耦合”现象。
    因此我们可以认为,当SCi接近-1时,聚类的效果越差,越达不到”高内聚,低耦合”现象。
  12. 轮廓系数法API:sklearn.metrics.silhouette_score(data, lambel)
    data: 就是我们的数据集
    lambel: 就是预测得到的结果

注意,无监督学习一般不会用到数据集划分train_test_split函数

对以下数据进行划分无监督学习划分:

城市名称 城市代码 交通健康指数 交通延时指数 高延时运行时间占比 拥堵路段里程比 平均车速 中山市442000 0.743635484 1.595913978 53.13612903 1.679193548 28.26258065 临沂市371300 0.759006452 1.568817204 48.29747312 1.571397849 29.85091398 兰州市620100 0.740470968 1.508978495 37.99290323 1.838548387 27.91311828 南宁市450100 0.757883871 1.478924731 30.01784946 1.26811828 28.51892473 南昌市360100 0.760412903 1.499193548 36.55903226 1.618172043 30.64521505 南通市320600 0.78006129 1.373225806 17.29397849 0.641290323 36.31129032 厦门市350200 0.765535484 1.486290323 35.03580645 1.602096774 33.4133871 台州市331000 0.7707 1.489193548 38.17193548 1.016774194 30.18037634 合肥市340100 0.757322581 1.496451613 39.33693548 1.406505376 29.20225806 哈尔滨市230100 0.753622581 1.565913978 48.02849462 1.943172043 28.65483871 嘉兴市330400 0.778045161 1.384086022 21.68435484 0.524193548 30.47215054 大连市210200 0.740941935 1.621451613 59.94623656 1.829623656 29.05290323 太原市140100 0.751303226 1.55155914 39.24698925 2.113602151 31.8844086 常州市320400 0.765151613 1.435107527 30.19688172 0.69311828 31.96709677 徐州市320300 0.755609677 1.477150538 38.26166667 1.288817204 29.62478495 惠州市441300 0.744277419 1.552365591 47.93887097 1.660053763 28.59102151 无锡市320200 0.753158065 1.419032258 30.645 1.255806452 33.03451613 昆明市530100 0.745764516 1.540537634 43.90688172 1.972311828 28.21462366 泉州市350500 0.785393548 1.388602151 24.01424731 0.840483871 33.10064516 济南市370100 0.744958065 1.68483871 60.75241935 2.133709677 28.18612903 温州市330300 0.750845161 1.514569892 46.59478495 1.290322581 25.28204301 潍坊市370700 0.778345161 1.538602151 49.19354839 0.705322581 28.54231183 烟台市370600 0.767974194 1.528817204 47.67021505 0.73672043 30.69768817 珠海市440400 0.753825806 1.534086022 42.47311828 1.471774194 34.25344086 石家庄市130100 0.757196774 1.512365591 38.79924731 1.51311828 31.24752688 福州市350100 0.750977419 1.59655914 50.62741935 1.679892473 28.88032258 绍兴市330600 0.760645161 1.492311828 40.2327957 1.067311828 27.47043011 贵阳市520100 0.736306452 1.561021505 43.6377957 3.067634409 31.57268817 金华市330700 0.769812903 1.368602151 16.93553763 0.632473118 29.11575269 长春市220100 0.737064516 1.667473118 65.68096774 2.363655914 27.95241935

代码:

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from sklearn.preprocessing import StandardScaler
import pandas as pd

1、数据获取
path = "E:\Desktop\二线城市交通大数据(整理版本).xlsx"
data = pd.read_excel(path)
data = data.iloc[:, 3:]
data.head()
2、特征工程 标准化
transfer = StandardScaler()
data = transfer.fit_transform(data)
3、K-means聚类
estimator = KMeans(n_clusters=3)
estimator.fit(data)
y_predict = estimator.predict(data)
4、K-means 模型评估方法:轮廓系数
silhouette_score(data, y_predict)

输出结果:

0.31123484705638604

学习地址:

Original: https://blog.csdn.net/cai_niao_lu/article/details/121874864
Author: cai_niao_lu
Title: 算法模型之分类模型(无监督学习K-means)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/550468/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球