大 作 业 报 告
课程名称 机器学习B 成绩
班级 信2205-3 姓名 邓睿智 学号 20223753
|
名称:混凝土承重等级预测
一、任务背景
在土木工程中,混凝土是构筑建筑物最基本的材料。混凝土可承受的强度与其寿命、制造所使用的材料、测试时的温度等因素息息相关。混凝土的制造过程十分复杂,涉及水泥、熔炉产出的煤渣和灰烬、水、强度塑化剂、粗聚合剂、细聚合剂等多种化工原料。我们用一个压力达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.89
|
查准率
|
0.96
|
查全率
|
0.93
|
F1值
|
0.92
|
|
详细方案和结果分析
|
|
解决方案
|
【包括预测分析的设计思路的具体实现过程或实现步骤】
1. 数据准备
- 将excel表格中的数据进行转换,为其中数据加入列名
- 导入数据:使用 pandas 导入数据,打印其前几行数据以检查数据是否正确加载。
2. 数据离散化
- 定义离散化函数:创建一个函数,将混凝土抗压强度转换成离散分类。这对后续类别预测非常重要,因为我们将强度分为五个类别(低、中低、中等、中高、高)。
- 应用函数:对于“Concrete compressive strength”列,使用这个函数为数据集添加一个新的类别列。
3. 数据探索
- 统计信息:通过 describe() 函数获取数据的描述性统计信息,以快速了解数据的分布和特征。
- 可视化特征关系:使用 seaborn 的 pairplot 绘制特征之间的关系矩阵,以直观了解各特征间的相关性。
4. 特征选择与数据集划分
- 特征与目标变量划分:将数据集分为特征(X)和目标变量(y),并去掉不需要的列。
- 数据集划分:使用 train_test_split 将数据集分为训练集(80%)和测试集(20%),确保模型能够进行有效的训练与评估。
5. 模型训练
- 选择模型:使用随机森林分类器 RandomForestClassifier,其具有处理非线性关系和高维数据的能力。
- 训练模型:在训练集上拟合随机森林模型。
6. 超参数调优
- 定义超参数网格:设置需要调优的超参数,如树的数量、最大深度和分裂所需的最小样本数。
- 交叉验证:使用 GridSearchCV 进行超参数调优,选择最佳参数,以提高模型性能。
最佳超参数展示:
7. 预测
8. 评估模型性能
- 混淆矩阵:绘制混淆矩阵,以直观观察模型预测结果的准确性。
- 分类报告:使用 classification_report 输出包括精确率、召回率和 F1 分数等指标的详细报告。
9. 计算并输出各类别指标
- 计算各类别的指标:使用精确率、召回率和 F1 分数对每个类别的模型性能进行评估,并逐个输出结果。
10. 可视化各类别指标
- 绘制条形图:通过条形图对各类别的精确率、召回率和 F1 分数进行可视化,以便于直观理解模型在不同类别上的表现。
|
|
结果展示
|
【包括每个任务点结果的展示】
- 根据样本的承重强度对样本标签进行离散化处理,将连续承重强度转换为离散承重等级。至少给出3种输出指标离散化的方案,并阐述理由。在后续任务中分别进行模型训练,并在结果展示4、5和结果分析中,从精度,查准率,查全率,FI值等多个角度进行分析,最终选出预测结果最好的离散化方式。
- 返回前五条数据结果(结果截图,并标明图1. 数据展示),并对数据集中的概要信息进行描述。
图1.
数据描述:
1. 水泥(Cement)
- 范围:198.6 kg 到 540.0 kg
- 水泥的用量变化较大,其中540 kg是数据集中的最大值。水泥用量的高低与混凝土的抗压强度密切相关。
2. 高炉矿渣(Blast Furnace Slag)
- 范围:0.0 kg 到 142.5 kg
- 数据集中有一部分样本使用了高炉矿渣作为替代材料,但大部分数据样本未使用高炉矿渣。
3. 粉煤灰(Fly Ash)
- 范围:0.0 kg
- 数据集中的所有样本均未使用粉煤灰。
4. 水
- 范围:162.0 kg 到 228.0 kg
- 水的用量大致保持在这一范围内,水的用量直接影响混凝土的工作性和抗压强度。
5. 减水剂(Superplasticizer)
- 范围:0.0 kg 到 2.5 kg
- 减水剂的用量较少,最多为2.5 kg,主要用于改善混凝土的流动性并降低水胶比。
6. 粗骨料(Coarse Aggregate)
- 范围:932.0 kg 到 1055.0 kg
- 粗骨料的用量变化较大,通常在932.0 kg到1055.0 kg之间。粗骨料的量对混凝土的强度和密实性有重要影响。
7. 细骨料(Fine Aggregate)
- 范围:594.0 kg 到 825.5 kg
- 细骨料的用量变化范围为594.0 kg到825.5 kg,通常以沙子为主,影响混凝土的密实度和稳定性。
8. 龄期(Age)
- 范围:28天 到 365天
- 混凝土的龄期从28天至365天不等,龄期越长,混凝土的抗压强度通常越高。数据集中还包括了90天、270天和360天等不同的龄期。
9. 混凝土抗压强度(Concrete Compressive Strength)
- 范围:28.02 MPa 到 79.99 MPa
- 混凝土抗压强度的范围为28.02 MPa到79.99 MPa,抗压强度受水泥、骨料、水等因素的影响,且随着龄期的增加通常会提高。
- 数据可视化结果(标明图2. 数据可视化)
图2.
- 混淆矩阵展示(标明图3. 分类混淆矩阵)
图3.
- 精度,查准率,查全率,FI值的结果截图(标明图4. 分类结果)
图4.
|
|
结果分析
|
【包括预测结果分析(包括对超参影响、精度、查准率、查全率、F1值的分析)、可能存在的问题、可提升的改进思路等】
在本实验中,使用随机森林分类器对混凝土抗压强度数据进行分类,目标是将混凝土抗压强度划分为五个不同的类别(低强度、中低强度、中等强度、中高强度、高强度)。通过模型训练和评估,得出以下总体分析:
- 模型在极端类别的表现较好:对于低强度和高强度类别(类别1和类别5),模型表现较为优秀。精确率和召回率较高,说明模型在这些类别上的预测较为准确,能够有效区分低强度和高强度的混凝土。
- 中等强度类别表现一般:对于中等强度类别(类别3),模型的精确率和召回率均较低,导致F1分数偏低。这可能是因为中等强度类别在数据中的特征与其他类别较为接近,模型难以有效区分。
- 中高强度类别预测不理想:对于中高强度类别(类别4),召回率特别低,表明模型漏判了大量属于该类别的样本,精确率相对较高但并未能有效覆盖所有应归类的样本,导致模型在这一类别的性能较差。
- 数据平衡和特征可能影响性能:如果数据集存在类别不均衡或中间类别的边界模糊,模型的分类性能可能会受到影响。缺乏足够区分度的特征或者类别本身的重叠也可能导致较低的性能。
总结
整体来看,随机森林模型在低强度和高强度类别的预测上表现较好,但在中等强度和中高强度类别上的表现较差。为了进一步提升模型的准确性,可能需要进行数据平衡、特征优化和模型改进等操作。
|
|