用机器学习预测混凝土抗压强度

混凝土抗压强度($f_c$)是结构设计中最重要的指标之一。传统做法依赖试配与养护后实测,周期长、成本高。用机器学习直接从配合比预测强度,是个很自然的研究切入点。

问题定义

把配合比(水、水泥、砂、石子、粉煤灰、矿渣等用量)作为特征 $X$,抗压强度作为目标 $y$,建立一个回归模型:

$$
y = f(X) + \varepsilon
$$

常用数据集

  • UCI Concrete Compressive Strength:1030 组样本,8 个成分特征 + 龄期
  • Kaggle:多个衍生版本,含更多外加剂信息

一条最小可运行流程

1
2
3
4
5
6
7
8
9
10
11
12
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score

df = pd.read_csv("concrete.csv")
X, y = df.drop(columns=["strength"]), df["strength"]
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, random_state=42)

model = RandomForestRegressor(n_estimators=300, random_state=42)
model.fit(X_tr, y_tr)
print("R2:", r2_score(y_te, model.predict(X_te)))

随机森林通常就能拿到 $R^2 \approx 0.85$ 以上的结果,作为基线已经不错。

下一步

  • 引入 XGBoost / 梯度提升 提升精度
  • SHAP 做可解释性分析,回答「哪种成分影响最大」
  • 尝试 多任务学习 同时预测多个龄期强度

下一篇打算展开讲 SHAP 在配合比分析里的实战。


用机器学习预测混凝土抗压强度
https://ahhaiboy-blog.pages.dev/2026/07/30/ml-concrete-strength/
作者
AhHaiBoy
发布于
2026年7月30日
许可协议