Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以使用数据扩充来增加带有标签的数据集的大小?_Python_Tensorflow_Keras - Fatal编程技术网

Python 有没有一种方法可以使用数据扩充来增加带有标签的数据集的大小?

Python 有没有一种方法可以使用数据扩充来增加带有标签的数据集的大小?,python,tensorflow,keras,Python,Tensorflow,Keras,我正在尝试对Kaggle的数字识别进行逻辑回归。列车组中有42000行,我想使用数据扩充来增加计数 我尝试使用keras的ImageDataGenerator对象 datagen = ImageDataGenerator( rotation_range=30, zoom_range = 0.2, width_shift_range=0.2, height_shift_range=0.2) datag

我正在尝试对Kaggle的数字识别进行逻辑回归。列车组中有42000行,我想使用数据扩充来增加计数

我尝试使用keras的
ImageDataGenerator
对象

datagen = ImageDataGenerator(  
        rotation_range=30,   
        zoom_range = 0.2,  
        width_shift_range=0.2,         
        height_shift_range=0.2)

datagen.fit(X_train)
但是大小保持不变,我后来发现,
ImageDataGenerator
实际上并没有添加行,而是在训练期间插入增强的数据。
是否有其他工具可以使用相同的标签保存或增加数据?

以下是我最终如何使用标签保存增加的数据。为了观赏,我取样了5排。当考虑到完整的数据集时,
for
循环可能不是写入数组的最佳方式

#importing data
train = pd.read_csv("train.csv")
X_train = train.drop(labels=["label"], axis=1)
y_train = train.label

#sampling 5 rows and reshaping x to 4D array
x = X_train[0:5].values.reshape(-1,28,28,1)
y = y_train[0:5]

#Augmentation parameters
from keras_preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(  
        rotation_range=30,   
        zoom_range = 0.2,  
        width_shift_range=0.2,  
        height_shift_range=0.2,  
        )  

#using .flow instead of .fit to write to an array
augmented_data = []
num_augmented = 0
batch = 5  # for 5*5 = 25 entries
for X_batch, y_batch in datagen.flow(X_2, y, batch_size=batch, shuffle=False,):
    augmented_data.append(X_batch)
    augmented_labels.append(y_batch)
    num_augmented += 1
    if num_augmented == x.shape[0]:
        break
augmented_data = np.concatenate(augmented_data) #final shape = (25,28,28,1)
augmented_labels = np.concatenate(augmented_labels)


#Lets take a look at augmented images
for index, image in enumerate(augmented_data):
    plt.subplot(5, 5, index + 1)
    plt.imshow(np.reshape(image, (28,28)), cmap=plt.cm.gray)


# reshaping and converting to df
augmented_data_reshaped = augmented_data.reshape(25, 784)
augmented_dataframe = pd.DataFrame(augmented_data_reshaped)
# inserting labels in df
augmented_dataframe.insert(0, "label", augmented_labels)
header = list(train.columns.values)
augmented_dataframe.columns = header
# write
augmented_dataframe.to_csv("augmented.csv")

你说尺寸保持不变是什么意思?你能出示你的全部代码吗?您可能对此感兴趣。数据集形状最初是(42000784),在运行上述脚本后,它保持不变。我认为它会像(168000,784)一样增长4倍,我读到keras在训练时实时创建数据,除非您选择将增强保存到其他地方,否则它将保持不变。但是,我不确定它是否能在CSV数据上工作(请参见上面的链接)。@NelsonGon,是的,我确实将CSV行重塑为4D形状数组(-1,28,28,1),并且函数运行时没有任何错误,所以我能将增强的数据与标签一起保存吗?那就是great@NelsonGon,感谢您的输入,我能够将增强的数据保存到一个数组中,一旦我用标签保存它们,我将很快发布答案