2024年华中杯B题论文发布+数据预处理问题一代码免费分享

【腾讯文档】2024年华中杯B题资料汇总

https://docs.qq.com/doc/DSExMdnNsamxCVUJt

行车轨迹估计交通信号灯周期问题

摘要

在城市化迅速发展的今天,交通管理和优化已成为关键的城市运营问题之一。本文将基于题目给出的数据,对行车轨迹估计交通信号灯周期问题进行研究。

针对问题一,固定周期信号灯周期估计。首先,对于给出的数据进行数据清洗,先进行异常值与缺失值的判定,结合实际情况进行人为判定,结果发现基本不存在这方面的数据问题。因此,基于数据本身对X轴数据、Y轴数据进行综合分析。得出不同的道路类型可能存在同向或异向的道路。因此,对Y轴数据进行肘部法则的聚类分析进行道路分类,对X轴数据位移变化判定方向。基于判定的结果,利用欧氏距离计算每一点的速度,速度为0,标记该时间点车辆为停止状态。提取停止和启动时间,计算持续时间。利用峰值分析,反映红灯时长;计算两个连续停止事件之间的时间差,估算绿灯时长,通过剔除策略排除极端值,保留正常范围内的数据,以确保评估的准确性。

针对问题二,影响因素分析与误差建模。采用问题一想用的数据处理方式,使用肘部法则进行聚类分析,对处理后的数据,引入问题一模型进行评估。对于误差分析,不同的样本车辆比例,选择不同的样本率导入模型进行评估,得出随着样本车辆比例的增加,平均红灯持续时间也呈现增长的趋势等结论。对于不同定位分析,设置偏移量是基于原始坐标的标准差的一定百分比(5%),结果发现并没有引起变化,这也验证的模型能够很好的应对定位不准确问题。

针对问题三,动态周期变化检测。利用问题一二思路计算有效的停车持续时间数据,使用峰值分析确定停车持续时间中的主要峰值,将停车持续时间大于平均值的数据视为有效数据,低于平均值的视为异常值并剔除。使用CUSUM方法判定周期变化点。针对问题四,对新的数据集进行评估。首先,利用给出的数据绘制车辆轨迹图,发现车辆大致为八个方向,因此使用python进行对数据进行分类。对分类后的数据集,采用问题一二三构建模周期模型。

关键词:数据清洗,聚类分析,肘部法则,动态周期变化检测,CUSUM方法

26页 1.2万字(无附录)

无水印照片17页

利用matlab的find函数,对给出的附件一A1、A2、A3、A4、A5数据进行判定,得出并无缺失值。在利用K-S检验判定分布方式,对正态分布数据使用3西格玛原则判定异常值;对非正态分布数据使用箱型图判定异常值。

X轴位置分析

为了更加直观的展示运动轨迹,以ID313、ID150、ID364为例,绘制了其X轴的运动轨迹

图1:轨迹图

Y轴位置分析

对于Y轴的数据,表示横向位置。即道路位置,表示了具体存在几个车道。对于A1数据,可以认为A1为双向车道。

表1:Y值计数

y计数
1.62324
4.89328

对于A2等数据文件,发现一共存在4618种y值位置。因此,不可能存在4618条道路。需要基于题目数据进行分类分析。

表1:Y值计数

y计数
-54.761
-54.711
-54.671
-54.631

为了直观的展示Y的具体数值,绘制了概率密度图如下所示

根据y的分布图可以看出,数据集中在特定的几个值上,这可能表示不同的车道位置。使用K-Means聚类算法来尝试确定车道数目。因此,对于这种的聚类方式,我选择与其高度相似的层次聚类算法。层次聚类算法即为开始就将每个数据点视为一个单一的聚类,然后依次合并(或聚集)类,直到所有类合并成一个包含所有数据点的单一聚类。

下面为了更好的解释这一概念,将利用matlab绘制示意图详细的解释这一

通过该图个图,可以看出k=5进行聚类,以识别五个可能的车道位置,并对数据进行聚类。

同时,利用x坐标(位移)随时间的变化判定是否为同一方向,问题一五个附件结果如下所示

图1:绿灯分布图

表 1:路口A1-A5 各自一个方向信号灯周期识别结果

路口A1A2A3A4A5
红灯时长(秒)55.9644.6957.0846.5551.63

5.4 模型的应用

5.4.1 路口方向划分

利用给出的数据进行路口的划分,需要根据车辆在路口的运动模式或方向来分类数据。这种分类可能需要根据车辆的位置变化(即坐标变化)来确定其可能的方向。

观察车辆轨迹:通过观察车辆坐标随时间的变化,可以推测车辆的大致行驶方向

计算方向:通过计算连续坐标点之间的变化,可以估计车辆的行驶方向。例如,如果x坐标随时间增加而y坐标减少,车辆可能是向东北方向行驶。

首先展示几个车辆的轨迹图,如下图所示

import pandas as pd# Load the data from the uploaded CSV file
file_path = 'A5.csv'
data = pd.read_csv(file_path)# Display the first few rows of the dataframe
data.head(), data.describe()
import matplotlib.pyplot as plt
import seaborn as sns# Plotting the distribution of y values to estimate lanes
plt.figure(figsize=(10, 6))
sns.histplot(data['y'], bins=50, kde=True)
plt.title('Distribution of Lateral Position (y)')
plt.xlabel('Lateral Position (y)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()
from sklearn.cluster import KMeans
import numpy as np# Determining the optimal number of clusters (lanes)
y_data = data['y'].values.reshape(-1, 1)
sse = []
for k in range(1, 11):kmeans = KMeans(n_clusters=k, random_state=0).fit(y_data)sse.append(kmeans.inertia_)# Plotting the SSE to find the elbow, which might indicate the optimal k (number of lanes)
plt.figure(figsize=(10, 6))
plt.plot(range(1, 11), sse, marker='o')
plt.title('Elbow Method For Optimal k')
plt.xlabel('Number of clusters (k)')
plt.ylabel('Sum of squared errors (SSE)')
plt.grid(True)
plt.show()# Applying K-Means with k=5
kmeans = KMeans(n_clusters=5, random_state=0).fit(y_data)
centers = kmeans.cluster_centers_# Plotting the clusters
plt.figure(figsize=(10, 6))
sns.scatterplot(x=data['x'], y=data['y'], hue=kmeans.labels_, palette='viridis', s=30)
plt.scatter(centers[:, 0], centers[:, 0], c='red', s=200, alpha=0.75, marker='X')  # Mark cluster centers
plt.title('Vehicle Positions with Lateral Position Clusters')
plt.xlabel('Displacement (x)')
plt.ylabel('Lateral Position (y)')
plt.legend(title='Cluster')
plt.grid(True)
plt.show()centers.flatten()import pandas as pd
from sklearn.cluster import KMeans
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt# 使用肘部法则确定最佳聚类数
sse = {}
for k in range(1, 11):kmeans = KMeans(n_clusters=k, random_state=42)kmeans.fit(data[['y']])sse[k] = kmeans.inertia_# 假设根据图形分析选择了最佳的聚类数
optimal_k = 6
kmeans = KMeans(n_clusters=optimal_k, random_state=42)
data['lane'] = kmeans.fit_predict(data[['y']])# 对每个聚类分析x坐标的变化
directions = {}
for lane in range(optimal_k):lane_data = data[data['lane'] == lane]model = LinearRegression()model.fit(lane_data[['time']], lane_data['x'])slope = model.coef_[0]direction = 'Increasing' if slope > 0 else 'Decreasing'directions[lane] = direction# 绘制轨迹plt.scatter(lane_data['time'], lane_data['x'], label=f'Lane {lane} - {direction}')plt.xlabel('Time')
plt.ylabel('X Coordinate')
plt.title('Vehicle Trajectories by Lane')
plt.legend()
plt.show()# 输出结果表格
results = pd.DataFrame.from_dict(directions, orient='index', columns=['Direction'])
print(results)

% 加载数据
data = readtable('A5.csv');% 显示数据的前几行和描述性统计
head(data)
summary(data)% 使用histogram绘制y值的分布,估计车道
figure;
histogram(data.y, 'BinWidth', 0.1, 'Normalization', 'probability');
title('Distribution of Lateral Position (y)');
xlabel('Lateral Position (y)');
ylabel('Frequency');
grid on;% 使用K-means聚类确定车道数量的最佳值(肘部法则)
y_data = data.y;
sse = zeros(10,1);
for k = 1:10
[idx, C, sumd] = kmeans(y_data, k);
sse(k) = sum(sumd);
end% 绘制肘部图形
figure;
plot(1:10, sse, '-o');
title('Elbow Method For Optimal k');
xlabel('Number of clusters (k)');
ylabel('Sum of squared errors (SSE)');
grid on;% 应用K-means聚类,假设最佳k为5
k = 5;
[idx, C] = kmeans(y_data, k);% 假设最佳聚类数为6,再次运行K-means
k = 6;
[idx, C] = kmeans(data.y, k);data.lane = idx;% 对每个车道的x坐标随时间的变化进行线性回归分析
figure;
hold on;
colors = lines(k);
directions = cell(k, 1);
for i = 1:k
laneData = data(data.lane == i, :);
mdl = fitlm(laneData.time, laneData.x);
slope = mdl.Coefficients.Estimate(2);
direction = 'Increasing';
if slope < 0
direction = 'Decreasing';
end
directions{i} = direction;scatter(laneData.time, laneData.x, 36, colors(i,:), 'DisplayName', sprintf('Lane %d - %s', i, direction));
endxlabel('Time');
ylabel('X Coordinate');
title('Vehicle Trajectories by Lane');
legend('show');
grid on;% 输出方向结果
directions_table = table((1:k)', directions, 'VariableNames', {'Lane', 'Direction'});
disp(directions_table);

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

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

相关文章

DBA面试(ORACLE ADG篇)

一、在Oracle的DG中&#xff0c;RFS、LNSn、MRP、LSP进程的作用分别是什么&#xff1f; 1.RFS进程 RFS&#xff08;Remote File Server&#xff09;进程主要用来接受从主库传送过来的日志信息。对于物理备库而言&#xff0c;RFS进程可以直接将日志写进Standby Redo logs&…

七月论文审稿GPT第4.5版:通过15K条paper-review数据微调Llama2 70B(含各种坑)

前言 当我们3月下旬微调完Mixtral 8x7B之后(更多详见&#xff1a;七月论文大模型&#xff1a;含论文的审稿、阅读、写作、修订 )&#xff0c;下一个想微调的就是llama2 70B 因为之前积攒了不少微调代码和微调经验&#xff0c;所以3月底apple便通过5K的paper-review数据集成功…

在Java Swing的JPanel中实现动态水印添加技术

在Java Swing的JPanel中实现动态水印添加技术 引言场景一&#xff1a;静态图片水印实现步骤应用示例 场景二&#xff1a;动态生成的组件水印应用示例结论 后续拓展 引言 在Java Swing应用程序开发中&#xff0c;JPanel作为基本的容器组件&#xff0c;常被用来构建丰富的图形用户…

机器视觉【1】-机械臂视觉

文章目录 Eye-to-HandEye-in-Hand基于Eye-in-Hand型机械臂单目视觉定位单目相机标定针孔相机模型畸变标定方法机械臂手眼标定手眼标定求解图像预处理图像灰度化与二值化图像滤波图像特征匹配机械臂单目视觉定位目标物体图像深度信息目标物体中心定位参考文献根据机械臂与相机所…

深圳南玻集团(二面)

不得不说这家公司的办事效率是真的高。我昨天下午3点面试的&#xff0c;4点结束。然后4点45分就跟我说面试通过了&#xff0c;叫我明天早上10点进行二面。二面聊了大概20分钟左右吧&#xff0c;那个面试官是信息部的&#xff0c;好像是个总监还是总经理&#xff0c;反正叫沈总。…

详解人证合一API接口背后的身份信息认证

人证合一API接口是一种高级的身份验证解决方案&#xff0c;它将姓名、身份证号码、头像照片等多种生物特征和身份标识信息相结合&#xff0c;通过云端智能分析并与公安部门权威数据库进行实时比对&#xff0c;以确定用户身份的真实性。这个过程不仅仅停留在表面文字信息的匹配&…

基于PyAutoGUI图片定位的自动化截图工具--完成了

1、计划 压测完成后需要编写性能测试报告&#xff0c;报告中所需数据截图较多&#xff0c;使用自动化操作方便快捷&#xff0c;就编写一个界面工具以便后续复用。 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分&#…

jenkins从节点配置说明

目的 打包构建时使用从节点&#xff0c;从节点所在服务器配置4C8G5000G&#xff08;服务器2&#xff09; 前提 首先在服务器1上部署jenkins服务&#xff0c;即主节点&#xff0c;默认节点名称为master 步骤 1&#xff09;登录进入jenkins平台&#xff0c;在系统设置中&…

AJAX 入门到实战 第1天 2024 笔记

1.1-AJAX入门与axios使用 1.2-认识URL 1.3-查询参数 1.4-案例_地区查询 <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script>/*获取地区列表: http://hmajax.itheima.net/api/area查询参数:pname: 省份或直辖市…

基于adb操作安卓手机封装的python库

import re import shlex import subprocessclass ADBClient:def __init__(self, ip, port):"""初始化ADBClient实例。:param ip: 远程设备的IP地址。:param port: 远程设备的端口号。"""self.ip ipself.port portdef is_app_running(self, pac…

李沐53_语言模型——自学笔记

语言模型 1.预测文本序列出现的概率 2.应用在做预训练模型 3.生成文本&#xff0c;给定前面几个词&#xff0c;不断生成后续文本 4.判断多个序列中哪个更常见 真实数据集的统计 《时光机器》数据集构建词表&#xff0c; 并打印前10个最常用的&#xff08;频率最高的&…

1942年苏军反攻哈尔科夫失败

1942年5月&#xff0c;苏军计划夺回哈尔科夫&#xff0c;消灭城内的德国南方集团军群第6集团军。苏军为这次战役投入了西南方面军和南方面军&#xff0c;苏军元帅铁木辛哥制定了作战计划&#xff0c;非常凑巧的是&#xff0c;德军也于大致相同的时间制定了进攻计划。5月12日&am…

C语言 | 动态内存管理

目录&#xff1a; 1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常见的动态内存的错误 5. 动态内存经典笔试题分析 6. 柔性数组 1. 为什么要有动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20; //在栈空间上开辟四个字节 cha…

一篇文章搞定Jenkins自动化部署JDK17+SpringBoot3.X+新版AlibabaCloud打包Docker镜像推送私有镜像仓库

&#x1f680; 作者 &#xff1a;“二当家-小D” &#x1f680; 博主简介&#xff1a;⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人&#xff0c;8年开发架构经验&#xff0c;精通java,擅长分布式高并发架构,自动化压力测试&#xff0c;微服务容器化k…

-内核编译-01

挂载根文件系统 1搭建【nfs】 1.1PC端配置 nfs&#xff1a;网络服务器 【sudo /etc/init.d/nfs-kernel-server restart】 【sudo /etc/init.d/nfs-kernel-server status】 【sudo netstat -anp|less】 1重启【nfs】网络服务方法2&#xff1a;查看日志 修改配置文件 进入…

无线通信基本原理笔记

通信&#xff1a;人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。 通信模型&#xff1a;信源→发送设备→信道&#xff08;↑噪声&#xff09;→接收设备→信宿 调制&#xff1a;把基带信号变换成适合在信道中传输的信号的技术。通过改变高频载波的幅度、相位…

计算机网络基础1--基础概念

1. IP地址 1.1 IPv4地址 分为网络号和主机号 地址块的第一个地址和最后一个地址通常不使用。 广播地址为主机号全取1的情况。 2. 常用报文格式 2.0 ethernet协议 2.1 arp协议 2.2 ip协议 2.3 tcp协议 2.4 udp协议 2.5 icmp协议

LeetCode-2007. 从双倍数组中还原原数组【贪心 数组 哈希表 排序】

LeetCode-2007. 从双倍数组中还原原数组【贪心 数组 哈希表 排序】 题目描述&#xff1a;解题思路一&#xff1a;排序 哈希表解题思路二&#xff1a;排序 队列解题思路三&#xff1a;消消乐 题目描述&#xff1a; 一个整数数组 original 可以转变成一个 双倍 数组 changed &…

2024年150道高频Java面试题(三十二)

63. 线程的 run() 和 start() 有什么区别&#xff1f; 在Java中&#xff0c;run()方法和start()方法是线程操作中的两个核心方法&#xff0c;它们来自于Thread类。 run()方法&#xff1a; run()方法是一个线程的实际执行代码所在的方法。它是一个由Runnable接口定义的抽象方…

java文件夹文件比较工具

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.HashSet; import java.util.Set;public class FolderFileNames {public static void main(String[] args) {// 假设您要读取的文件夹路径是 &q…