sklearn曲折

本文介绍了Python科学计算中常用库的安装顺序:首先安装numpy+mkl,随后是scipy,接着是matplotlib,最后安装sklearn。这些库是进行数据分析和机器学习的基础。
部署运行你感兴趣的模型镜像

所需 依赖库,及其顺序:四个软件的安装顺序是:numpy+mkl      scipy    matplotlib  sklearn

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

分析一下这个结果。这是分析的结果。step1结果 C:\Users\admin\miniconda3\envs\aisenv\python.exe D:\file\ShipTrack\src\step1preprocess.py ============================================================ Step 1: 数据预处理与质量控制 ============================================================ [1/6] 读取数据: D:\file\ShipTrack\data.csv 原始数据: 20831 行, 9 列 列名: ['mmsi', 'acqtime', 'cog', 'latitude', 'longitude', 'speed', 'status', 'truehead', 'mmsi_mark'] [2/6] 标准化列名... 标准化后列名: ['mmsi', 'acqtime', 'cog', 'lat', 'lon', 'speed', 'status', 'truehead', 'mmsi_mark'] [3/6] 解析时间字段... [4/6] 排序数据... [5/6] 基础质量控制... 基础QC过滤: 10704 行 (剩余 10127) [6/6] 计算相邻点特征... 高级QC过滤: 6 行 (剩余 10121) [7/7] 保存清洗数据... ============================================================ 预处理完成! ============================================================ 输出文件: D:\file\ShipTrack\interim\clean_points.parquet 最终数据: 10121 行 涉及船舶段: 42 个 涉及MMSI: 29 个 时间范围: 2024-02-01 00:33:23 至 2024-04-23 05:31:17 保留字段: mmsi acq_time cog lat lon speed status true_head mmsi_mark dt_s step_nm v_calc 进程已结束,退出代码为 0 step2结果 C:\Users\admin\miniconda3\envs\ais_env\python.exe D:\file\ShipTrack\src\step2_features.py ============================================================ Step 2: 特征提取 ============================================================ [1/5] 读取清洗数据: D:\file\ShipTrack\interim\clean_points.parquet 数据: 10121 行, 42 个轨迹段 [2/5] 准备特征计算... [3/5] 按mmsi_mark提取特征... [4/5] 构建特征表... [5/5] 保存特征数据... ============================================================ 特征提取完成! ============================================================ 输出文件: D:\file\ShipTrack\processed\features.parquet 特征数量: 42 行 × 17 列 涉及MMSI: 29 个 特征统计: mean_speed sinuosity turn_rate_mean work_ratio total_dist_nm count 42.000000 42.000000 42.000000 42.000000 42.000000 mean 28.719872 4.016463 13.762820 0.116651 61.607438 std 21.434055 9.245494 27.966457 0.274748 252.409980 min 1.000000 1.000000 0.000000 0.000000 0.000000 25% 8.643411 1.000000 2.650157 0.000000 0.398144 50% 21.852941 1.001454 6.885642 0.000000 8.852564 75% 51.927083 1.455251 13.167742 0.012566 30.790647 max 60.000000 48.238806 175.500000 1.000000 1641.711900 ✓ Step 2 完成,可以运行 Step 3 进程已结束,退出代码为 0 step3结果 C:\Users\admin\miniconda3\envs\ais_env\python.exe D:\file\ShipTrack\src\step3_cluster.py ============================================================ Step 3: 聚类推断行为类型 ============================================================ [1/6] 读取特征数据: D:\file\ShipTrack\processed\features.parquet 特征数据: 42 行 [2/6] 规则识别静止段... 识别静止段: 0 个 (0.0%) [3/6] 对非静止段进行GMM聚类 (n_clusters=3)... 待聚类样本: 42 个 C:\Users\admin\miniconda3\envs\ais_env\lib\site-packages\sklearn\cluster\_kmeans.py:1419: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1. warnings.warn( C:\Users\admin\miniconda3\envs\ais_env\lib\site-packages\sklearn\cluster\_kmeans.py:1419: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1. warnings.warn( C:\Users\admin\miniconda3\envs\ais_env\lib\site-packages\sklearn\cluster\_kmeans.py:1419: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1. warnings.warn( C:\Users\admin\miniconda3\envs\ais_env\lib\site-packages\sklearn\cluster\_kmeans.py:1419: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1. warnings.warn( C:\Users\admin\miniconda3\envs\ais_env\lib\site-packages\sklearn\cluster\_kmeans.py:1419: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1. warnings.warn( C:\Users\admin\miniconda3\envs\ais_env\lib\site-packages\sklearn\cluster\_kmeans.py:1419: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1. warnings.warn( C:\Users\admin\miniconda3\envs\ais_env\lib\site-packages\sklearn\cluster\_kmeans.py:1419: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1. warnings.warn( C:\Users\admin\miniconda3\envs\ais_env\lib\site-packages\sklearn\cluster\_kmeans.py:1419: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1. warnings.warn( C:\Users\admin\miniconda3\envs\ais_env\lib\site-packages\sklearn\cluster\_kmeans.py:1419: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1. warnings.warn( C:\Users\admin\miniconda3\envs\ais_env\lib\site-packages\sklearn\cluster\_kmeans.py:1419: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1. warnings.warn( [4/6] 分析聚类中心... 聚类中心统计: cluster_id count mean_speed sinuosity turn_rate_mean work_ratio 2 5 6.768500 1.283111 45.337353 0.815557 0 7 10.499661 18.494289 8.021113 0.076327 1 30 36.629817 1.093862 9.840129 0.009575 [5/6] 映射为语义标签... Cluster 2 (5 个) -> Inferred_FishingLike Cluster 0 (7 个) -> Inferred_OtherWork Cluster 1 (30 个) -> Inferred_TransportLike [6/6] 保存聚类结果... ============================================================ 聚类推断完成! ============================================================ 输出文件: D:\file\ShipTrack\processed\clustered.parquet 总样本数: 42 行为类型分布: Inferred_TransportLike: 30 (71.4%) Inferred_OtherWork: 7 (16.7%) Inferred_FishingLike: 5 (11.9%) 聚类概率统计: count 42.000000 mean 0.995697 std 0.027805 min 0.819789 25% 1.000000 50% 1.000000 75% 1.000000 max 1.000000 Name: cluster_prob, dtype: float64 ✓ Step 3 完成,可以运行 Step 4 进程已结束,退出代码为 0 step4结果 C:\Users\admin\miniconda3\envs\ais_env\python.exe D:\file\ShipTrack\src\step4_detect.py ============================================================ Step 4: 异常检测 ============================================================ [1/5] 读取聚类数据: D:\file\ShipTrack\processed\clustered.parquet 数据: 42 行, 29 个MMSI [2/5] 检测跨模式语义冲突... 跨类型冲突异常: 0 个 反向跨类型冲突: 1 个 [3/5] 检测同类内部离群 (contamination=0.01)... [4/5] 生成异常报表... [5/5] 保存异常报表... ============================================================ 异常检测完成! ============================================================ 输出文件: D:\file\ShipTrack\results\anomalies.csv 总样本数: 42 异常样本数: 1 (2.38%) 异常类型分布: CrossTypeConflict_Reverse: 1 异常分数统计: count 1.0 mean 1.0 std NaN min 1.0 25% 1.0 50% 1.0 75% 1.0 max 1.0 Name: anomaly_score, dtype: float64 Top 5 异常案例: mmsi mmsi_mark inferred_label anomaly_reason anomaly_score 620992000 53 Inferred_TransportLike CrossTypeConflict_Reverse 1.0 ✓ Step 4 完成,所有处理步骤已完成! 最终异常报表: D:\file\ShipTrack\results\anomalies.csv 进程已结束,退出代码为 0
最新发布
12-25
<think>我们分析一下每个步骤的结果: ### Step1: 数据预处理与质量控制 - 输入:原始数据`data.csv`,20831行,9列 - 处理过程: 1. 标准化列名(重命名) 2. 解析时间字段 3. 排序数据(按时间) 4. 基础质量控制(过滤掉无效数据,从20831行过滤到10127行,再通过计算相邻点特征后进一步过滤6行,剩余10121行) 5. 计算相邻点特征(如时间差、距离差、速度等) - 输出:清洗后的数据`clean_points.parquet`,10121行,涉及29个MMSI(船舶唯一标识),42个轨迹段(即每个MMSI可能有多个轨迹段) - 时间范围:2024-02-01 00:33:23 至 2024-04-23 05:31:17 ### Step2: 特征提取 - 输入:清洗后的数据(10121个点,42个轨迹段) - 处理过程:按每个轨迹段(mmsi_mark)计算特征 - 特征包括:平均速度(mean_speed)、弯曲度(sinuosity)、平均转向率(turn_rate_mean)、工作比(work_ratio)、总距离(total_dist_nm)等 - 输出:特征表`features.parquet`,42行(每个轨迹段一行),17列(特征) - 特征统计信息: - 平均速度:均值28.72节,标准差21.43,最小1节,最大60节(有速度限制?) - 弯曲度:均值4.02,标准差9.25,最小1(直线?),最大48.24(非常弯曲) - 平均转向率:均值13.76度/时间单位,标准差27.97,最小0,最大175.5 - 工作比:均值0.12,标准差0.27,最小0,最大1(工作比是指?) - 总距离:均值61.6海里,标准差252.4,最小0海里,最大1641.7海里(有0海里的轨迹?可能是静止点) ### Step3: 聚类推断行为类型 - 输入:特征数据(42个轨迹段) - 处理过程: 1. 规则识别静止段(这里识别出0个静止段) 2. 使用GMM(高斯混合模型)聚类,设置3个聚类中心 3. 分析聚类中心,并映射为语义标签 - 聚类结果: - Cluster 2 (5个):平均速度6.77节,弯曲度1.28,平均转向率45.34,工作比0.82 -> 推断为“类似捕鱼行为”(FishingLike) - Cluster 0 (7个):平均速度10.5节,弯曲度18.49,平均转向率8.02,工作比0.08 -> 推断为“其他工作”(OtherWork) - Cluster 1 (30个):平均速度36.63节,弯曲度1.09,平均转向率9.84,工作比0.01 -> 推断为“类似运输行为”(TransportLike) - 行为类型分布: - 运输行为:30个(71.4%) - 其他工作:7个(16.7%) - 捕鱼行为:5个(11.9%) - 聚类概率很高(平均0.9957,最小0.8198),说明聚类效果较好。 ### Step4: 异常检测 - 输入:聚类后的数据(42个轨迹段) - 处理过程: 1. 检测跨模式语义冲突(例如,同一艘船在同一时间段有两种矛盾的行为类型)-> 发现0个冲突 2. 检测反向跨类型冲突(例如,本应运输却出现捕鱼行为)-> 发现1个 3. 同类内部离群点检测(使用contamination=0.01,即预期异常比例为1%)-> 没有报告具体数量,但最后异常样本总数为1 - 输出:异常报表`anomalies.csv` - 异常情况: - 总样本42个,异常样本1个(2.38%) - 异常类型:CrossTypeConflict_Reverse(反向跨类型冲突)1个 - 具体案例:mmsi=620992000,轨迹段标记53,推断为运输行为,但被标记为反向跨类型冲突。 ### 总结 整个流程从原始数据开始,经过清洗、特征提取、聚类和异常检测,最终发现了一个异常轨迹段。该异常轨迹段被推断为运输行为,但存在反向跨类型冲突(具体冲突定义需看代码逻辑,可能是根据船舶的通常行为模式判断,比如该船其他轨迹段都是捕鱼行为,而这段是运输行为,或者根据船舶类型信息)。 ### 建议 1. 对于异常案例,需要结合具体业务知识分析:该船(mmsi=620992000)通常是什么类型?这段异常轨迹段的具体特征(速度、路径)是否真的符合运输行为?还是聚类错误? 2. 特征工程:工作比(work_ratio)的定义是什么?在聚类结果中,捕鱼行为的工作比很高(0.82),而运输行为的工作比很低(0.01),这个特征在区分行为类型时起到了关键作用。 3. 聚类数量:设定为3类,从结果看有较好的区分度。但可以考虑使用一些评估指标(如轮廓系数)来评估聚类效果。 §§相关问题§§: 1. 在轨迹数据处理中,常用的特征有哪些? 2. 高斯混合模型(GMM)与K-Means聚类有何区别? 3. 在异常检测中,如何定义“跨模式语义冲突”和“反向跨类型冲突”? 4. 如何根据业务需求调整聚类数量? </think> ### 结果分析 #### Step1: 数据预处理与质量控制 1. **输入数据**: - 原始数据: 20831行, 9列 - 列名标准化: 将latitude→lat, longitude→lon, acq_time→t 2. **清洗过程**: - 时间解析: 将acqtime转换为datetime对象 - 排序: 按时间排序 - 质量控制: - 基础QC过滤掉10704行(51.4%) - 高级QC(相邻点特征计算)过滤掉6行 3. **输出**: - 有效数据: 10121行(保留率48.6%) - 涉及29个MMSI(船舶ID)和42个轨迹段 - 时间范围: 2024-02-01至2024-04-23 #### Step2: 特征提取 1. **特征计算**: - 基于42个轨迹段计算17个特征 - 核心特征: - 平均速度(mean_speed): 28.72±21.43节 - 弯曲度(sinuosity): 4.02±9.25(路径弯曲程度) - 平均转向率(turn_rate_mean): 13.76±27.97度/单位时间 - 工作比(work_ratio): 0.12±0.27(有效运动比例) - 总距离(total_dist_nm): 61.61±252.41海里 2. **数据分布特点**: - 速度分布广泛(1-60节) - 弯曲度差异大(1-48),表明部分轨迹非常曲折 - 工作比多为0(25%和50%分位都是0),说明多数轨迹无效运动多 #### Step3: 聚类分析 1. **聚类结果**: ```python # 聚类中心统计 cluster_id count mean_speed sinuosity turn_rate_mean work_ratio 2 5 6.7685 1.28311 45.337353 0.815557 0 7 10.4997 18.49429 8.021113 0.076327 1 30 36.6298 1.09386 9.840129 0.009575 ``` 2. **行为类型映射**: - Cluster 2 (5段): 低速(6.8节)、高转向率(45°)、高工作比(0.82) → **捕鱼行为** - Cluster 0 (7段): 中速(10.5节)、高弯曲度(18.5)、低工作比(0.08) → **其他作业** - Cluster 1 (30段): 高速(36.6节)、低弯曲度(1.09)、低工作比(0.01) → **运输行为** 3. **分布比例**: - 运输行为: 71.4% - 其他作业: 16.7% - 捕鱼行为: 11.9% #### Step4: 异常检测 1. **异常类型**: - 跨类型冲突: 0例 - **反向跨类型冲突: 1例** (MMSI: 620992000) 2. **异常特征**: - 被分类为运输行为但具有反向冲突特征 - 异常分数: 1.0 (最高异常级别) 3. **整体异常率**: 2.38% ### 关键发现与建议 1. **数据质量**: - 原始数据51.4%被过滤,建议检查过滤规则合理性 - 工作比中位数为0,表明大量无效运动数据 2. **行为模式**: - 运输行为占主导(71.4%),符合商业航道特征 - 捕鱼行为特征鲜明:低速、高转向率、高工作比 3. **异常案例**: - MMSI 620992000被标记为异常运输行为 - **建议核查**: - 该船是否实际进行运输作业 - 轨迹数据是否包含定位错误 - 是否存在AIS设备欺骗行为 4. **聚类警告**: - KMeans内存泄漏警告(Windows/MKL环境) - **解决方案**: ```python import os os.environ["OMP_NUM_THREADS"] = "1" # 在导入sklearn前设置 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值