12.24

news/2024/12/31 5:02:48/文章来源:https://www.cnblogs.com/zzqq1314/p/18638664

 

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

一、实验背景

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

三、实验任务

1.导入数据集,并采用.head()读取前6条数据,采用.info()返回当前数据的信息(10)

通过粗略观察,我们可以看到数据集的大小是1030×9,即其中包含了1030个样本和9个变量(9 列)。每个样本有8个混凝土原料配方作为输入特征值(前8 列)及1个目标值(最后一列,承重能力)。

2. 对混凝土数据集进行可视化处理,生成各特征之间关系的矩阵图seaborn工具的pairplot ()方法进行绘图(10)

3. 数据预处理,并将原始数据集划分为训练集和测试集,选用合适的机器学习算法对混凝土数据集进行拟合。(20)

4. 采用交叉验证估计超参数,分析超参数对预测结果的影响(30)

5. 预测结果分析及可视化,绘制混淆矩阵,分析不同承重等级混凝土的查全率查准率(30)

四、实验结果及分析

简明结果

精度

0.616504854368932

查准率

0.6178653925078001

查全率

0.616504854368932

F1

0.6131203492470739

详细方案和结果分析

解决方案

设计思路

1数据探索:初步了解数据集的结构和特征,检查数据的完整性和分布。

2数据预处理:对数据进行标准化处理,以消除不同量纲的影响。

3特征选择:分析各特征与目标变量的相关性,选择对预测结果影响较大的特征。

4模型选择:根据目标变量的性质(分类或回归),选择合适的机器学习模型。

5模型训练与评估:训练模型并使用交叉验证评估模型的泛化能力。

6结果分析:分析模型的预测结果,评估模型性能。

实现步骤

1导入数据集:使用pandas读取Excel文件中的数据。

2数据探索:使用.head().info()方法查看数据的基本信息。

3数据可视化:使用seabornpairplot方法展示特征之间的关系。

4数据预处理:使用StandardScaler对特征进行标准化处理。

5划分数据集:使用train_test_split将数据集划分为训练集和测试集。

6模型训练:如果目标变量是分类的,使用RandomForestClassifier

如果目标变量是回归的,使用RandomForestRegressor

7交叉验证:使用cross_val_score评估模型的泛化能力。

8预测与评估:

对测试集进行预测。

如果是分类问题,使用classification_reportconfusion_matrix评估模型。

如果是回归问题,计算MSERMSEMAE分数。

9结果分析:根据评估指标分析模型性能,讨论可能的改进方向。

结果展示

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

  1. 返回前六条数据结果

 

           1、数据展示

  1. 数据可视化结果

 

2. 数据可视化

  1. 混淆矩阵展示

 

3. 分类混淆矩阵

  1. 精度,查准率,查全率,FI值结果截图

4. 分类结果

 

 

结果分析

1. 超参数影响分析

在本实验中,我们使用了随机森林模型,其主要超参数包括树的数量(n_estimators)、树的最大深度(max_depth)、以及是否进行特征选择(max_features)。这些超参数对模型性能有显著影响:

  • 树的数量:增加树的数量可以提高模型的稳定性和准确性,但也会增加计算成本。
  • 树的最大深度:限制树的深度可以防止过拟合,但过浅的树可能无法捕捉数据的复杂性。
  • 特征选择:通过随机选择特征子集来构建每棵树,可以增加模型的泛化能力。

2. 精度、查准率、查全率、F1值分析

由于目标变量 yy 是整数类型,我们首先假设这是一个分类问题。以下是对模型性能的分析:

  • 精度(Accuracy):表示模型预测正确的比例。高精度意味着模型在大多数情况下都能正确分类。
  • 查准率(Precision):在所有被预测为正类的样本中,实际为正类的比例。高查准率意味着较少的假阳性。
  • 查全率(Recall):在所有实际为正类的样本中,被正确预测为正类的比例。高查全率意味着较少的假阴性。
  • F1值:查准率和查全率的调和平均,是一个综合考虑查准率和查全率的指标。

3. 可能存在的问题

  • 过拟合:如果模型在训练集上表现很好,但在测试集上表现不佳,可能是过拟合。
  • 欠拟合:如果模型在训练集和测试集上的表现都不好,可能是欠拟合。
  • 数据不平衡:如果某些类别的样本数量远多于其他类别,可能会影响模型的预测性能。

4. 可提升的改进思路

  • 超参数调优:使用网格搜索(Grid Search)或随机搜索(Random Search)来寻找最优的超参数组合。
  • 特征工程:通过创建新的特征或转换现有特征来提高模型性能。
  • 模型集成:结合多个模型的预测结果,如使用投票分类器或堆叠(Stacking)方法。
  • 处理数据不平衡:如果存在类别不平衡,可以考虑过采样少数类、欠采样多数类或使用合成少数类技术(如SMOTE)。
  • 模型选择:尝试其他机器学习算法,如支持向量机、梯度提升树或神经网络,以找到最适合数据的模型。

结论

本实验通过随机森林模型对混凝土的承重等级进行了预测。通过分析超参数的影响、模型的精度、查准率、查全率和F1值,我们对模型的性能有了深入的理解。同时,我们也识别了可能存在的问题,并提出了改进思路,以期在未来的工作中进一步提升模型的预测能力。

代码

# 导入必要的库
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score, precision_score, recall_score, f1_score

# 1. 导入数据集并读取前6条数据,返回数据信息
data = pd.read_excel('BP_R_Data.xlsx')
print(data.head(6))
print(data.info())

# 2. 数据可视化处理
sns.pairplot(data)
plt.show()

# 3. 数据预处理,并将原始数据集划分为训练集和测试集
X = data.drop(['y'], axis=1)
y = data['y']
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

# 4. 选择机器学习算法进行拟合
rf = RandomForestClassifier(random_state=42)
rf.fit(X_train, y_train)

# 交叉验证
scores = cross_val_score(rf, X_scaled, y, cv=5)
print("交叉验证分数:", scores)

# 5. 预测结果分析及可视化
y_pred = rf.predict(X_test)

# 绘制混淆矩阵
conf_matrix = confusion_matrix(y_test, y_pred)
sns.heatmap(conf_matrix, annot=True, fmt='d')
plt.title('Confusion Matrix')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()

# 分类报告
print(classification_report(y_test, y_pred))

# 计算分类模型的性能指标
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='weighted')
recall = recall_score(y_test, y_pred, average='weighted')
f1 = f1_score(y_test, y_pred, average='weighted')

print("精度 (Accuracy):", accuracy)
print("查准率 (Precision):", precision)
print("查全率 (Recall):", recall)
print("F1值 (F1 Score):", f1)

# 保存模型,如果需要的话
# from joblib import dump, load
# dump(rf, 'random_forest_model.joblib')

 

 

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

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

相关文章

运算放大电路

虚短和虚断的概念

【PbootCMS】测试邮件标题怎么修改(邮箱配置说明)

不喜欢默认的标题样式, 希望自定义相关参数, 可以通过修改核心文件处理。 红色标记区域代码, 可以根据实际需求修改。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站…

一文搞定宝塔LINUX部署上线前后端分离项目

一文搞定宝塔LINUX部署上线前后端分离项目 地址:http://82.156.126.178/ 部署方案: 宝塔Linux,腾讯云服务器2核2G3M,数据库使用腾讯云托管平台mysql 1.跨域问题解决 首先前端区分线上环境和开发环境,主要是请求地址不一样 import axios from axiosconst prefix=process.en…

Windows10 64环境下用Qt5.12.12自带的mingw730_64构建编译OpenCV4.1.0时cmake-3.20.6中的参数配置

一、环境条件说明: 操作系统:Windows10 64环境 编译工具:用Qt5.12.12自带的mingw730_64构建 构建对象:编译OpenCV4.1.0的Release 64位和Debug 64位动态链接库 构建工具:CMake中的参数配置 二、cmake-3.20.6中的参数配置 1、按照下图配置好OpenCV4.1.0的源代码目录和构建编…

闲着没事,用STC12C5616AD制作一个74hc595测试仪

手头有些特别廉价的直插74hc595,怕这些595因为廉价而质量不过关,因而萌发了制作一个测试仪的想法。 用测试仪先对595进行测试,功能正常了,再接入电路应用。 该测试仪能自动向595写入数据,再读出输出数据进行比对,如果读出的并口数据与串行写入的数据不同,说明该IC损坏或…

控制流平坦化初了解(持续更新)

对于平坦化的学习控制流平坦化初了解 原理 借助LLVM(一个底层虚拟机项目,我目前不理解虚拟机这个概念)这个项目,目前理解为类似于一个编译器的东西,把源码通过各式各样的复杂的语义分析翻译成另一个玩意. 但原本是拿来优化的,然后做安全的人拿来改为混淆,就是OLLVM项目,做安全不…

DevEco Studio使用模拟器报错,解决办法

在进行鸿蒙应用开发时,很多开发者没有鸿蒙系统的设备,无法在鸿蒙系统真机上进行调试,这时就需要使用官方提供的模拟器。在菜单栏Tools---Device Manager,打开模拟器弹窗,登录华为账号后即可进行模拟器管理。但在模拟器下载后,点击右侧Actions启动时,会遇到提示报错“模拟…

为什么要做纯血鸿蒙操作系统?

在10月22日,华为最新的原生鸿蒙之夜暨全场景新品发布会上,余承东正式发布了“纯血鸿蒙”操作系统,这是继苹果iOS和安卓系统之后的全球第三大移动操作系统,同时也标志着国产操作系统实现了全面突破。(央视新闻报道https://mp.weixin.qq.com/s/IFatTQ7u7h92iGrr-xEedw)。那…

GIMP 处理 png 透明边缘

首先设置画布大小然后点击 图层 -> 图层到图像大小

时间的本质-计算视角

原作:Stephen Wolfram计算机视域下的时间 时间是人类经验的核心。然而,究竟什么是时间?在传统科学中,它常被比作空间坐标(尽管这种坐标对我们来说总是不断增长)。尽管这种描述在数学上可能很有用,但它并没有揭示时间的本质。 一旦我们开始用计算术语思考,就会觉得越来越…

中考英语优秀范文-002 Music 音乐

1 写作要求 作家雨果说过:“开启人类智慧的钥匙有三把,一是字母,二是数字,三是音符。”从这句话中,我们足可见音乐对人的发展的影响。请你根据以下提示,以Music为题,写一篇短文参加学校的英语作文竞赛。 提示: 1音乐使人充满活力,让人快乐; 2 没有音乐,生活就没有乐…

Windows11安装Linux子系统(WSL2)

1、确认BIOS中已经打开虚拟化 Virtualization Technology (我的机器默认已经打开 Enabled / Disabled,主板不同进入的地方不一样,自行搜索) 2、以管理员身份打开 PowerShell 3、输入(此步安装WSL): dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subs…