You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用scikit-learn生成其他温度的合成数据用于机器学习训练

可行方案:用Scikit-learn及其他库生成合成温度数据

当然可以,以下是几种适配你数据场景的方案,从简单插值到机器学习拟合都有覆盖:

方法1:插值法(快速生成平滑数据)

如果你的数据趋势平滑,用插值法直接生成目标温度的Er值最便捷,适合填补中间值或延伸少量外值:

import pandas as pd
from scipy.interpolate import interp1d

# 替换为你groupby后的真实均值数据
existing_data = pd.DataFrame({
    "Temp": [30, 40, 45, 50, 55, 60],
    "Er": [0.12, 0.08, 0.06, 0.05, 0.07, 0.10]  # 示例值,替换成你的数据
})

# 创建插值函数(kind可选'linear'/'quadratic'/'cubic',二次插值适合多数实验数据)
interp_func = interp1d(existing_data["Temp"], existing_data["Er"], kind='quadratic', fill_value="extrapolate")

# 生成目标温度的合成数据
target_temps = [35, 65, 70]
synthetic_Er = interp_func(target_temps)

# 整理结果
synthetic_data = pd.DataFrame({
    "Temp": target_temps,
    "Er": synthetic_Er.round(4)
})

print(synthetic_data)
  • 注:fill_value="extrapolate"允许生成现有温度范围外的数据(如65、70),如果不需要外插可删除该参数。

方法2:Scikit-learn回归拟合(适合机器学习训练集)

如果需要生成带模拟噪声的合成数据(更贴近真实训练场景),可以先用回归模型拟合现有数据,再预测目标温度的输出,甚至添加随机噪声:

import pandas as pd
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

# 替换为你的真实均值数据
existing_data = pd.DataFrame({
    "Temp": [30, 40, 45, 50, 55, 60],
    "Er": [0.12, 0.08, 0.06, 0.05, 0.07, 0.10]
})

# 准备特征(Scikit-learn要求特征为二维数组)
X = existing_data["Temp"].values.reshape(-1, 1)
y = existing_data["Er"].values

# 用多项式回归拟合(非线性场景也可替换为RandomForestRegressor/SVR)
poly_features = PolynomialFeatures(degree=2)
X_poly = poly_features.fit_transform(X)
model = LinearRegression()
model.fit(X_poly, y)

# 预测目标温度的Er值
target_temps = np.array([35, 65, 70]).reshape(-1, 1)
target_poly = poly_features.transform(target_temps)
predicted_Er = model.predict(target_poly)

# 可选:添加小噪声模拟真实数据波动(提升训练集真实性)
noise = np.random.normal(0, 0.01 * predicted_Er.mean(), size=predicted_Er.shape)
synthetic_Er = predicted_Er + noise

# 整理结果
synthetic_data = pd.DataFrame({
    "Temp": target_temps.flatten(),
    "Er": synthetic_Er.round(4)
})

print(synthetic_data)
  • 模型选择建议:数据非线性明显时,优先用RandomForestRegressor或SVR;趋势平滑时,多项式回归足够。

方法3:高斯过程回归(带不确定性的生成)

如果需要量化合成数据的不确定性(比如置信区间),高斯过程回归是理想选择,适合科研或需要误差评估的场景:

import pandas as pd
import numpy as np
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C

# 替换为你的真实均值数据
existing_data = pd.DataFrame({
    "Temp": [30, 40, 45, 50, 55, 60],
    "Er": [0.12, 0.08, 0.06, 0.05, 0.07, 0.10]
})

X = existing_data["Temp"].values.reshape(-1, 1)
y = existing_data["Er"].values

# 定义核函数(适配非线性数据)
kernel = C(1.0, (1e-3, 1e3)) * RBF(10, (1e-2, 1e2))
gpr = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=10)
gpr.fit(X, y)

# 预测目标温度,同时获取标准差(不确定性)
target_temps = np.array([35, 65, 70]).reshape(-1, 1)
predicted_Er, std_dev = gpr.predict(target_temps, return_std=True)

# 整理结果
synthetic_data = pd.DataFrame({
    "Temp": target_temps.flatten(),
    "Er": predicted_Er.round(4),
    "Uncertainty": std_dev.round(4)
})

print(synthetic_data)

内容的提问来源于stack exchange,提问作者BaRud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:35:19