我有一批表格数据,想要用GAN网络对抗来增强并扩充数据,如何用代码实现
5条回答 默认 最新
阿里嘎多学长 2025-06-24 15:03关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
使用 GAN 增强 Excel 表格数据
GAN(Generative Adversarial Network)是一种深度学习算法,可以生成新的数据样本,使其与原始数据相似。下面是一个使用 Keras 库实现 GAN 增强 Excel 表格数据的示例代码:
import pandas as pd from keras.layers import Dense, Input from keras.models import Model from keras.optimizers import Adam from sklearn.preprocessing import MinMaxScaler # 加载 Excel 表格数据 df = pd.read_excel('data.xlsx') # 将数据转换为 NumPy 数组 X = df.values # 将数据 normalize 到 0-1 范围 scaler = MinMaxScaler() X = scaler.fit_transform(X) # 定义 GAN 模型 input_dim = X.shape[1] generator = Sequential() generator.add(Dense(128, input_dim=input_dim, activation='relu')) generator.add(Dense(input_dim, activation='tanh')) generator.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.001)) discriminator = Sequential() discriminator.add(Dense(128, input_dim=input_dim, activation='relu')) discriminator.add(Dense(1, activation='sigmoid')) discriminator.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.001)) # 定义 GAN 模型 gan = Sequential() gan.add(generator) gan.add(discriminator) gan.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.001)) # 训练 GAN 模型 for epoch in range(100): # 训练生成器 noise = np.random.normal(0, 1, (100, input_dim)) fake_data = generator.predict(noise) d_loss_real = discriminator.train_on_batch(X, np.ones((X.shape[0], 1))) d_loss_fake = discriminator.train_on_batch(fake_data, np.zeros((fake_data.shape[0], 1))) d_loss = 0.5 * np.add(d_loss_real, d_loss_fake) # 训练鉴别器 noise = np.random.normal(0, 1, (100, input_dim)) fake_data = generator.predict(noise) g_loss = gan.train_on_batch(noise, np.ones((noise.shape[0], 1))) print(f'Epoch {epoch+1}, Discriminator Loss: {d_loss[0]}, Generator Loss: {g_loss}') # 生成新的数据样本 noise = np.random.normal(0, 1, (100, input_dim)) new_data = generator.predict(noise) # 将新的数据样本保存到 Excel 文件中 new_df = pd.DataFrame(new_data) new_df.to_excel('new_data.xlsx', index=False)这个示例代码使用 Keras 库实现 GAN 模型,然后使用训练数据训练生成器和鉴别器。最后,使用生成器生成新的数据样本,并将其保存到 Excel 文件中。
请注意,这只是一个简单的示例代码,实际实现中可能需要根据具体情况进行调整和优化。
解决 无用评论 打赏 举报