机器学习---kmeans

量化策略图鉴25_机器学习策略:从 KMeans 聚类到强化学习,回测库偏爱“能断言的 ML“ 量化策略图鉴 · 第 25 篇 · 分类(21 个策略)· 2026-09-02提到"机器学习交易",多数人脑中浮现的是深不见底的黑箱神经网络。但翻开本仓库的 21 个策略,你会发现另一种风景:真正能进回归测试库的 ML 策略,几乎都把模型压缩成了——一个合成评分、一个聚类编号、一个伪 Q 值。这并非偷懒,而是工程选择。黑箱输出的微小漂移就能让回测结果面目全非,而"评分超过 0.6 开多"这样的规则可以钉进测试断言,任何时候重跑都能验证引擎有没有被改坏。 阅读详情

一、简介

K均值算法是一种聚类算法。 K均值聚类算法是发现给定数据集k个簇的算法。

聚类是一种无监督的学习,将相似的对象归到同一个簇中。聚类与分类的最大不同在于分类的目标事先已知,而聚类则不知道。

二、算法

1.步骤

1)随机在图中取K个种子点,或称为质心。(这里K=2)

2)然后对图中的所有点求到这K个种子点的距离,假如点Pi离种子点Si最近,那么Pi属于Si点群。(下图中,我们可以看到A,B属于上面的种子点,C,D,E属于下面中部的种子点)

3)接下来,我们要移动种子点到属于他的“点群”的中心。(见图上的第三步)

4)然后重复第2和第3步,直到种子点没有移动(我们可以看到图中的第四步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)。

2.k值选择:参考集群方案的平方值之和确定K值  

 K均值算法每个集群有自己的质心。一个集群内的质心和各数据点之间距离的平方和形成了这个集群的平方值之和。同时,当所有集群的平方值之和加起来的时候,就组成了集群方案的平方值之和。

当集群数量增加时,距离的平方总和快速减少。到某个值 k 之后,减少的速度就大大下降了。可以以此为参考找到集群数量的最优值。

三、优缺点

优点

K均值聚类算法是一种被广泛应用的聚类算法,其特点是高效,实现简单。

K均值擅长处理球状分布的数据,当结果聚类是密集的,而且类和类之间的区别比较明显时,K均值的效果比较好。对于处理大数据集,这个算法是相对可伸缩的和高效的,它的复杂度是O(nkt),n是对象的个数,k是簇的数目,t是迭代的次数。

缺点          

1)算法初始中心点选择影响算法的运行效率          

  随机选取中心点有可能导致迭代次数很大或者限于某个局部最优状态;通常k<<n,且t<<n,所以算法可能以局部最优收敛。

2)k的取值没有可借鉴性

K均值的最大问题是要求用户必须事先给出k的个数,k的选择一般都基于一些经验值和多次试验的结果,对于不同的数据集,k的取值没有可借鉴性。

3)对异常偏离的数据敏感——离群点

 K均值对“噪声”和孤立点数据是敏感的,少量的这类数据就能对平均值造成极大的影响。

四、kmeans算法改进

1.二分k均值

1)首先将所有点作为一个簇,然后将该簇一分为二。

2)之后选择能最大限度降低聚类代价函数(也就是误差平方和)的簇划分为两个簇。

因为聚类的误差平方和能够衡量聚类性能,该值越小表示数据点越接近于他们的质心,聚类效果就越好。所以我们就需要对误差平方和最大的簇进行再一次划分,因为误差平方和越大,表示该簇聚类效果越不好,越有可能是多个簇被当成了一个簇,所以我们首先需要对这个簇进行划分。

3)重复第二步直到簇的数目等于用户给定的数目k为止。

2.kmeans++

1)先从我们的数据库随机挑个随机点当“种子点”

2)对于每个点,我们都计算其和最近的一个“种子点”的距离D(x)并保存在一个数组里,然后把这些距离加起来得到Sum(D(x))。

3)然后,再取一个随机值,用权重的方式来取计算下一个“种子点”。

这个算法的实现是,先取一个能落在Sum(D(x))中的随机值Random,然后用Random -= D(x),直到其<=0,此时的点就是下一个“种子点”。

4)重复第二步和第三步直到k个聚类中心被选出来。

5)利用这k个初始的聚类中心来运行标准的k-means算法。

机械工程师如何用Codex实现CAD自动化:从重复劳动到智能设计 在机械设计领域,CAD二次开发长期面临学习门槛高、维护成本大的难题。随着AI编程助手如Codex的出现,通过自然语言生成可执行代码,工程师无需精通编程即可实现图纸批量处理、BOM表自动生成、参数化建模等任务。这种技术将重复性操作自动化,显著提升设计效率,让工程师聚焦于核心创新。应用场景涵盖批量修改图纸属性、跨软件数据流转、自动打印等。本文分享机械工程师利用Codex落地自动化的实战经验与避坑指南。 阅读详情

相关推荐

FPGA资料分享——FPGA开发板入手指南

FPGA学习,开发板怎么选,看这里,就一个通透

weixin_51627076的博客 7298

[机器学习]K-means算法详解:原理、优缺点、代码实现、变体及实际应用

K-means算法是一种非常流行的无监督学习方法,主要应用于聚类问题。本篇博客将详细介绍K-means算法的原理、优缺点及实际应用场景。

ShiinaMashiro0402的博客 4806

深度学习入门:一文详解BP神经网络

在BP神经网络中,输入层和输出层的节点个数都是确定的,而隐含层节点个数不确定,那么应该设置为多少。实际上,隐含层节点个数的多少对神经网络的性能是有影响的,有一个经验公式可以确定隐含层。上面是对隐含层和输出层之间的权值和输出层的阀值计算调整量,而针对输入层和隐含层和隐含层的阀值调。在BP神经网络中,输入层节点没有阀值。神经网络,神经网络在机器学习中应用比较广泛,比如函数逼近,模式识别,分类,数据压缩,数据。要求输入模式要有足够的随机性,对输入模式的噪声比较敏感,即对于剧烈变化的输入模式,训。

Machine Learning with Tutors 4万+

初识聚类算法:K均值、凝聚层…

很不错,给我很大的启发原文地址:初识聚类算法:K均值、凝聚层次聚类和DBSCAN作者:Intergret 聚类分析就仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组(簇)。其目标是,组内的对象相互之间是相似的,而不同组中的对象是不同的。组内相似性越大,组间差别越大,聚类就越好。 先介绍下聚类的不同类型,通常有以下几种: (1)层次的与划分的:如果允许簇具有子簇,则我们得到一个层次聚类

GeoTechMAN's Zone 2701

基于NXP1778的CAN自动波特率检测

一、概念 NXP1778芯片内部自带一个CAN控制器。CAN模块由两部分组成:控制器和验收滤波器。所有的寄存器和RAM都以32位字宽度来访问。 CAN自动波特率检测主要用于以一种CAN的转换的产品中。产品中CAN部分的波特率以前都是通过网页中修改然后配置下去的,依据实际情况的考虑,如果CAN部分的波特率能够根据客户设备的改变而自动改变,将会增加其灵活性。   二、原理 根据CAN控制器的

菜鸟的痕迹专栏 5271

Ubuntu服务器通过IPV6端口转发搭建幻兽帕鲁私服实战

本文详细介绍了在Ubuntu服务器上通过IPV6端口转发搭建幻兽帕鲁私服的完整教程。针对只有公网IPV6地址的服务器环境,提供了从硬件检查、端口转发工具配置到游戏服务器安装的全流程解决方案,帮助玩家轻松实现多人联机游戏体验。

weixin_30652491的博客 490

划分方法聚类(二)K-MEANS算法的改进

本文将主要针对K-MEANS算法主要缺点的改进进行讲述。 (1)离群点,噪声点的改进:针对离群点、噪声点,通过离群点检测算法,去掉离群点与噪声点。数据挖掘方面,经常需要在做特征工程和模型训练之前对数据进行清洗,剔除无效数据和异常数据。异常检测也是数据挖掘的一个方向,用于反作弊、伪基站、金融诈骗等领域。常用的离群点检测算法有: A:基于统计的离群点检测:设定数据的分布模型,不和谐检验,发现离

曾经沧海难为水 7879

pikachu靶场: 暴力破解第四关(token防爆破)

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个 Token 同时将此 Token 返回给客户端。此外,Token 是有时效的,一段时间之后或下一次请求时用户需要重新验证。

X_shiguang的博客 1720

机器学习算法:知道canopy、K-means++、二分K-means、K-medoids的优化原理

对于每一个小批量,通过计算平均值得到更新质心,并把小批量里的数据分配给该质心,随着迭代次数的增加,这些质心的变化是逐渐减小的,直到质心稳定或者达到指定的迭代次数,停止计算。k-medoids只能对小样本起作用,样本大,速度就太慢了,当样本多的时候,少数几个噪音对k-means的质心影响也没有想象中的那么重,所以k-means的应用明显比k-medoids多。kernelk-means实际上,就是将每个样本进行一个投射到高维空间的处理,然后再将处理后的数据使用普通的k-means算法思想进行聚类。...

黑马程序员官方博客 1606

基于STM32的智能浇花系统毕业设计(全部资料)

摘要:本文设计了一种基于STM32单片机的智能浇花系统,集成了环境温湿度检测、土壤温湿度监测、LCD显示、Wi-Fi联网及手机APP远程控制等功能。系统通过传感器实时采集环境参数,自动控制水泵工作实现智能灌溉,同时支持用户通过手机APP远程监控和调节。论文详细阐述了硬件选型、软件设计及系统测试过程,验证了系统的稳定性和实用性。该设计为家庭园艺提供了智能化解决方案,具有节水高效、操作便捷等特点。关键词:STM32;智能灌溉;远程控制;环境监测;Wi-Fi通信。

3254968421的博客 1195

【STK】手把手教你利用STK进行覆盖分析02-生成详细分析报告和图表

这篇文章主要针对上一篇文章中最后的案例1进行进一步的说明,详细介绍我们可以生成哪些结论性的成果。STK的Coverage模块的生成结果包括分析报告和图表两种样式,每种样式还分为动态和静态两种,也就是说,我们做完一个STK覆盖场景的仿真后,一般可以生成静态分析报告、动态分析报告、静态分析图表和动态分析图表这4种形式的分析成果,下面进行详细介绍。我们在选择了想要分析的区域或者点后,就可以利用CovDef生成分析报告了,覆盖定义的分析报告分为静态报告和动态报告两种,下面分析进行介绍: 首先我们先在左侧目标浏览器C

weixin_44184852的博客 3443

K-Mediods算法

K-Mediods算法概述K-mediods算法处理过程实验步骤1 安装并导入所需要的库2 定义一个k-medoid类2.1 创建测试数据并画图表示2.2 定义欧式距离的计算2.3 K-mediods算法2.4 画图分类比较3 sklearn实现K-Medoids算法3.1 引入所需要的库3.2 构造示例数据集(加入少量脏数据)3.3 准备可视化需要的降维数据3.4 对不同的k进行试探性K-medoids聚类并可视化k-meams 和 k-medoids 比较K-mediods算法优缺点 概述 k-mean

qq_44796643的博客 8224

zemax---光学设计基础概念篇(持续更新中)

光学设计相关知识概念

u011699626的博客 1145

用 Python 跑通第一个 Flink ML 项目KMeans 聚类从本地到集群实战

本文介绍了如何使用PyFlink ML的KMeans算法对二维向量进行聚类。主要内容包括:1)环境准备,需安装Java 8、Python 3.7/3.8和PyFlink ML SDK;2)代码实现步骤:创建执行环境和Table环境,构造训练数据表,配置KMeans模型参数并训练,使用模型进行预测;3)完整示例代码展示了如何将6个二维向量聚成2个簇,并输出每个向量所属的簇ID。该程序支持本地运行和集群部署两种方式。

hello.reader 2270

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

从 0 搭建一个 Flink ML 项目用 KMeans 跑出你的第一个聚类模型

本文介绍了如何使用Apache Flink ML构建一个基于KMeans算法的流处理项目。首先通过Maven原型快速生成Flink项目骨架,然后配置必要的依赖项,包括Flink ML核心库和Table API相关组件。重点展示了如何实现KMeans聚类算法:创建流执行环境,构造训练数据流,初始化KMeans模型,进行训练和预测。代码示例演示了从数据准备到模型应用的完整流程,为后续扩展真实业务场景提供了基础框架。该项目采用标准Java/Flink开发模式,适合作为机器学习应用的入门参考。

hello.reader 1174

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

机器学习spark ml提取文章关键词特征并聚类word2Vec+KMeans

 1.取英文文章数据,训练成模型,就是特征向量,用word2Vec。  2.然后用这个模型,去将新数据,或者老数据进行分类。  3.效果非常好的话,会形成类似:体育、游戏、生活、艺术等类别。  4.所用为最新的spark ml,不是mllib。  5.中间可以自己加一些去除停用词,结果优化,格式化输出等。 val conf = new SparkConf().setMaster...

灬皇帝的新装灬的博客 3384

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

机器学习机器学习实战-kmeans

机器学习机器学习实战-kmeans 简介: 聚类算法是一种无监督学习,它将相似的对象归类到同一簇中。聚类的方法可以应用所有的对象,簇内的对象越相似,聚类效果也就越好。 聚类和分类的最大不同之处在于,分类的目标是已知的,聚类是完全无监督学习,类别没有像分类那样被预先定义出来,所以叫做无监督学习。 kmeans算法是实际中最常用的聚类算法,没有之一。kmeans算法的原理简单,实现起来不是很复

Cutepingping的博客 1014

机器学习篇-聚类Kmeans算法

无监督学习算法,主要用于将相似的样本自动归到一个类别中;计算样本和样本之间的相似性,一般使用欧式距离误差平方和SSE (The sum of squares due to error)SSE 越小,表示数据点越接近它们的中心,聚类效果越好# @FileName : 03-顾客数据分析.pyimport os​os.environ["OMP_NUM_THREADS"] = '1' # 解决内存泄露警告​​。

m0_60916732的博客 1851

ML.NET技术研究系列-2聚类算法KMeans

上一篇博文我们介绍了ML.NET 的入门: ML.NET技术研究系列1-入门篇 本文我们继续,研究分享一下聚类算法k-means. 一、k-means算法简介 k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。 1. k-means算法的原理是什么样的?参考:https://bai...

weixin_30663471的博客 431

python机器学习手写算法系列——kmeans聚类

从机器学习到kmeans 聚类是一种非监督学习,他和监督学习里的分类有相似之处,两者都是把样本分布到不同的组里去。区别在于,分类分析是有标签的,聚类是没有标签的。或者说,分类是有y的,聚类是没有y的,只有X。所以,聚类只能根据X的特征本身,把样本分布到不同的组。 比如,我们有个成语,叫物以类聚,人以群分。我们可以把人分成男人和女人,这里分组的根据是人本身的属性-性别。而性别是知道的,而不需要用一...

juwikuang的专栏 9691

机器学习——聚类算法-KMeans聚类

KMeans聚类是一种常用的无监督学习算法,通过迭代计算样本的簇心和样本的簇分配,将样本划分为不同的簇。本文介绍了KMeans算法的原理、流程、聚类质量评价方法、优缺点以及KMeans++算法,并通过Python实现了一个简单的KMeans聚类算法示例。KMeans聚类算法可以应用于许多领域,如数据分析、模式识别和图像分割等。

weixin_39753819的博客 1609

机器学习之KMeans算法

KMeans算法是一种基于距离的聚类算法,旨在将数据集划分为K个簇(cluster),使得每个簇内的数据点尽可能相似,而不同簇之间的数据点尽可能不同。KMeans算法的核心思想是通过最小化簇内数据点与簇中心(centroid)之间的距离来实现聚类。KMeans算法的名称中的“K”表示用户指定的簇的数量,而“Means”表示簇的中心是通过计算簇内数据点的均值得到的。KMeans算法是机器学习中最常用的聚类算法之一,具有简单、高效、易于实现的特点。

zdx2585503940的博客 2395

网盘直链下载教程:3 步装好 LinkSwift,把网页版文件变成直链推给 IDM

网盘网页版下载慢、官方客户端又嫌笨重,还想批量把文件喂给下载器?LinkSwift 是一个跑在浏览器里的油猴脚本,基于【网盘直链下载助手】改进而来,支持百度网盘、阿里云盘、中国移动云盘、天翼云盘、迅雷云盘、光鸭云盘、夸克网盘、UC 网盘、123 云盘九大网盘。它在你本地浏览器里向网盘官方接口换出文件的真实下载地址(也就是"直链"),再交给 IDM、Aria2 系下载器或命令行工具干活,全程无需安装

gitblog_00141的博客 530

机器学习KNN与kmeans算法易混淆?一文来帮你分清楚!

本文对比分析了KNN和K-means两种机器学习算法。KNN是有监督分类算法,通过计算样本与训练数据的距离进行分类;K-means是无监督聚类算法,通过迭代优化聚类中心实现数据分组。文章从基本原理、算法步骤、代码实现和应用场景等方面进行了详细对比,并提供了Python实现代码。关键区别在于:KNN需要标签数据进行分类预测,适用于中小规模数据;K-means无需标签,适合大规模数据聚类分析。理解两者的差异有助于在实际项目中合理选择算法。

laozhangguzhang的博客 5533

机器学习之聚类Kmeans算法

主要介绍KMeans聚类算法,包括使用到的三种评估方法以及一个客户数据的案例

qq_57095929的博客 2330

【Machine Learning】如何使用python进行KMEANS

import seaborn import matplotlib.pyplot as plt import numpy as np import pandas as pd from sklearn.cluster import KMeans mu = 1 std = 0.5 mu2 = 4.188 np.random.seed(100) xs = np.append(np.append(np.append(np.random.normal(0.25,std,100), np.random.normal

weixin_44715742的博客 283
上一篇: 机器学习---随机森林
下一篇: 机器学习---降维方法
小小螺丝刀
博客等级 码龄10年 41粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值