如何批量向sklearn diabetes数据集追加数千行合成数据?
批量追加合成数据到sklearn Diabetes数据集的方法
方法1:使用NumPy合并(原生兼容sklearn数据集格式)
sklearn Diabetes数据集的data和target本身就是NumPy数组,直接用np.concatenate即可实现批量合并,步骤简单高效:
import numpy as np from sklearn.datasets import load_diabetes # 加载原Diabetes数据集 diabetes = load_diabetes() original_data = diabetes.data original_target = diabetes.target # 假设你已准备好合成数据:synth_data(3500行特征矩阵)、synth_target(3500行目标数组) # 需保证synth_data列数与原数据一致(10列),synth_target为一维数组 # 批量合并特征矩阵 combined_data = np.concatenate([original_data, synth_data], axis=0) # 批量合并目标数组 combined_target = np.concatenate([original_target, synth_target], axis=0) # 可选:将合并后的数据放回原数据集对象 diabetes.data = combined_data diabetes.target = combined_target # 验证行数:原450行 + 3500行 = 3950行 print(diabetes.data.shape) # 输出应为 (3950, 10)
方法2:使用Pandas合并(直观易检查)
如果习惯用DataFrame操作,可以先将数据转成DataFrame合并,再转回NumPy数组适配sklearn接口:
import pandas as pd from sklearn.datasets import load_diabetes # 加载原数据集并转为DataFrame diabetes = load_diabetes() original_df = pd.DataFrame(diabetes.data, columns=diabetes.feature_names) original_df['target'] = diabetes.target # 假设你已将合成数据转为DataFrame:synth_df(包含10个特征列+1个target列) # 需保证synth_df的列名、数据类型与原DataFrame完全匹配 # 批量合并DataFrame combined_df = pd.concat([original_df, synth_df], ignore_index=True) # 转回NumPy数组(适配sklearn) combined_data = combined_df.drop('target', axis=1).values combined_target = combined_df['target'].values # 可选:替换原数据集的数据 diabetes.data = combined_data diabetes.target = combined_target print(diabetes.data.shape) # 输出 (3950, 10)
关键注意事项
- 确保合成数据的特征列数、数据类型与原数据集完全一致(原数据为float64类型)
- 合并后通过
shape属性验证行数是否符合预期(450+3500=3950) - 若合成数据来自外部文件,读取时需避免引入额外索引或无关列
内容的提问来源于stack exchange,提问作者G. D'Seas
相关产品推荐
相关产品推荐

