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

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

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

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

城市名称城市代码交通健康指数交通延时指数高延时运行时间占比拥堵路段里程比平均车速
中山市4420000.7436354841.59591397853.136129031.67919354828.26258065
临沂市3713000.7590064521.56881720448.297473121.57139784929.85091398
兰州市6201000.7404709681.50897849537.992903231.83854838727.91311828
南宁市4501000.7578838711.47892473130.017849461.2681182828.51892473
南昌市3601000.7604129031.49919354836.559032261.61817204330.64521505
南通市3206000.780061291.37322580617.293978490.64129032336.31129032
厦门市3502000.7655354841.48629032335.035806451.60209677433.4133871
台州市3310000.77071.48919354838.171935481.01677419430.18037634
合肥市3401000.7573225811.49645161339.336935481.40650537629.20225806
哈尔滨市2301000.7536225811.56591397848.028494621.94317204328.65483871
嘉兴市3304000.7780451611.38408602221.684354840.52419354830.47215054
大连市2102000.7409419351.62145161359.946236561.82962365629.05290323
太原市1401000.7513032261.5515591439.246989252.11360215131.8844086
常州市3204000.7651516131.43510752730.196881720.6931182831.96709677
徐州市3203000.7556096771.47715053838.261666671.28881720429.62478495
惠州市4413000.7442774191.55236559147.938870971.66005376328.59102151
无锡市3202000.7531580651.41903225830.6451.25580645233.03451613
昆明市5301000.7457645161.54053763443.906881721.97231182828.21462366
泉州市3505000.7853935481.38860215124.014247310.84048387133.10064516
济南市3701000.7449580651.6848387160.752419352.13370967728.18612903
温州市3303000.7508451611.51456989246.594784951.29032258125.28204301
潍坊市3707000.7783451611.53860215149.193548390.70532258128.54231183
烟台市3706000.7679741941.52881720447.670215050.7367204330.69768817
珠海市4404000.7538258061.53408602242.473118281.47177419434.25344086
石家庄市1301000.7571967741.51236559138.799247311.5131182831.24752688
福州市3501000.7509774191.5965591450.627419351.67989247328.88032258
绍兴市3306000.7606451611.49231182840.23279571.06731182827.47043011
贵阳市5201000.7363064521.56102150543.63779573.06763440931.57268817
金华市3307000.7698129031.36860215116.935537630.63247311829.11575269
长春市2201000.7370645161.66747311865.680967742.36365591427.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

学习地址:

黑马程序员3天快速入门python机器学习_哔哩哔哩_bilibili

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值