ML:教你聚类并构建学习模型处理数据(附数据集)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介:

本文将根据41个描述性分类特征的维度,运用无监督主成分分析(PCA)和层次聚类方法对观测进行分组。将数据聚类可以更好地用简单的多元线性模型描述数据或者识别更适合其他模型的异常组。此方法被编写在python类中,以便将来能实现类似网格搜索的参数优化。

59ed5855d2ed81361f365fa09414e9d32c1e4617

结果与讨论

本项目中,我们将机器学习技术应用于Ames住房数据集,用79个解释变量来预测房屋的销售价格,其中包括41个分类变量(分类型变量),38个连续数值变量(连续型变量)。在最初探索性数据分析(EDA)和特征选择的过程中,为了更好地理解数据,我们仅用两个连续变量来拟合数据,以便通过三维散点图反映数据和模型。通过列举38个连续数值变量的所有双变量排列组合并分别拟合线性回归模型,我们选出了两个对销售价格预测能力最强的变量。在考虑整个训练集时,地上居住面积和整体质量参数是最佳的预测指标,但这只解释了房屋销售价73.9%的方差。通过使用41个分类特征来识别数据集内的组群,我们可以将数据集分解为方差更小的子集,并找到更好地描述每个特定房屋子集的模型。

附Ames housing数据集:

https://www.kaggle.com/c/house-prices-advanced-regression-techniques

85e058d02b0584ca50fbea03eee1479e5bafa7f4

一个简单的线性回归模型可以体现地上居住面积和整体质量对住宅销售价格的影响,它解释了74%的房价变动

由于分类变量较多,并且对Ames房屋市场的专业知识有限,我们使用无监督的聚类方法找到变量里的模式并在此基础上分组。首先通过PCA对数据集进行降维,以避免大量分类变量造成的“维度灾难”效应。PCA还有其他的好处,它能把对总体方差没有贡献的变量数量降到最低,并且将维度降低到三维以便我们直观地改进聚类算法的图形表示(并且将维度降低至三维,给了我们一个图形化的分类效果展示,以便做出直观地改进)。下图展示了由PCA将分类变量降到3维的图形:

096f7fd866261b40fefabe77b1f7e4d47327182a

由41个分类变量浓缩后的三维PCA空间数据表示

通过对此图的初步观察,数据大部分的差异体现在新的Y(垂直)维度。在X(宽度)和Z(深度)维度中,差异来源于设定的类别,进而导致数据形成垂直方向的条纹。由于群集的各向异性,我们利用有k-nearest neighbor connector参数的层次聚类算法来定义组,这样就不会将条带分割成多个部分。(我们利用层次聚类算法中的k邻近算法,在不把竖状条纹割开的基础上重新定义各个组。)(在Python的sklearn库中,AgglomerativeClustering方法可以用于聚类。本案例中,基于Ward linkage标准把类的数量设置为6,以及由kneighbors_graph包生成连接数组,其中参数n_neighbors设置为20)。

5f21c6ca82fc161fc7567c8bd6a97a87282feaf6

层次聚类分组的PCA空间表示

a3e38f2367f22f19c34637899adc31090366698b

基于邻近地区着色和PCA降维的观测有助于发现影响降维及聚类的因素

由PCA 、聚类方法生成的群集非常好地区别了分组中的垂直“条纹”。为了找到无监督聚类和其所对应的房屋特征之间的相似点,这些群集也基于每个分类变量着色。其中一些彩色的散点图类似于无监督聚类,表明这些特定的房子特征在确定每个数据点的最终PCA向量时起较大的作用。特别注意的是,基于邻近区域(neighborhood)着色突出了与无监督方法相似的垂直分组,这表明邻近区域是影响分解子集的一个重要因素。为了此类应用,我们需要设计更精确的方法来确定每个因素对最终PCA维度的整体“贡献”。

为了确定每个组中哪两大因素是销售价格最好的预测因素,我们用这6个集群把连续数值数据分为子集,并假设一个简单的二元线性回归模型

组别

最有影响力的自变量

判定系数

1

Overall Quality : GrLivArea

79.5%

2

Overall Quality : GarageArea

68.2%

3

Overall Quality : GarageCars

73.5%

4

Overall Quality : 1stFlrSF

62.5%

5

Overall Quality : GarageCars

85.9%

虽然有些节点比其他节点更适合线性回归,但相比于将数据作为整体来处理,用模型拟合这些群集在精度上没有累积差异。然而,这只是概念验证的初始迭代,还没有优化关键参数,如n_nodes、(节点数量),PCA dimensions(PCA维度)和KNN connectivity parameters(KNN连通度)。将这些方法编码到一个python类中,它可以协助使用类似于网格搜索的优化过程来确定最佳的集群参数,从而最大化简单线性回归模型的准确性。请参考下列GitHub链接中的"MC_regressor_Code.ipynb":

https://github.com/dgoldman916/housing-ml。

未来工作

此时,“概念验证”的关键缺失是对新数据进行训练和分类的能力。在引入测试集时,要先基于训练得到的参数将新数据被分为有标记的组。这就需要一个有监督的聚类方法,比如决策树或支持向量机(SVM)。在添加此类函数之后,可以将其应用到组的其他工作流程中。我们可以通过预期的最终迭代在拟合穿过节点的更复杂的模型,并将这些模型的结果集中在一起。


原文发布时间为:2018-04-5

本文作者:Michael Chin

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号

相关文章
|
Ubuntu Linux
Centos or Ubuntu 重新安装network服务
Centos or Ubuntu 重新安装network服务
|
4月前
|
存储 算法 机器人
【路径规划】基于时空A星算法求解带时间约束的多机器人路径规划问题附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。 🔥 内容介绍 多机器人系统在现代各个领域发挥着越来越重要的作用。在工业生产中,多台机器人协同完成复杂的装配任务,能够提高生产效率和产品质量;在物流配送和智能仓储场景下,多机器人协作实现货物的快速搬运和存储,优化物流流程。而路径规划是多机器人系统实现高效协同工作的核心问
|
4月前
|
人工智能 Linux API
阿里云/本地部署 OpenClaw+免费大模型API配置每日复盘机制:让AI Agent从错误中学习并实现自我进化
很多人使用AI Agent时都会遇到一个共性问题:任务执行后反馈完成,但实际并未达成目标;重复出现相同错误,无法从历史经验中吸取教训;多Agent协作混乱,缺乏统一行为准则,导致整体效率低下。这些问题的核心并非模型能力不足,而是缺少一套**主动复盘、经验沉淀、规则固化**的闭环机制。OpenClaw(原Clawdbot)通过构建每日自动复盘体系,让AI Agent实现真正意义上的自我进化,从被动执行转变为主动优化,持续提升任务执行准确率与自主性。本文将详细讲解OpenClaw复盘机制原理、实战配置、2026年阿里云与本地MacOS/Linux/Windows11部署流程、通义千问及Coding
484 0
|
12月前
|
人工智能 Java API
后端开发必看:零代码实现存量服务改造成MCP服务
本文介绍如何通过 **Nacos** 和 **Higress** 实现存量 Spring Boot 服务的零代码改造,使其支持 MCP 协议,供 AI Agent 调用。全程无需修改业务代码,仅通过配置完成服务注册、协议转换与工具映射,显著降低改造成本,提升服务的可集成性与智能化能力。
3258 1
|
IDE Android开发 iOS开发
深入解析Android与iOS的系统架构及开发环境差异
本文旨在探讨Android和iOS两大主流移动操作系统在系统架构、开发环境和用户体验方面的显著差异。通过对比分析,我们将揭示这两种系统在设计理念、技术实现以及市场策略上的不同路径,帮助开发者更好地理解其特点,从而做出更合适的开发决策。
2293 2
|
API 开发者 C++
《HarmonyOS Next分布式实战:跨设备流转玩出花!迁移+协同=超级终端》
《HarmonyOS Next分布式实战:跨设备流转玩出花!迁移+协同=超级终端》介绍了HarmonyOS如何通过分布式技术将多设备变为超级队友。核心功能包括跨端迁移和多端协同,实现任务接力与高效配合。文章通过实际案例解析,如媒体播控、应用接续等,展示无缝体验,并提供开发技巧。适合教育科普及开发者学习,助你掌握打破设备壁垒的分布式能力。
1297 0
|
弹性计算 应用服务中间件 API
AppFlow:无代码部署Dify并集成到企业微信
本文介绍如何通过计算巢AppFlow完成Dify的无代码部署,并将Dify应用集成到企业微信中使用。具体步骤包括:创建企业微信应用,获取AgentID和Secret;使用计算巢AppFlow模板创建连接流,配置Dify和企业微信的鉴权凭证;配置企业微信API接收消息和可信IP;最后测试应用确保正常运行。文中还提供了常见问题的解决方案,如域名主体校验未通过和配置企业可信IP报错等。
4776 11
AppFlow:无代码部署Dify并集成到企业微信
|
消息中间件 负载均衡 Java
如何设计一个分布式配置中心?
这篇文章介绍了分布式配置中心的概念、实现原理及其在实际应用中的重要性。首先通过一个面试场景引出配置中心的设计问题,接着详细解释了为什么需要分布式配置中心,尤其是在分布式系统中统一管理配置文件的必要性。文章重点分析了Apollo这一开源配置管理中心的工作原理,包括其基础模型、架构模块以及配置发布后实时生效的设计。此外,还介绍了客户端与服务端之间的交互机制,如长轮询(Http Long Polling)和定时拉取配置的fallback机制。最后,结合实际工作经验,分享了配置中心在解决多台服务器配置同步问题上的优势,帮助读者更好地理解其应用场景和价值。
820 18
|
Java 数据库连接 数据库
|
JavaScript
Vue3列表(List)
这段代码介绍了一个基于 Vue3 的列表组件库 `Vue Amazing UI`。该库提供了丰富的自定义选项,如边框、垂直布局、分割线、尺寸、加载状态等,并支持分页、自定义样式及操作项。组件通过插槽和属性实现高度灵活的内容展示与交互。
584 1
Vue3列表(List)