Ввод : CSV с 50000 строк;каждая строка содержит 910 столбцов со значением 0 / 1.
Выход : кадр данных для запуска моего CNN.
Я написал код, который читает строку CSV построчно.Для каждой строки я разбил данные на 2 части, которые называются нейронами (900 столбцов) и метками (10 столбцов).Поскольку это списки, я конвертирую их в массивы Numpy.Переходя к следующей строке, я делаю то же самое и складываю массивы, чтобы в итоге получить 4 обычных набора данных:
x_train, x_test, y_train, y_test
Мой код работает, потому что я тестировалэто на маленьком CSV только с 6 рядами.Но когда я запускаю его на фактическом наборе данных в 50000 строк, после инициализации массива требуется преобразовать строки в фрейм данных.
Поэтому мне было интересно, есть ли более быстрый способ сделать это преобразование, или это нормально - просто подождать здесь!
Вот мой код:
import numpy as np
import pandas as pd
import time
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.utils import np_utils
from sklearn.model_selection import train_test_split
# Read the dataset from the CSV file into a dataframe
df = pd.read_csv("bci_dataset_labelled.csv")
start_init = time.time()
xvalues = np.zeros((900,), dtype=np.int)
yvalues = np.zeros((10,), dtype=np.int)
print("--- Arrays initialized in %s seconds ---" % (time.time() - start_init))
start_conversion = time.time()
for row in df.itertuples(index=False):
# separate the neurons from the labels
x = list(row[:900])
y = list(row[900:])
# convert the lists to numpy arrays
x = np.array(x)
y = np.array(y)
xvalues = np.vstack((xvalues, x))
yvalues = np.vstack((yvalues, y))
print("--- CSV rows converted to dataframe in %s seconds ---" % (time.time() - start_conversion))
start_split = time.time()
x_train, x_test, y_train, y_test = train_test_split(xvalues, yvalues, test_size=0.2)
print("--- Dataframe split into training and testing datasets in %s seconds ---" % (time.time() - start_split))
num_classes = y_test.shape[1]
num_neurons = x_train[0].shape[0]
# define baseline model
def baseline_model():
#create model
model = Sequential()
model.add(Dense(
num_neurons,
input_dim = num_neurons,
kernel_initializer = 'normal',
activation = 'relu'
))
model.add(Dense(
num_classes,
kernel_initializer = 'normal',
activation = 'softmax'
))
#compile model
model.compile(
loss = 'categorical_crossentropy',
optimizer = 'adam',
metrics = ['accuracy'])
return model
# build the model
model = baseline_model()
# fit the model
model.fit(x_train, y_train, validation_data = (x_test, y_test),
epochs = 10, batch_size = 200, verbose = 2)
# final evaluation of the model
scores = model.evaluate(x_test, y_test, verbose=0)
print("Baseline error: %0.2f%%" % (100-scores[1]*100))
Это просто застряло здесь:
Rachayitas-MacBook-Pro:bci_hp rachayitagiri$ python3 binarycnn.py
Using TensorFlow backend.
--- Arrays initialized in 2.4080276489257812e-05 seconds ---
Любые предложения будут оценены!Спасибо!
Редактировать: вывод вывода в виде текста из консоли вместо изображения.Спасибо за предложение.