首页 > 其他分享 >混凝土承重等级预测

混凝土承重等级预测

时间:2024-12-26 15:11:00浏览次数:2  
标签:分箱 强度 离散 承重 混凝土 数据 模型 等级

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

一、任务背景

在土木工程中,混凝土是构筑建筑物最基本的材料。混凝土可承受的强度与其寿命、制造所使用的材料、测试时的温度等因素息息相关。混凝土的制造过程十分复杂,涉及水泥、熔炉产出的煤渣和灰烬、水、强度塑化剂、粗聚合剂、细聚合剂等多种化工原料。我们用一个压力达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.9369

查准率

0.9386

查全率

0.9369

F1值

0.9373

详细方案和结果分析

解决方案

预测分析的设计思路:

数据加载 -> 数据预处理 -> 离散化方案设计 -> 特征选择 -> 数据标准化

            ↓

  离散化结果对比 (qcut, 等距分箱, 自定义分箱)

            ↓

   随机森林模型训练 -> 测试集评估 -> 指标对比

            ↓

   选定最优离散化方式并总结优化

 

数据加载:

从原始数据文件中加载混凝土承重强度相关的数据集,确保数据能够正确读取。针对每个变量进行初步检查,包括数据类型、分布特点、是否存在缺失值或异常值。

 

数据预处理:

在数据加载完成后,清洗数据并对目标变量(承重强度)进行离散化处理。同时,对特征变量进行筛选和处理,剔除与承重强度无关的变量,保留对预测承重强度有影响的变量,为后续分析提供干净、规范的数据集。

 

离散化方案设计:

根据目标变量(承重强度)的分布情况和业务需求,设计三种不同的离散化方案:

 

qcut 等频分箱:按照样本数量等分,使每个类别中的样本数大致相等,适合数据分布不均匀的情况。

等距分箱:根据承重强度值范围的最小值和最大值,均匀划分为若干个区间,适合数据分布较均匀的情况。

自定义分箱:基于实际业务需求或领域知识设定阈值,例如根据行业标准手动划分低、中、高强度。

特征选择与数据标准化:

从数据集中选出有价值的特征作为模型输入,将其转化为统一的数值表示。接着对特征进行标准化(如 Z-score 标准化),确保不同特征的量纲一致,避免特征间的尺度差异对模型训练造成干扰。

 

离散化结果对比:

针对每种离散化方式,分别对数据集进行划分(如训练集和测试集),并在相同条件下进行模型训练和测试。通过评价指标(如精度、查准率、查全率、F1 值等)对不同离散化方式的结果进行全面比较。

 

模型训练与评估:

采用随机森林分类器对不同离散化方式生成的数据集进行模型训练,通过测试集评估模型性能。生成混淆矩阵、分类报告,并记录各项指标的得分。

 

选定最优离散化方式并总结优化:

根据评价指标(特别是 F1 值)选出预测性能最好的离散化方式,作为最终推荐方案。总结分析最优方案的优点和适用场景,同时提供优化建议,如是否可以尝试其他特征工程、模型调参或更高级的模型。

实现步骤:

1. 离散化承重强度

将连续的承重强度(Concrete compressive strength)离散化为不同的承重等级。可以通过以下步骤来完成:

调研文献:根据工程标准或文献资料,确定不同承重强度对应的等级区间。比如,承重强度在20-30 MPa的为等级1,30-40 MPa为等级2,依此类推。

离散化方法:可以使用固定的区间或基于统计分析(如均值、标准差等)将承重强度划分为多个等级。例如,利用pandas.cut()函数进行区间划分。

 

2. 导入数据集并返回统计信息

可以使用pandas加载数据并查看统计信息,示例如下:

import pandas as pd

# 加载数据

data = pd.read_csv('concrete_data.csv')

# 输出前6行

print(data.head())

# 统计描述

print(data.describe())

data.describe()会输出每一列的统计信息,包括均值、标准差、最大最小值等,可以帮助我们理解数据的分布。

3. 数据可视化

使用seaborn或matplotlib生成特征关系的矩阵图。可以使用pairplot()来显示特征之间的关系,或heatmap()来显示特征之间的相关性:

import seaborn as sns

import matplotlib.pyplot as plt

# 相关性矩阵

corr_matrix = data.corr()

# 可视化

sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')

plt.show()

# 特征关系矩阵

sns.pairplot(data)

plt.show()

4. 数据预处理

处理缺失值:若数据集有缺失值,可以使用均值、中位数等填充方法进行处理,或者删除含有缺失值的样本。

标准化:由于不同特征的量纲不同,进行数据标准化(如Z-score标准化)会有助于模型的训练。

划分训练集和测试集:使用train_test_split进行数据集划分:

from sklearn.model_selection import train_test_split

 

# 划分数据集,80%训练,20%测试

X = data.drop('Concrete compressive strength', axis=1)

y = data['Concrete compressive strength']

 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

5. 选用机器学习算法进行拟合

使用随机森林进行分类:

from sklearn.ensemble import RandomForestClassifier

from sklearn.metrics import classification_report

 

# 初始化模型

model = RandomForestClassifier()

 

# 训练模型

model.fit(X_train, y_train)

 

# 预测

y_pred = model.predict(X_test)

 

# 输出评估报告

print(classification_report(y_test, y_pred))

6. 交叉验证和超参数调优

使用GridSearchCV进行超参数调优,并进行交叉验证:

from sklearn.model_selection import GridSearchCV

 

# 超参数范围

param_grid = {'n_estimators': [100, 200], 'max_depth': [10, 20, None]}

 

# 网格搜索

grid_search = GridSearchCV(estimator=RandomForestClassifier(), param_grid=param_grid, cv=5)

grid_search.fit(X_train, y_train)

 

# 输出最优超参数

print(grid_search.best_params_)

 

# 使用最优参数进行预测

best_model = grid_search.best_estimator_

y_pred_best = best_model.predict(X_test)

 

# 输出评估报告

print(classification_report(y_test, y_pred_best))

7. 预测结果分析及可视化

可以使用confusion_matrix来可视化混淆矩阵,分析不同承重等级的查准率(Precision)、查全率(Recall)和F1值:

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

 

# 混淆矩阵

cm = confusion_matrix(y_test, y_pred_best)

disp = ConfusionMatrixDisplay(confusion_matrix=cm)

disp.plot(cmap='Blues')

plt.show()

 

结果展示

【包括每个任务点结果的展示】

  1. 根据样本的承重强度对样本标签进行离散化处理,将连续承重强度转换为离散承重等级。至少给出3种输出指标离散化的方案,并阐述理由。在后续任务中分别进行模型训练,并在结果展示4、5和结果分析中,从精度,查准率,查全率,FI值等多个角度进行分析,最终选出预测结果最好的离散化方式。

1.1 qcut 离散化法(等频分箱)

方法:使用 pandas.qcut 函数将承重强度的值按照其分布分为多个区间,使得每个区间内的样本数量大致相同。

理由:这种方法适用于样本数据的分布不均匀的情况,因为它保证了每个等级中有相同数量的数据点,因此能确保每个类别的样本量较为均衡,有助于模型训练的稳定性。

1.2 等距分箱法

方法:将承重强度的值按区间均分为若干段,通常依据最小值、最大值来确定每个区间的边界,按照承重强度的最小值和最大值进行分割。

理由:这种方法对于数据分布较为均匀的情况非常适用。通过等距分箱,模型可以基于强度范围内的不同数据区间做出判断,避免过多依赖数据的具体分布情况。

1.3 自定义阈值分箱法

方法:根据实际业务需求或领域知识,设定合适的阈值(例如15, 30等),手动将承重强度分为低、中、高等级。

理由:这种方法非常适合有明确业务标准或领域专家提供的阈值时。例如,如果对材料的承重标准已有明确界定,通过手动设定阈值可以使模型的分类更符合实际需求。

最后结论最好的是qcut

 

 

 

 

  1. 返回前六条数据结果(结果截图,并标明图1. 数据展示),并对数据集中的概要信息进行描述。

 

 

              图1

  1. 数据可视化结果(标明图2. 数据可视化)

                  图2

  1. 混淆矩阵展示(标明图3. 分类混淆矩阵)

 

图3

  1. 精度,查准率,查全率,FI值的结果截图(标明图4. 分类结果)

 

  

           图4

结果分析

预测结果分析 

1.超参数对模型的影响:

 

1.1树的数量(n_estimators):更多的树能提高模型的稳定性,但计算量会增加。

1.2树的深度(max_depth):适当的深度能提升模型表现,避免过拟合。

1.3分裂最小样本数(min_samples_split):较大的值能减少过拟合,提高泛化能力。

 

2.离散化方案对模型表现的影响:

 

2.1qcut 离散化法:通过等频分箱方法划分数据,保证每个类别的样本数量相同,精度和 F1 值适中。

2.2等距分箱法:按相等的区间划分数据,适用于分布均匀的情况,表现较好,精度和 F1 值较高。

2.3自定义分箱法:根据领域知识设定阈值,适合有明确标准的任务,表现最优,但结果可能过于依赖设定的阈值。

 

3.总体表现:

 

自定义分箱表现最好,但需要注意其可能不适应其他数据集。等距分箱适用于大部分任务,且表现稳健。

 


 

可能存在的问题:

1.离散化方式的局限性:
qcut 和等距分箱可能不完全适合某些数据分布,而自定义分箱可能过于依赖人工设定的阈值。

 

2.样本不平衡问题:
尽管使用了离散化,但某些类别的样本数量仍可能偏少,影响模型表现。

 

 

3.特征选择不够深入:
可能存在一些无关或低贡献的特征未被剔除,影响模型的效率和性能。

 

 


 

可提升的改进思路:

1.改进离散化方法:
可以使用机器学习方法(如聚类)来代替传统的分箱方法。

2.增强特征工程:
对特征进行更深入的分析,剔除无关特征,或创建新的有用特征。

3.尝试其他模型:
除了随机森林,还可以尝试 XGBoost、支持向量机等算法进行对比。

4.处理样本不平衡问题:
可以通过 SMOTE 等方法增加少数类别样本,或者调整类别权重。

5.优化超参数:
通过更多的调优方法,进一步提高模型的准确度和泛化能力。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:分箱,强度,离散,承重,混凝土,数据,模型,等级
From: https://www.cnblogs.com/aixin52129211/p/18632873

相关文章

  • 混凝土代码
    importpandasaspdimportnumpyasnpfromsklearn.model_selectionimporttrain_test_split,cross_val_score,GridSearchCVfromsklearn.preprocessingimportStandardScaler,LabelEncoderfromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsi......
  • 全国计算机等级考试(NCRE)考试资料
    全国计算机等级考试(NCRE)一级全解析全国计算机等级考试(NCRE)是经原国家教育委员会(现教育部)批准,由教育部教育考试院(原教育部考试中心)主办,面向社会,用于考查应试人员计算机应用知识与技能的全国性计算机水平考试体系。其中,一级考试作为该体系的基础级别,有着重要地位与广泛影响力。......
  • 就是这个样的粗爆,手搓一个计算器:年龄等级计算器
    线上运行,可以直接打开:年龄等级计算器(在线计算器)​    作为程序员,没有合适的工具,就得手搓一个,PC端,移动端均可适用。废话不多说,直接上代码。HTML:<divclass="calculator"><divclass="input-group"><labelfor="age">年龄:</label><inputid="age"min=&......
  • 题解:P11389 [COCI 2024/2025 #1] 等级 / Hijerarhija
    思路因为一棵树的本质是一个图,所以我们可以认为入度为\(0\)的节点就是这个树的根。所以我们统计有几个根,以及是已经作为根的。最后去统计有多少个根就行了。存储父子关系可以用unordered_map。代码#include<iostream>#include<cstdio>#include<cstring>#include<algori......
  • R:分类学等级解析与标准化脚本
    rm(list=ls())setwd("C:\\Users\\Administrator\\Desktop\\machinelearning\\Network")#设置工作目录library(dplyr)library(tidyr)library(readr)#读取文件data<-readLines('1.txt')#定义分类等级的前缀和列名prefixes<-c("k__"......
  • 使用PyTorch框架来训练语义分割模型——航空影像输电线路与输电塔分割数据集,使用U-Net
    航空影像的输电线路与输电塔分割数据集。该数据集包含1234张图像,超高分辨率(约3840×2160)标注了11447个对象,属于5个不同的类别,包括电缆(cable)、铁塔(tower_lattice)、木塔(tower_wooden)以及其他两种类型:混凝土或钢结构混合塔(tower_tucohy)和空白肉眼不可见线缆(void),共3GB好的......
  • 真题练习25-Word字处理-全国计算机等级考试二级MS Office高级应用与设计考试【汪老师
    视频讲解真题练习25-Word字处理_哔哩哔哩_bilibili题库下载全国计算机等级考试题库下载(用电脑下载安装):请点击题目要求在某学校任教的林涵需要对一篇Word格式的科普文章进行排版,按照如下要求,帮助她完成相关工作。1.打开考生文件夹下的素材文件Word.docx(“.docx”为文件扩展......
  • 人员乘坐皮带识别智慧矿山一体机皮带运行状态识别:安防摄像机外壳防护等级介绍
    在安防领域,摄像机的外壳防护是确保设备可靠性和耐用性的关键因素。一个高质量的防护外壳可以保护摄像机免受水、尘、冲击等环境因素的损害,从而延长设备的使用寿命并确保监控系统的稳定性。本文将详细介绍安防摄像机外壳的防护等级,包括防水防尘和防爆等方面,以及这些防护等级是如何......
  • 说说你对这几个概念的理解:层叠上下文、层叠等级、层叠顺序
    在前端开发中,层叠上下文(StackingContext)、层叠等级(StackingLevel)和层叠顺序(StackingOrder)是控制元素在Z轴上排列顺序的关键概念。它们决定了哪些元素会覆盖其他元素,对于创建复杂的布局和视觉效果至关重要。1.层叠上下文(StackingContext):可以理解为一个三维......
  • 拥抱现代化信息技术:揭秘开工快线商砼ERP自动化生产管理系统在预拌混凝土生产管理中的
     预拌混凝土生产管理的难点主要包括原材料质量控制、生产调度、物流配送、成本控制、客户服务等方面。利用现代化信息技术,特别是如惠邦科技的开工快线商砼自动化生产管理系统这样的专业软件,可以有效地解决这些难点。以下是如何利用现代化信息技术进行改进的分析:1.原材料质......