1.2日报

完成机器学习大作业报告,以下为实验内容:

课程名称  机器学习B                 成绩            

班级2205-3               姓名李健龙              学号 20223768           

名称:混凝土承重等级预测

一、任务背景

在土木工程中,混凝土是构筑建筑物最基本的材料。混凝土可承受的强度与其寿命、制造所使用的材料、测试时的温度等因素息息相关。混凝土的制造过程十分复杂,涉及水泥、熔炉产出的煤渣和灰烬、水、强度塑化剂、粗聚合剂、细聚合剂等多种化工原料。我们用一个压力达2000kN的液压测试机采集混凝土承重能力的指标,对混凝土方块或圆柱体进行压力测试。这个测试是破坏性的,并且可能会持续很长时间,因此如果我们能够脱离实际测试,直接使用制作原料对其承重能力进行预测,则将具备非常高的商业价值。图1 显示了一次承重能力测试。在本次研究中,我们希望能够建立出一个以混凝土制作配方为输入数据,能够预测其承重能力的模型。
   
   
    
    
    
    
    
    
    
    
    
    
    
    
   
   
   
  
   
  
图 1  承重能力测试

二、任务数据

为了通过混凝土配方预测其成品的承重强度,我们向数据集中采集了大量的样本数据。每个样本都包含8个特征值作为输入数据,其输出值就是指标承重强度。
本数据集包含了如下指标(按照数据集中特征值的顺序进行排列),其中输入指标包括以下内容。
(1)Cement 单位:kg /m3。
(2)Blast Furnace Slag 单位:kg /m3。
(3)Fly Ash 单位:kg /m3。
(4)Water 单位:kg /m3。
(5)Superplasticizer 单位:kg /m3。
(6)Coarse Aggregate 单位:kg /m3。
(7)Fine Aggregate 单位:kg /m3。
(8)Age 单位:kg /m3。
输出指标包括Concrete compressive strength 单位:MPa。
每个样本有8个混凝土原料配方作为输入特征值(前8 列)及1个目标值(最后一列,承重强度)

三、任描述务

1.根据样本的承重强度对样本标签进行离散化处理,将连续承重强度转换为离散承重等级,然后实现分类任务。输出指标离散化需要考虑两方面因素:一是调研文献,分析各等级混凝土承重强度;二是不同的承重等级数目情况下,模型的预测效果,对比选出预测结果最好的离散化方式。(20分)
2.导入数据集,返回当前数据的统计信息并进行阐述说明,以前6行为例进行结果展示。(10分)
3. 对混凝土数据集进行可视化处理,生成各特征之间关系的矩阵图。(10分)
4. 数据预处理,并将原始数据集划分为训练集和测试集,选用合适的机器学习算法对混凝土数据集进行拟合。(20分)
5. 采用交叉验证,估计超参数,分析超参数对预测结果的影响。(20分)
6. 预测结果分析及可视化,绘制混淆矩阵,分析不同承重等级混凝土的查全率和查准率。(20分)

四、结果及分析

简明结果
精度
0.8058
查准率
 0.7831
查全率
0.7824
F1值
0.7742
详细方案和结果分析
解决方案
【包括预测分析的设计思路的具体实现过程或实现步骤】
离散化方法选择: 在本实验中,目标是根据混凝土的承重强度(即变量 y)对样本标签进行离散化处理,转换为不同的承重强度等级。这些离散化的方案包括:
 
等宽离散化 (Uniform Discretization):将所有样本的承重强度值分为相等的区间,适用于数据分布较均匀的情况,便于理解和实现。
等频离散化 (Quantile Discretization):将样本按承重强度值的分布进行划分,使得每个区间内的样本数量大致相等,适用于数据分布不均匀的情况,可以避免部分区间样本过少或过多的问题。
手动离散化 (Manual Discretization):根据领域知识或常见的承重强度分布,人工设定承重强度的区间划分。这种方法依赖于专家经验,能够更加贴合实际应用场景。
模型训练: 在离散化标签的基础上,我们使用 随机森林分类器 (RandomForestClassifier) 作为模型进行训练,并采用交叉验证 (GridSearchCV) 选择最优的超参数(如树的数量、树的深度等)。训练过程中分别使用了三种不同的离散化方法:y_discrete_uniform、y_discrete_quantile 和 y_discrete_manual,并对每个模型的性能进行了评估。
 
评估指标: 模型评估使用了以下常见的分类指标:
 
精度 (Accuracy):模型预测正确的比例。
查准率 (Precision):模型预测为正类的样本中,实际为正类的比例。
查全率 (Recall):实际为正类的样本中,模型预测为正类的比例。
F1值 (F1 Score):查准率和查全率的调和平均值,综合考虑了模型的精度和召回能力。
结果分析:
 
等宽离散化 (Uniform Discretization) 的结果显示,模型的精度为 0.8058,查准率为 0.7831,查全率为 0.7824,F1值为 0.7742。从这些指标来看,等宽离散化 方案表现较好,尤其是在查准率和查全率方面相对平衡。
 
在后续的分析中,我们也可以通过 混淆矩阵 展示不同离散化方案下的分类结果,以便更直观地了解模型在各个类别上的表现。
 
 
 
 
 
 
 
 
结果展示
【包括每个任务点结果的展示】
1.    根据样本的承重强度对样本标签进行离散化处理,将连续承重强度转换为离散承重等级。至少给出3种输出指标离散化的方案,并阐述理由。在后续任务中分别进行模型训练,并在结果展示4、5和结果分析中,从精度,查准率,查全率,FI值等多个角度进行分析,最终选出预测结果最好的离散化方式。
根据样本的承重强度对样本标签进行离散化处理,将连续承重强度转换为离散承重等级
我们首先需要将连续的承重强度(即目标变量 y)转换为离散的承重等级。离散化的目的是将连续的承重强度值映射到有限的类别标签中,以便应用分类模型进行预测。
 
离散化方案一:等宽离散化 (Uniform Discretization)
方法概述: 将承重强度的取值范围分成 n 个相等的区间,每个区间包含相同的数值范围。这种方法适用于承重强度分布较均匀的情况。
 
理由: 等宽离散化方法非常简单,不需要考虑数据的分布,适合用于初步处理没有明确分布特征的数据。在某些情况下,这种离散化可以帮助模型捕捉到简单的规律。
 
实现: 我们使用 KBinsDiscretizer 类中的 strategy='uniform' 参数,将承重强度分成 5 个等级。
 
离散化方案二:等频离散化 (Quantile Discretization)
方法概述: 将承重强度的样本数据根据其分布分成 n 个区间,使得每个区间中的样本数目相等。这种方法适用于数据分布不均匀的情况,能够有效避免某些区间的样本数过少或过多。
 
理由: 该方法考虑了数据的分布特性,能够保证每个类别具有大致相同数量的样本,因此对于类别不均衡的数据集来说,通常效果更好,避免了模型对稀有类别的忽视。
 
实现: 通过 KBinsDiscretizer 类中的 strategy='quantile' 参数实现等频离散化。
 
离散化方案三:手动离散化 (Manual Discretization)
方法概述: 根据领域知识或数据分析,手动设置承重强度的分界点,将其分为多个区间。例如,承重强度的自然分布可以根据行业标准进行设定,从而为模型提供有意义的类别。
 
理由: 通过专家经验和领域知识对数据进行定制化处理,通常能达到最符合实际的效果。不同的承重强度等级(如高强度、中强度、低强度)可以根据常见标准或行业要求设置区间,有助于提升模型的实际应用效果。
 
实现: 使用 pandas.cut() 方法,设定自定义的区间。例如将承重强度按 0-20, 20-40, 40-60 等划分为 5 个等级。
 
2.    返回前六条数据结果(结果截图,并标明图1. 数据展示),并对数据集中的概要信息进行描述。
     
    
 
3.    数据可视化结果(标明图2. 数据可视化)
     
    
 
4.    混淆矩阵展示(标明图3. 分类混淆矩阵)
     
    
 
5.    精度,查准率,查全率,FI值的结果截图(标明图4. 分类结果)
     
    
 
结果分析
【包括预测结果分析(包括对超参影响、精度、查准率、查全率、F1值的分析)、可能存在的问题、可提升的改进思路等】
超参数的影响: 在模型训练过程中,通过超参数调优(如 n_estimators, max_depth, min_samples_split)可以进一步提高模型的性能。通过交叉验证,选择了最优的超参数设置,从而确保了模型的最佳表现。
精度与查准率、查全率: 从本实验的评估结果来看,等宽离散化 在精度、查准率和查全率上都表现较好。尤其是查准率和查全率接近,说明模型在各个类别之间的预测能力较为平衡。
可能的问题与改进:
由于数据本身的分布可能存在一定的偏差,某些类别的样本较少,导致模型在某些类别的召回率较低。可以尝试使用不同的模型(如 XGBoost, SVM 等)或进行采样技术(如过采样或欠采样)来解决。
在手动离散化方案中,可能会因为人工设定的区间划分不够合理,导致模型性能有所下降。建议在实际应用中,结合更多的领域知识与数据分析进行优化。
 
 
 
 
 
 
 
                 

 

posted @   Code13  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示