处理数据及其选择关键列进行一次聚类

  • 1. 数据加载与初步处理

    # 文件路径
    file_path = '../data/all_database_result.csv'# 读取CSV文件到DataFrame
    df = pd.read_csv(file_path)# 选择特定的特征列
    selected_features = ['Q10', 'Q12', 'Q13', 'Q14']# 缺失值处理:这里简单地删除含有任何缺失值的行
    df.dropna(subset=selected_features, inplace=True)
  • 目的:从指定路径加载数据,并选择用于聚类的特定特征列。
  • 操作:使用 pandas 库读取CSV文件,然后删除包含缺失值的行。

2. 异常值处理

# 异常值处理:基于Z-score去除异常值
z_scores = np.abs((df[selected_features] - df[selected_features].mean()) / df[selected_features].std())
df = df[(z_scores < 3).all(axis=1)]  # 假设Z-score大于3为异常值

目的:识别并移除异常值,防止它们影响聚类效果。

操作:计算每行在选定特征上的Z分数(标准化后的距离),并将所有Z分数绝对值小于3的行保留下来,认为其他行为异常值并移除。

 

3. 数据标准化

# 数据标准化(Standardization)
scaler = StandardScaler()
df_normalized = scaler.fit_transform(df[selected_features])

目的:将不同特征的尺度统一,使得每个特征的均值为0,标准差为1。

操作:使用 StandardScaler 对选定特征进行标准化处理。

 4. PCA降维(可选)

 
使用PCA进行降维
pca = PCA(n_components=2)  # 或者根据需要调整n_components
df_pca = pca.fit_transform(df_normalized)

目的:减少数据维度,可能有助于提高聚类算法的效率和效果。

操作:使用主成分分析(PCA)将数据降至二维或三维,便于可视化和进一步分析。

 

 5. 第一阶段聚类

# 第一阶段聚类:尝试不同的簇数并计算轮廓系数
silhouette_scores = []
cluster_range = range(2, 11)  # 尝试从2到10个簇for k in cluster_range:# 应用KMeanskmeans = KMeans(n_clusters=k, random_state=42)clusters = kmeans.fit_predict(df_pca)# 计算轮廓系数silhouette_avg = silhouette_score(df_pca, clusters)silhouette_scores.append(silhouette_avg)print(f"对于 {k} 个簇,轮廓系数为: {silhouette_avg}")# 找出具有最佳轮廓系数的簇数
best_k_first_stage = cluster_range[silhouette_scores.index(max(silhouette_scores))]
print(f"\n第一阶段最佳簇数为 {best_k_first_stage},对应的轮廓系数为: {max(silhouette_scores)}")

目的:确定最佳簇数,通过比较不同簇数下的轮廓系数来选择最优的簇数。

操作:循环遍历不同的簇数(从2到10),对每个簇数应用KMeans聚类,并计算相应的轮廓系数,选择轮廓系数最高的簇数作为第一阶段的最佳簇数。

 6. 第二阶段聚类

# 使用最佳簇数进行第一次聚类
kmeans_first_stage = KMeans(n_clusters=best_k_first_stage, random_state=42)
clusters_first_stage = kmeans_first_stage.fit_predict(df_pca)# 第二阶段聚类:固定簇数为3
final_k = 3
kmeans_final = KMeans(n_clusters=final_k, random_state=42)
clusters_final = kmeans_final.fit_predict(df_pca)# 计算最终聚类的轮廓系数
silhouette_avg_final = silhouette_score(df_pca, clusters_final)
print(f"\n最终聚类结果为 {final_k} 个簇,对应的轮廓系数为: {silhouette_avg_final}")

目的:基于第一阶段的结果,再次应用KMeans聚类,这次将簇数固定为3,得到最终的聚类结果。

操作:首先使用第一阶段确定的最佳簇数进行聚类,然后固定簇数为3进行第二次聚类,并计算最终聚类结果的轮廓系数。

7. 结果保存

# 将最终聚类结果添加回原始DataFrame,并命名为'result'
df['result'] = clusters_final# 打印前几行查看结果
print("\n包含最终聚类结果的数据框:")
print(df.head())# 如果需要保存结果到新的CSV文件
output_file_path = '../data/all_database_result_with_final_clusters.csv'
df.to_csv(output_file_path, index=False)
print(f"\n结果已保存到: {output_file_path}")

目的:将最终的聚类结果保存回原始数据框,并导出到一个新的CSV文件中。

操作:将最终的聚类标签添加到数据框中,并使用 to_csv 方法保存结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/14633.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka中的KRaft算法

我们之前的Kafka值依赖于Zookeeper注册中心来启动的&#xff0c;往里面注册我们节点信息 Kafka是什么时候不依赖Zookeeper节点了 在Kafka2.8.0开始就可以不依赖Zookeeper了 可以用KRaft模式代替Zookeeper管理Kafka集群 KRaft Controller和KRaft Leader的关系 两者关系 Lea…

GitPuk快速安装配置教程(入门级)

GitPuk是一款国产开源免费的代码管理工具&#xff0c;工具简洁易用&#xff0c;开源免费&#xff0c;本文将讲解如何快速安装和配置GitPuk&#xff0c;以快速入门上手。 1、安装 支持 Windows、Mac、Linux、docker 等操作系统。 1.1 Linux安装&#xfeff; 以下以Centos7安装…

2025年02月08日Github流行趋势

项目名称&#xff1a;anything-llm 项目地址url&#xff1a;https://github.com/Mintplex-Labs/anything-llm项目语言&#xff1a;JavaScript历史star数&#xff1a;34323今日star数&#xff1a;675项目维护者&#xff1a;timothycarambat, shatfield4, MrSimonC, franzbischof…

【C语言标准库函数】指数与对数函数:exp(), log(), log10()

目录 一、头文件 二、函数简介 2.1. exp(double x) 2.2. log(double x) 2.3. log10(double x) 三、函数实现&#xff08;概念性&#xff09; 3.1. exp(double x) 的模拟实现 3.2. log(double x) 和 log10(double x) 的模拟实现 四、注意事项 4.1. exp(double x) 的注…

Linux之kernel(1)系统基础理论(1)

Linux之Kernel(1)系统基础理论(1) Author: Once Day Date: 2025年2月6日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: Linux内核知识_Once-Day的…

从 Facebook 到元宇宙:社交网络的技术进化与前景

引言 社交网络的演变不仅仅是技术进步的体现&#xff0c;更是人类沟通方式革命的缩影。从 Facebook 的诞生到元宇宙的兴起&#xff0c;我们见证了社交互动从简单的信息交换到沉浸式虚拟体验的转变。本文将探讨这一技术演进的历程&#xff0c;并展望社交网络在元宇宙时代的新形…

内容中台赋能人工智能技术提升业务创新能力

内容概要 在当今快速变化的市场环境中&#xff0c;企业需要不断寻求创新以保持竞争力。内容中台作为一种新型的内容管理架构&#xff0c;能够极大地提升企业在内容创建、管理和分发方面的效率。通过与人工智能技术的深度融合&#xff0c;企业能够将海量的数据和信息转化为有价…

qt部分核心机制

作业 1> 手动将登录项目实现&#xff0c;不要使用拖拽编程 并且&#xff0c;当点击登录按钮时&#xff0c;后台会判断账号和密码是否相等&#xff0c;如果相等给出登录成功的提示&#xff0c;并且关闭当前界面&#xff0c;发射一个跳转信号&#xff0c;如果登录失败&#…

深度解析全钢陶瓷防静电地板在机房装修中应用较多的原因

全钢陶瓷防静电地板之所以在机房装修中应用较多&#xff0c;是因为它结合了全钢结构和陶瓷面层的双重优势&#xff0c;能够满足高要求场景&#xff08;如数据中心、实验室、医疗设施等&#xff09;对防静电性能、承重能力、耐用性及环境适应性的综合需求。以下是具体原因分析&a…

数据表中的视图操作

文章目录 一、视图概述二、为什么要使用视图三、创建视图四、查看视图 一、视图概述 小学的时候&#xff0c;每年都会举办一次抽考活动&#xff0c;意思是从每一个班级里面筛选出几个优秀的同学去参加考试&#xff0c;这时候很多班级筛选出来的这些同学就可以临时组成一个班级…

zzcms接口index.php id参数存在SQL注入漏洞

zzcms接口index.php id参数存在SQL注入漏洞 漏洞描述 ZZCMS 2023中发现了一个严重漏洞。该漏洞影响了文件/index.php中的某些未知功能,操纵参数id会导致SQL注入,攻击可能是远程发起的,该漏洞已被公开披露并可被利用。攻击者可通过sql盲注等手段,获取数据库信息。 威胁等级:…

Mobaxterm上传下载文件

上传文件 ctrl 右击,选择send file use z-modem 弹窗选择要上传的文件即可 下载文件 输入sz xxx.log ctrl 右击,选择receive file use z-modem 弹窗选择要文件下载的路径即可

cs106x-lecture2(上)(Autumn 2017)

打卡cs106x(Autumn 2017)-lecture2 1、parameterMysteryBCA What is the output of the following code? void mystery(int& b, int c, int& a) {a;b--;c a; } ​ int main() {int a 5;int b 2;int c 8;mystery(c, a, b);cout << a << " "…

e2studio开发RA2E1(9)----定时器GPT配置输入捕获

e2studio开发RA2E1.9--定时器GPT配置输入捕获 概述视频教学样品申请硬件准备参考程序源码下载选择计时器时钟源UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()printf输出重定向到串口定时器输入捕获配…

JVM虚拟机以及跨平台原理

相信大家已经了解到Java具有跨平台的特性&#xff0c;即“一次编译&#xff0c;到处运行”&#xff0c;例如在Windows下编写的程序&#xff0c;无需任何修改就可以在Linux下运行&#xff0c;这是C和C很难做到的。 那么&#xff0c;跨平台是怎样实现的呢&#xff1f;这就要谈及…

激活函数篇 02 —— 双曲正切函数tanh

本篇文章收录于专栏【机器学习】 以下是激活函数系列的相关的所有内容: 一文搞懂激活函数在神经网络中的关键作用 逻辑回归&#xff1a;Sigmoid函数在分类问题中的应用 tanh ⁡ ( x ) e x − e − x e x e − x \tanh(x)\frac{e^x - e^{-x}}{e^x e^{-x}} tanh(x)exe−xex…

redis高级数据结构布隆过滤器

文章目录 背景什么是布隆过滤器Redis 中的布隆过滤器布隆过滤器使用注意事项实现原理空间占用估计 背景 我们在使用新闻客户端看新闻时&#xff0c;它会给我们不停地推荐新的内容&#xff0c;它每次推荐时要去重&#xff0c;去掉那些已经看过的内容。问题来了&#xff0c;新闻…

存储异常导致的Oracle重大生产故障

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…

在 Navicat 17 中扩展 PostgreSQL 数据类型 | 创建自定义域

定义域 以适当的格式存储数据可以确保数据完整性&#xff0c;防止错误&#xff0c;优化性能&#xff0c;并通过实施验证规则和支持高效数据管理来维护系统间的一致性。基于这些原因&#xff0c;顶级关系数据库&#xff08;如PostgreSQL&#xff09;提供了多种数据类型。此外&a…

计算机视觉-拟合

一、拟合 拟合的作用主要是给物体有一个更好的描述 根据任务选择对应的方法&#xff08;最小二乘&#xff0c;全最小二乘&#xff0c;鲁棒最小二乘&#xff0c;RANSAC&#xff09; 边缘提取只能告诉边&#xff0c;但是给不出来数学描述&#xff08;应该告诉这个点线是谁的&a…