机器学习--聚类(12)

2023-11-10

一、基本概念

聚类的概念:一种无监督的学习,事先不知道类别,自动将相似的对象归到同一个簇中。

应用场景:文档分类器、客户分类、保险欺诈检测、 乘车数据分析

二、距离计算

对于有序距离

在这里插入图片描述
其中P=1为曼哈顿距离
P=2为欧氏距离

对于无序距离

使用VDM距离:
在这里插入图片描述
其中 mu,a,i表示在第i个样本簇中属性u上取值为a的样本数
mu,a表示属性u上取值为a的样本数
k为样本簇数

混合距离

使用闵科夫斯基距离和VDM的混合

在这里插入图片描述
其中nc为有序属性个数

加权距离

根据不同属性的重要性,可使用“加权”距离

二、聚类算法的分类

2.1 基于原型的聚类

①、Kmeans算法

主要思想:

在给定K值和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数。

K值选取原则:评价效果好且结果可解释
初始点的选取原则: 尽可能远

优点:

1、解决聚类问题的经典算法,简单
2、当处理大数据集时,该算法保持可伸缩性和高效率
3、当簇近似为高斯分布时,它的效果较好

缺点:

1、在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用
2、必须实现给出k(要生成簇的数目),而且对初值敏感,即对于不同的初值,可能会导致不同结果
3、不适合非凸形状的簇或者大小差别很大的簇
4、对噪声和孤立点敏感

②、学习向量量化(LVQ)
③、高斯混合聚类

基于密度的聚类

练习

亚洲足球队实力聚类

import numpy as np
import pandas as pd
from pandas import Series, DataFrame

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

from sklearn.cluster import KMeans
from mpl_toolkits.mplot3d import axes3d

# 导入数据集
data = pd.read_csv('AsiaZoo.txt', header=None)
data.columns = ["国家","2006世界杯","2010世界杯","2007亚洲杯"]

X = data.iloc[:,1:]
km = KMeans(n_clusters=3)
y_ = km.fit_predict(X)

sns.set_style(style='white')

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘制聚类后的散点图
plt.figure(figsize=(10,6))
ax = plt.subplot(projection = '3d')

ax.scatter3D(data['2006世界杯'], data['2010世界杯'], data['2007亚洲杯'], s=200, c= y_, alpha=1)
ax.set_xlabel('2006世界杯')
ax.set_ylabel('2010世界杯')
ax.set_zlabel('2007亚洲杯')
plt.show()

# 查看每个类的球队
data['类别'] = y_
for _, indexes in data.groupby('类别').groups.items():
    countrys = data.loc[indexes, '国家']
    for country in countrys:
        print(country, end=' ')
    print()

数据集:
在这里插入图片描述
散点图:
在这里插入图片描述
每个类别球队:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习--聚类(12) 的相关文章

  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • NotImplementedError:无法将符号张量 (lstm_2/strided_slice:0) 转换为 numpy 数组。时间

    张量流版本 2 3 1 numpy 版本 1 20 在代码下面 define model model Sequential model add LSTM 50 activation relu input shape n steps n fe

随机推荐

  • 详解vue中的v-model

    序 v model是v bind和v on input的结合 即监听了表单的input事件 然后修改value属性对应的值 一 vue单文件中使用v model 众所周知 当我们使用v bind绑定prop时 数据流的流向是从model层流
  • Centos7安装Redis并设置开机自启动图文详解

    1 下载redis wget http download redis io releases redis 6 0 0 tar gz 如果提示没有wget使用如下命令 yum y install wget 2 安装 解压 tar zxvf r
  • 【ES】Elasticsearch Java Rest Client (Document APIs)官方文档中文翻译

    这里写目录标题 一 文档APIs 1 单文档 API Index API Get API Get Source API Exists API Delete API Update API Term Vectors API 2 多文档 API
  • Linux本地套接字

    LINUX和UNIX都拥有一个非常实用的工具 UNIX套接字 或称为本地套接字 它可以被用在进程间通讯 IPC 当中 UNIX套接字的运转机制和Internet套接字类似 主要的区别UNIX套接字只能用在一台计算机中 而Internet套接
  • Linux(ubuntu)安装libevent

    步骤如下 第一步下载压缩包文件 libevent 2 1 8 stable tar gz 地址 https github com libevent libevent releases download release 2 1 8 stabl
  • 李沐论文精读系列四:CLIP和改进工作串讲(LSeg、GroupViT、VLiD、 GLIPv1、 GLIPv2、CLIPasso)

    文章目录 一 CLIP 1 1 简介 1 1 1 前言 1 1 2 模型结构 1 1 3 模型效果 1 1 3 1 对自然分布偏移的鲁棒性 1 1 3 2 StyleCLIP 1 1 3 3 CLIPDraw 1 1 3 4 zero sh
  • 互联网拥塞控制终极指南

    本文为媒矿工厂翻译的技术文章 原标题 The Ultimate Guide to Internet Congestion Control 原作者 Michael Schapira 原文链接 https www compiralabs com
  • sqlserver 查看表所占磁盘空间

    方法1 可以通过SP SPACEUSED来查看 sp spaceused 显示行数 保留的磁盘空间以及当前数据库中的表所使用的磁盘空间 或显示由整个数据库保留和使用的磁盘空间 语法 sp spaceused objname objname
  • ubuntu开机出现initramfs解决办法

    今天上班打开ubuntu的虚拟机的时候出现了这个界面 注意倒数第三行 说 dev sda1 需要 fsck 第一步 执行命令 fsck dev sda1 y 第二步 当出现FILE SYSTEM WAS MODIFIED这个的时候 就表示已
  • 你想知道undo log的作用都在这里

    今天我们来介绍下mysql的undo log 日志 带你更加深入理解它的作用 01 为什么需要 undo log 考虑一个问题 一个事务在执行过程中 在还没有提交事务之前 如果mysql发生了崩溃 要怎么回滚到事务之前的数据呢 如果我们每次
  • 关于本地方法栈的详细介绍

    本地方法栈 Native Method Statck 与虚拟机所发挥的作用是非常相似的 它们之间的的区别不过是虚拟机栈为虚拟机执行java方法 也就是字节码 服务 而本地方法栈则为虚拟机是有的Native方法服务 在虚拟机规范中对本地方法栈
  • entity framework core + SQLite Error 1: 'no such table: Blogs'.

    在学习Entity Framework Core使用SQLite时 出现上述错误 原因是找不到db文件 在UseSqlite 中添加具体的db文件路径 改成如下即可 protected override void OnConfiguring
  • Sentinel--服务容错

    目录 1 高并发带来的问题 2 服务雪崩效应 3 常见容错方案 1 高并发带来的问题 在微服务架构中 我们将业务拆分成一个个的服务 服务与服务之间可以相互调用 但是由于网络原因或者自身的原因 服务并不能保证服务的100 可用 如果单个服务出
  • 置信度&置信区间,这篇讲解我给100分!

    今天这篇聊聊统计学里面的置信度和置信区间 好像没怎写过统计学的东西 这篇试着写一写 1 点估计 在讲置信度和置信区间之前先讲讲点估计 那什么是点估计呢 给你举两个例子你就知道了 现在你想要知道一个学校学生的身高情况 你可以把所有的学生测量一
  • 创造与魔法为什么显示无法连接服务器,创造与魔法为什么显示登录失败

    发布时间 2018 04 19 一些玩家遇到数据库登录失败的问题 不知道如何解决 进不了游戏很是烦恼 下面小编就为大家带来十三号星期五数据库登录失败解决方法 遇到这类问题的小伙伴快来看看吧 十三号星期五数据库登录失败解决方 标签 攻略 发布
  • 哈夫曼编码(Huffman Coding)多图详细解析

    哈夫曼编码 哈夫曼编码 又称为霍夫曼编码 它是现代压缩算法的基础 假如我们需要将字符串ABBBCCCCCCCCDDDDDDEE通过二进制编码进行传输 那应该怎么将字符转换为二进制码 方法一 转换为ASCII码 直接将字母转换为对应的ASCI
  • vue【封装 Vue.js 组件库】

    一 组件库有哪些 element iu iview CDD Component Driven Development 自下而上 从组件级别开始 到页面级别结束 CDD 的好处 组件在最大程度被重用 并行开发 可视化测试 二 组件库开发流程
  • git 之 gitlab 私有项目仓库的搭建与使用

    gitlab 私有项目仓库的搭建与使用 一 gitlab简介 二 gitlab安装 三 gitlab使用 一 gitlab简介 GitLab是一个利用 Ruby on Rails 开发的开源应用程序 实现一个自托管的Git项目仓库 可通过W
  • 自用.vimrc文件

    set paste set nocompatible 关闭 vi 兼容模式 syntax on 自动语法高亮 set number 显示行号 set cursorline 突出显示当前行 set ruler 打开状态栏标尺 set shif
  • 机器学习--聚类(12)

    一 基本概念 聚类的概念 一种无监督的学习 事先不知道类别 自动将相似的对象归到同一个簇中 应用场景 文档分类器 客户分类 保险欺诈检测 乘车数据分析 二 距离计算 对于有序距离 其中P 1为曼哈顿距离 P 2为欧氏距离 对于无序距离 使用