Способ нормализации партии, извлечения элементов партии и обучения партии
Из-за того, что набор данных слишком велик, чтобы загрузить все сразу. Мне нужно нормализовать, извлечь функции и обучить его партиями. Я выбрал радужную оболочку в качестве набора данных и scikit-learn в python, чтобы подтвердить свои идеи. Первым шагом я нормализовал партии, используя standarScaler.particial_fit()
,
def batch_normalize(data):
scaler = StandardScaler()
dataset=[]
for i in data:
sc = scaler.partial_fit(i)
for i in data:
dataset.append(scaler.transform(i))
return dataset
Второй шаг, я извлек функции, используя IncrementalPCA.particial_fit()
def batch_feature_extracrton(dataset):
ipca = IncrementalPCA(n_components=4)
dataset_1=[]
for i in dataset:
ipca.partial_fit(i)
for i in dataset:
dataset_1.extend(ipca.transform(i))
return dataset_1
Третий шаг, я обучил данные с помощью MLPClassifier.particial_fit()
def batch_classify(X_train, X_test, y_train, y_test):
batch_mlp = MLPClassifier(hidden_layer_sizes=(50,10), max_iter=500,
solver='sgd', alpha=1e-4, tol=1e-4, random_state=1,
learning_rate_init=.01)
for i,j in zip(X_train,y_train):
batch_mlp.partial_fit(i, j,[0,1,2])
print("batch Test set score: %f" % batch_mlp.score(X_test, y_test))
Ниже приведена моя основная функция, которая вызывает указанные выше три функции:
def batch(iris,batch_size):
dataset=batch_normalize(list(chunks(iris.data, batch_size)))
dataset=batch_feature_extracrton(dataset)
X_train, X_test, y_train, y_test = train_test_split(dataset, iris.target, test_size=0.2)
batch_data = list(chunks(X_train, batch_size))
batch_label = list(chunks(y_train, batch_size))
batch_classify(batch_data, X_test, batch_label, y_test)
Тем не менее, в этом методе, на каждом этапе, включая нормализацию и извлечение функций, мне приходится проходить через все пакеты данных дважды. Есть ли другие способы, чтобы упростить процесс? (например, партия может перейти непосредственно с шага 1 на 3)