机器学习之k 均值聚类教程(代码实战,详解核心算法)

2023-11-01

k 均值聚类

1.引入依赖

import numpy as np
import matplotlib.pyplot as plt
# 调用sklearn中的方法直接生成数据
from sklearn.datasets.samples_generator import make_blobs

2.数据加载和预处理

x, y = make_blobs(n_samples=100, centers=6, random_state=1234, cluster_std=0.6)
#print(x,y)
plt.figure(figsize=(6,6))
plt.scatter(x[:,0],x[:,1],c=y)
plt.show()
print(x.shape)

在这里插入图片描述

3. 算法实现

from scipy.spatial.distance import cdist

class K_Means():
    # 初始化,参数k、迭代次数、初始中心点
    def __init__(self, k_cluster=6, max_iter=100, centroids=[]):
        self.k_cluster = k_cluster
        self.max_iter = max_iter
        self.centroids = np.array(centroids, dtype=np.float)
    
    def fit(self,data):
        # 如果没有中心点,在data中随机选取作为初始中心点
        if(self.centroids.shape==(0,)):
            self.centroids = data[np.random.randint(0,data.shape[0],self.k_cluster),:]
            
        for i in range(self.max_iter):
            # 计算距离矩阵,记录所有数据点和所有中心点的距离,算出来一个100*6的矩阵
            distances = cdist(data, self.centroids)
            
            # 选取距离最近的中心点,做分类
            c_index = np.argmin(distances, axis=1)
            
            # 计算每类数据的均值,就是分类之后新的中心点
            for i in range(self.k_cluster):
                # 只对有效的类别做计算
                if i in c_index:
                    self.centroids[i] = np.mean(data[c_index==i],axis=0)
    
    def predict(self, test):
        distances = cdist(test, self.centroids)
            
        # 选取距离最近的中心点,做分类
        c_index = np.argmin(distances, axis=1)
        return c_index

4.测试

def plotKMeans(x, y, centroids, subplot):
    plt.subplot(subplot)
    plt.scatter(x[:,0], x[:,1],c=y)
    plt.scatter(centroids[:,0],centroids[:,1],s=100,c='r')

kmeans = K_Means(centroids = np.array([[2,1],[2,2],[2,3],[2,4],[2,5],[2,6]]))

plt.figure(figsize=(16,6))
plotKMeans(x, y, kmeans.centroids, 121)

# 开始聚类
kmeans.fit(x)
print(kmeans.centroids)

plotKMeans(x, y, kmeans.centroids, 122)

# 做出预测
x_new = np.array([[10,7],[0,0]])
y_pred = kmeans.predict(x_new)

print(y_pred)

plt.scatter(x_new[:,0],x_new[:,1],s=100,c="black")

在这里插入图片描述

注:也可以直接调用sklearn里面写好的代码,引用以后实例化就好了,下面附上sklearn算法与对应库:
(例如K均值聚类法:可以直接用sklearn,导用,就不用自己去定义函数了,上面的只是帮助你理解。)

在这里插入图片描述

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

机器学习之k 均值聚类教程(代码实战,详解核心算法) 的相关文章

  • Cython 函数中的字符串

    我想这样做将字符串传递给 Cython 代码 test py s Bonjour myfunc s test pyx def myfunc char mystr cdef int i for i in range len mystr err
  • 管理 Tweepy API 搜索

    如果这是对之前在其他地方回答过的问题的粗略重复 请原谅我 但我不知道如何使用 tweepy API 搜索功能 是否有任何有关如何使用搜索推文的文档api search 功能 有什么方法可以控制返回的推文数量 结果类型等功能 由于某种原因 结
  • 使用 Pillow 和 Numpy 进行图像推导

    I have two images and 我想导出一个只有红色 Hello 的图像 例如 所以我正在运行一个简单的推导python脚本 from PIL import Image import numpy as np root root
  • sphinx 中的分组方法文档字符串

    是否可以使用 sphinx 的 autodoc 功能将多个方法文档字符串分组 以便将它们列在一起 class Test object def a self A method of group foo def b self A method
  • 如何在 kubernetes 上使多个 pod 相互通信

    我是 Kubernetes 新手 我正在尝试通过 microk8s 将应用程序部署到 Kubernetes 该应用程序包含Python Flask后端 Angular前端 Redis和MySQL数据库 我将映像部署在多个 Pod 中 状态显
  • 查找 python 数据框中每行的最高值

    我想找到每行中的最高值并返回 python 中该值的列标题 例如 我想找到每行的前两个 df A B C D 5 9 8 2 4 1 2 3 我希望我的输出看起来像这样 df B C A D 您可以使用字典理解来生成largest n数据帧
  • Python Pandas 从宽到长的格式更改以及列标题拆分

    我有一个包含以下列标题和行示例的表 Subject Test1 Result1 Test1 Result2 Test2 Result1 Test2 Result2 0 John 10 0 5 20 0 3 我想将其改造成 Subject l
  • 如何使用 boto3 从 AWS Cognito 获取经过身份验证的身份响应

    我想使用 boto3 获取访问 AWS 服务的临时凭证 用例是这样的 我的 Cognito 用户池中的用户登录到我的服务器 我希望服务器代码为该用户提供访问其他 AWS 服务的临时凭证 我有一个存储我的用户的 Cognito 用户池 我有一
  • Highcharts 奇怪的分组行为

    我正在使用延迟加载 http www highcharts com stock demo lazy loading加载 OHLC 数据的方法 在服务器端 我使用 Python MySQL 并有 4 个包含 OHLC 数据的表 时间间隔为 5
  • 使用Python进行图像识别[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个想法 就是我想识别图像中的字母 可能是 bmp或 jpg 例如 这是一个包含字母 S 的 bmp 图像 我想做的是使用Pyth
  • 来自数据框 groupby 的条形图

    import pandas as pd import numpy as np import matplotlib pyplot as plt df pd read csv arrests csv df df replace np nan 0
  • 如何将一串Python代码编译成一个可以调用函数的模块?

    在 Python 中 我有一串 Python 源代码 其中包含以下函数 mySrc def foo print foo def bar print bar 我想将这个字符串编译成某种形式类似模块的对象这样我就可以调用代码中包含的函数 这是我
  • 如何将 pip 指向 Mercurial 分支?

    我正在尝试通过 pip 将我的应用程序安装到 virtualenv 进行测试 安装时效果很好default or tip像这样 pip install e hg https email protected cdn cgi l email p
  • 如何将列表中的每个项目转换为字符串,以便连接它们? [复制]

    这个问题在这里已经有答案了 我需要加入一个项目列表 列表中的许多项目都是从函数返回的整数值 IE myList append munfunc 我应该如何将返回的结果转换为字符串以便将其加入列表 我是否需要对每个整数值执行以下操作 myLis
  • django 中的“管理器”是什么?

    我已经阅读了Django官方中的定义文档 https docs djangoproject com en dev topics db managers 我仍然对什么感到困惑Manager does 文档说它们允许您操作数据库表 模型 但我仍
  • Python:使用for循环更改变量后缀

    我知道这个问题被问了很多 但到目前为止我无法使用 理解答案 我想改变for循环中变量的后缀 我尝试了 stackoverflow 搜索提供的所有答案 但很难理解提问者经常提出的具体代码 因此 为了清楚起见 我使用一个简单的示例 这并不意味着
  • 如何让 Python 找到 ffprobe?

    I have ffmpeg and ffprobe安装在我的 mac macOS Sierra 上 并且我已将它们的路径添加到 PATH 中 我可以从终端运行它们 我正在尝试使用ffprobe使用以下代码获取视频文件的宽度和高度 impor
  • 与 GNU Make 等 Python 相关的并行任务并发

    我正在寻找一种方法或者可能是一种哲学方法来如何在 python 中执行类似 GNU Make 的操作 目前 我们使用 makefile 来执行处理 因为 makefile 非常擅长通过更改单个选项 j x 进行并行运行 此外 gnu mak
  • Python中的MariaDB连接器无法连接到远程服务器

    我使用与远程 Mariadb 服务器的连接已有几个月了 今天 无法再通过 macOS 上的 python mariadb 模块和 mariadb 连接器建立连接 基本安装如下 brew install mariadb connector c
  • 需要一个从 yaml 文件中提取内容并输出为 csv 文件的脚本

    我对 python 很陌生 但我很感激您帮助指导我创建一个简单的脚本 该脚本读取一堆 yaml 文件 同一目录中的大约 300 个文件 并从 yaml 文件并将其转换为 csv yaml 文件中内容的示例 code 9313 degrees

随机推荐

  • webpack打包原理解析

    文章目录 webpack打包是如何运行的 webpack对CommonJS的模块化处理 webpack对es6 Module模块化的处理 webpack文件的按需加载 按需加载输出代码分析 总结 webpack打包是如何运行的 也可以称为
  • Nacos框架服务主动下线原理及源代码讲解

    原理 Nacos没有想eureka一样 在服务端提供API供调用进行服务下线 Nacos的实现方式是通过在客户端提供方法 我们自己封装API进行调用 然后客户端会进行2个步骤 1 如果是临时服务 客户端会把自己发送续约保活心跳的缓存实例给删
  • window.open对storage有没有影响?

    首先在浏览器开发者模式打印如下信息 设置storage存值 sessionStorage setItem aaa 111 localStorage setItem bbb 222 新开一个浏览器窗口 在开发者模式打印窗口获取上一个窗口存储的
  • JAVA算法(分糖果)

    题目描述 有n个小朋友围坐成一圈 老师给每个小朋友随机发偶数个糖果 然后进行下面的游戏 每个小朋友都把自己的糖果分一半给左手边的孩子 一轮分糖后 拥有奇数颗糖的孩子由老师补给1个糖果 从而变成偶数 反复进行这个游戏 直到所有小朋友的糖果数都
  • 版本记录总结

    对构建中使用的版本进行记录
  • 【vue】this.$router.replace跳转不起作用 Router push or replace not working

    项目场景 商城APP底部导航切换对应页面 问题描述 提示 这里描述项目中遇到的问题 Just sit there clicking the home btn watching log show me home but never getti
  • Git远程库代码回退

    一 首先认识两个回退过程中很重要的命令 1 git log 显示所有提交过的版本信息 不包括已经被删除的 commit 记录和 reset 的操作 空格向下翻页 b 向上翻页 q 退出 git log pretty oneline git
  • 华为od机试 C++ 【计算最少步数】

    题目 小明计划在周末去爬山 他有一份包含山峰高度的地图 其中 0 代表平地 而 1 到 9 表示不同的山峰高度 小明可以向上 下 左或右移动一步 但是 由于他不想爬得太累 他决定只在高度差不超过 k 的地方移动 现在他站在地图的左上角 你能
  • 做好五年不跳槽的准备

    入职半年了 我觉得这里可以长久发展 其一 工作能胜任 我感觉找回自信了 甚至有些傲娇了 说明osg确实比较对口 做擅长的工作 会越做越有信心 其二 老大靠谱 老大十几年经验 并且很有耐心 工作方式也对 比如 先给你代码 在这个基础上改 并且
  • 超长整数相加

    链接 https www nowcoder com questionTerminal 5821836e0ec140c1aa29510fd05f45fc orderByHotValue 1 mutiTagIds 640 643 page 6
  • Python数据挖掘 数据预处理案例(以航空公司数据为例)

    Python数据预处理 一 内容 1 数据清洗 2 数据集成 3 数据可视化 二 实验数据 根据航空公司系统内的客户基本信息 乘机信息以及积分信息等详细数据 依据末次飞行日期 LAST FLIGHT DATE 以2014年3月31日为结束时
  • go build遇见“module *** found, but does not contain package ***”

    在实际项目中编译版本时遇见以下问题 common middleware sentinel go 4 2 module github com alibaba sentinel golang latest found v1 0 2 but do
  • SSH项目所需jar包下载地址

    struts2下载地址 http pan baidu com s 1c0joXbi hibernate下载地址 http pan baidu com s 1c0ues1a spring下载地址 http pan baidu com s 1b
  • JS学习篇(一)—— 数据类型篇

    JS学习篇 一 数据类型篇 JS的有八种数据类型 七种基本类型 undefined null Boolean number string symbol bigint 一种引用类型 object 七种基本类型 1 undefined 定义 通
  • (新)关于修改window.navigator.webdriver代码失效问题

    文章目录 前文回顾 溯源追根 解决方案 新登陆代码 写在最后 前文回顾 前面写过两篇关于sycm自动化爬取的文章 关于抓取代码的文章链接 出师未捷身先死的sycm数据自动化 关于chrome版本迭代后 代码失效问题解决方案的文章链接 关于修
  • mysql8.0一 服务启动

    声明 本文 禁止转载 本文所有观点和概念都系个人总结 难免存在疏漏之处 为不至于诱导初学者误入歧途 望各位以自己实践为准 特此声明 如有错误请告知 启动 流程 windows 7系统 创建data空目录 创建my ini文本文件 内容如下
  • Mac如何通过Xcode安装GCC编译器 How to install gcc on mac with xcode

    什么是GCC GCC GNU Compiler Collection 是由自由软件基金会 FSF Free Software Foundation Inc 研发的开源编译器集合 用一句话说 GCC就是除Windows以外的平台上使用最广的编
  • Java反射copy对象源到目标

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 使用反射机制 二 使用步骤 1 引入库 2 Copy数据 3 Fields 自定义注解 总结 前言 例如 随着很多流行的框架出现 反射也成了其中必不可少的
  • 【项目实战】Python实现循环神经网络SimpleRNN、LSTM进行淘宝商品评论情感分析(含爬虫程序)

    说明 这是一个机器学习实战项目 附带数据 代码 如需数据 完整代码可以直接到文章最后获取 1 项目背景 随着信息化社会的发展 互联网成为方便 快捷的信息获取渠道之一 在电子商务和社会网站中 大量非结构化的评论文本作为最直观的用户体验数据被保
  • 机器学习之k 均值聚类教程(代码实战,详解核心算法)

    k 均值聚类 1 引入依赖 import numpy as np import matplotlib pyplot as plt 调用sklearn中的方法直接生成数据 from sklearn datasets samples gener