目录

具体做法

可视化方法1:PCA降维

可视化方法2、TSNE降维可视化(非线性降维,更适合聚类)

可视化方法3、轮廓系数评判好坏


每个文件有很多行列的信息,每列是一个驾驶相关的数据,需要对这些文件进行聚类,每个文件代表一个用户的行为。

目标:聚类效果好,将各个用户行为分开。

具体做法

数据预处理

①将每个文件摊平到一行,汇总成为一个很多用户(文件)组成的csv文件。

import os
import pandas as pd# 1. 定义目标文件夹路径
folder_path = "/home/zqy/A_paper/diff_time_norm/cleantime"# 2. 用于存放每个文件(用户)摊平后的数据
flattened_data = []# 3. 遍历文件夹下所有CSV文件
for filename in os.listdir(folder_path):if filename.endswith("truncated.csv"):file_path = os.path.join(folder_path, filename)# 4. 读取CSV文件df = pd.read_csv(file_path)# 5. 将整个DataFrame按行摊平成一维(每行数据拼在一起)# df.values:转为numpy数组,ravel(): 展平flattened_row = df.values.ravel()# 6. 转成List(确保可以加入到汇总列表)flattened_data.append(flattened_row.tolist())# 7. 找到最长的一行长度,补齐其他行
max_length = max(len(row) for row in flattened_data)# 8. 确保所有行都补齐(空位补None或0)
flattened_data_padded = [row + [None] * (max_length - len(row)) for row in flattened_data]# 9. 将所有行转换成DataFrame
summary_df = pd.DataFrame(flattened_data_padded)# 10. 保存到新CSV文件
summary_df.to_csv("/home/zqy/A_paper/diff_time_norm/cleantime/flattened_summary.csv", index=False)print("汇总文件已生成。")

“DataFrame”是Python中pandas库的一个核心数据结构,它类似于Excel中的表格,是一个二维的、大小可变的、异构的数据结构。它由行和列组成,每一列可以存储不同类型的值,比如整数、浮点数、字符串等。在你提到的上下文中,它指的是包含有“数值型”数据的列的表格。

②对汇总后的文件的每一行当中有列表形式的展开处理(因为聚类要求每一列的元素都是数值)

#把多元组的列表转化为多个列import pandas as pd
import astdef expand_list_columns(df):new_cols = []for col in df.columns:if df[col].apply(lambda x: isinstance(x, str) and x.startswith('[') and x.endswith(']')).any():# 将字符串转为列表expanded = df[col].apply(lambda x: ast.literal_eval(x) if isinstance(x, str) else [])max_len = expanded.map(len).max()for i in range(max_len):df[f'{col}_{i}'] = expanded.map(lambda x: x[i] if i < len(x) else None)new_cols.append(col)# 删除原始的列表列df = df.drop(columns=new_cols)return df# 读取CSV
df = pd.read_csv('/home/zqy/A_paper/diff_time_norm/cleantime/flattened_summary.csv')# 转换
df_expanded = expand_list_columns(df)# 保存
df_expanded.to_csv('/home/zqy/A_paper/diff_time_norm/cleantime/expanded_features.csv', index=False)

③使用kmeans进行聚类处理。

import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt# 1. 读取数据
data_path = "/home/zqy/A_paper/diff_time_norm/cleantime/expanded_features.csv"
df = pd.read_csv(data_path)# 2. 数据预处理(空缺值补0,或用均值/中位数填充)
df_filled = df.fillna(0)  # 或 df.fillna(df.mean())# 3. 聚类,这里以KMeans为例,设定聚类数量k
k = 6  # 你可以根据需求调整
kmeans = KMeans(n_clusters=k, random_state=42)
# print(df_filled.dtypes)df_filled = df_filled.fillna(0)clusters = kmeans.fit_predict(df_filled)# 将聚类结果添加回DataFrame
df_filled['cluster'] = clusters# 4. 使用PCA降维到2D便于可视化
pca = PCA(n_components=2)
reduced_data = pca.fit_transform(df_filled.drop('cluster', axis=1))# 5. 可视化
plt.figure(figsize=(8,6))
scatter = plt.scatter(reduced_data[:, 0], reduced_data[:, 1], c=clusters, cmap='viridis', s=50)
plt.title('Clustering Visualization with PCA')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.colorbar(scatter, label='Cluster')
plt.grid(True)
plt.show()

可视化方法1:PCA降维

        缺点是只有二维,看不清楚聚类的边界。

pca = PCA(n_components=2)
reduced_data = pca.fit_transform(df_filled.drop('cluster', axis=1))plt.figure(figsize=(8,6))
scatter = plt.scatter(reduced_data[:, 0], reduced_data[:, 1], c=clusters, cmap='viridis', s=50)
plt.title('Clustering Visualization with PCA')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.colorbar(scatter, label='Cluster')
plt.grid(True)
plt.show()

这个图是PCA将维度降低来可视化的方法。

可视化方法2、TSNE降维可视化(非线性降维,更适合聚类)

from sklearn.manifold import TSNEtsne = TSNE(n_components=2, random_state=42, perplexity=30)
tsne_result = tsne.fit_transform(df_filled.drop('cluster', axis=1))plt.figure(figsize=(8,6))
plt.scatter(tsne_result[:,0], tsne_result[:,1], c=clusters, cmap='viridis', s=50)
plt.title('Clustering Visualization with t-SNE')
plt.xlabel('t-SNE Component 1')
plt.ylabel('t-SNE Component 2')
plt.colorbar(label='Cluster')
plt.grid(True)
plt.show()

TSNE 更适合看复杂的、非线性的数据分布

可视化方法3、轮廓系数评判好坏

from sklearn.metrics import silhouette_scorescore = silhouette_score(df_filled.drop('cluster', axis=1), clusters)
print(f'Silhouette Score: {score}')

结论解释

  • 分数在 -1 ~ 1 之间

  • 接近 1:聚类好,簇内紧凑、簇间分离

  • 接近 0:聚类一般

  • 接近 -1:聚类效果差

缺点:目前没有考虑不同列数据之间是否有相关性,没有把时间信息充分考虑进来,而是分开每列聚类。并且utime也进行聚类导致效果较好但是不加入效果不够好。

——小狗照亮每一天

20250722

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

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

相关文章

Qwen-MT:翻得快,译得巧

我们再向大家介绍一位新朋友&#xff1a;机器翻译模型Qwen-MT。开发者朋友们可通过Qwen API&#xff08;qwen-mt-turbo&#xff09;&#xff0c;来直接体验它又快又准的翻译技能。 本次更新基于强大的 Qwen3 模型&#xff0c;进一步使用超大规模多语言和翻译数据对模型进行训练…

在 OceanBase 中,使用 TO_CHAR 函数 直接转换日期格式,简洁高效的解决方案

SQL语句SELECT TO_CHAR(TO_DATE(your_column, DD-MON-YY), YYYY-MM-DD) AS formatted_date FROM your_table;关键说明&#xff1a;核心函数&#xff1a;TO_DATE(30-三月-15, DD-MON-YY) → 将字符串转为日期类型TO_CHAR(..., YYYY-MM-DD) → 格式化为 2015-03-30处理中文月份&a…

pnpm运行electronic项目报错,npm运行正常。electronic项目打包为exe报错

pnpm运行electronic项目报错 使用 pnpm 运行 electronic 项目报错&#xff0c;npm 运行正常&#xff0c;报错内容如下 error during start dev server and electron app: Error: Electron uninstallat getElectronPath (file:///E:/project/xxx-vue/node_modules/.pnpm/elect…

8️⃣ 高级特性—— 列表生成式

文章目录&#x1f9e0; 总结1. 基本语法2. 加筛选条件&#x1f501; 双层循环&#xff08;全排列&#xff09;&#x1f4c2; 遍历目录&#x1f511; 遍历字典&#x1f521; 转小写3. if 和 if...else 的区别4. 练习题&#x1f9e0; 总结 特性用法示例基础语法[x for x in iter…

DocC的简单使用

DocC的简单使用 在写3GShare中&#xff0c;由于刚开始使用MVC模式来写东西&#xff0c;对很多东西都不是很熟&#xff0c;经常写着写着就忘了自己在写什么&#xff0c;所以学了一下DocC来加快开发进度 什么是DocC 简单来说&#xff0c;DocC就是更高级的注释&#xff0c;虽然…

深入理解C语言快速排序与自省排序(Introsort)

排序算法是计算机科学中最基础也是最重要的知识之一。快速排序&#xff08;Quicksort&#xff09;因其平均时间复杂度为 O(n log n) 而广受欢迎&#xff0c;但在最坏情况下会退化到 O(n)。为了克服这一缺点&#xff0c;自省排序&#xff08;Introsort&#xff09; 应运而生&…

C#编程基础:运算符与结构详解

目录 一.关系运算符 常见关系运算符 二.逻辑运算符 常见逻辑运算符 1. 逻辑与&#xff08;&& 或 and&#xff09; 2. 逻辑或&#xff08;|| 或 or&#xff09; 3. 逻辑非&#xff08;! 或 not&#xff09; 运算符优先级 三.if语句 1.c#程序的三大结构 1.顺序…

嵌入式学习-土堆目标检测(3)-day27

再学一个labelme在labelstudio环境中再pip install labelme安装好后直接输入 labelme之后点击保存&#xff0c;选择保存文件地址还有一个就是将labelme的格式转化为yolo格式还是在labelstudio这个环境里面安装pip install labelme2yolo

Qt OpenGL 集成:开发 3D 图形应用

Qt 提供了完善的 OpenGL 集成方案&#xff0c;使开发者能够在 Qt 应用中高效开发 3D 图形应用。通过 Qt 的 OpenGL 模块&#xff0c;可简化 OpenGL 上下文管理、窗口渲染和跨平台适配&#xff0c;同时结合现代 OpenGL 特性&#xff08;如着色器、顶点缓冲、纹理等&#xff09;实…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 热词评论查询功能实现

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解热词评论查询功能实现 视频在线地址&#…

使用 Google Earth 的 DEM — 教程。

数字高程模型 (DEM)描绘了已知高程点之间的表面高程。本教程将向您展示如何使用 Google Earth 的高程数据生成 DEM。在当今世界&#xff0c;DEM 主要用于 GIS 应用。 当然&#xff0c;我们可以从美国地质调查局 (USGS) 网站下载数字高程模型 (DEM)。但如果我们想知道某个地点的…

在 UniApp 中实现中间凸起 TabBar 的完整指南

如何在 UniApp 中设置中间 TabBar 凸起效果 在移动应用开发中&#xff0c;TabBar 是常见的导航组件&#xff0c;而中间凸起的 TabBar 按钮则是一种流行的设计风格&#xff0c;常用于突出重要功能&#xff08;如发布、拍照等&#xff09;。UniApp 提供了 midButton 属性&#xf…

微观低代码

今日去深圳的一家工厂给客户做培训&#xff0c;主要培训内容为低代码产品的二开和功能演示。客户使用了20年的ERP和OA系统&#xff0c;目前想对接到低代码平台。客户目前想实现的主要功能是&#xff0c;对接OA的单点登录&#xff0c;把ERP的功能迁移到低代码平台上来工厂规模比…

Linux进程控制:掌握系统的核心脉络

Linux进程控制&#xff1a;掌握系统的核心脉络 在 Linux 系统中&#xff0c;进程控制是系统运行的核心机制之一。无论是日常的命令行操作&#xff0c;还是复杂的后台服务运行&#xff0c;都离不开对进程的管理和控制。本文将深入探讨 Linux 进程控制的相关知识&#xff0c;帮助…

4N90-ASEMI电机控制专用4N90

编辑&#xff1a;LL4N90-ASEMI电机控制专用4N90型号&#xff1a;4N90品牌&#xff1a;ASEMI封装&#xff1a;ITO-220ABRDS(on):3.60Ω批号&#xff1a;最新引脚数量&#xff1a;3封装尺寸&#xff1a;如图特性&#xff1a;N沟道MOS管工作结温&#xff1a;-55℃~150℃一、卓越性…

Java 笔记 lambda

✅Lambda 基本语法 (parameters) -> expression 或 (parameters) -> { statements }// 无参数 Runnable r () -> System.out.println("Hello");// 单个参数&#xff08;小括号可省略&#xff09; Consumer<String> c s -> System.out.println(s…

安全风险监测平台:被动应对向主动预防的转变

一、智能识别预警系统安全风险监测平台通过部署多维度感知网络&#xff0c;实现对各类安全隐患的智能识别与实时预警。系统采用深度学习算法&#xff0c;对人员行为、设备状态、环境参数等进行全天候监测分析&#xff0c;建立动态风险评估模型。当检测到异常情况时&#xff0c;…

图片查重从设计到实现(2)Milvus安装准备etcd介绍、应用场景及Docker安装配置

etcd作用、应用场景及Docker安装配置 在分布式向量数据库 Milvus 的架构中&#xff0c;etcd 扮演着至关重要的角色。Milvus 用于存储和管理海量向量数据&#xff0c;支持高效的相似性搜索等操作&#xff0c;而其分布式集群的正常运行高度依赖元数据的一致性和可靠性&#xff0c…

零弹窗干扰的贪吃蛇游戏,下载即玩

软件介绍 在寻找贪吃蛇游戏的过程中&#xff0c;我发现了一款PC端版本&#xff0c;无需登录即可直接使用&#xff0c;完全符合我的需求。 使用优势 这款软件最大的亮点在于完全免费&#xff0c;没有任何广告和弹窗干扰&#xff0c;支持完全离线运行&#xff0c;让用户能够专注…

excel2013VBA开发access mdb数据库系统的一点经验分享

最近&#xff0c;自己从网盘里重新下载了过去保存的vba开发资料&#xff0c;就顺手研究起了如何能通过excel203结合access 2013 mdb数据库系统开发个VBA小系统。过简单一说说了&#xff01;接说干货经验分享吧&#xff0c;1、俺先在mdb数据库中建了一个有自动编号字段的数据表&…