Я много раз искал эту ошибку, из-за переполнения стека и других веб-сайтов, но я не могу найти решение своей проблемы.
В основном у меня есть программа, которая находится в python
, и Я использую python модуль rpy2 для связи с некоторыми R
функциями, начиная с python.
Проблема в том, что когда я запускаю код, иногда, но не всегда сталкиваюсь с этой ошибкой. Я на windows. Иногда, когда я перезагружаю свой P C, этот код выполняет больше упражнений, но затем в конце концов эта ошибка снова появляется Что мне делать?
У меня python 3.6.7
, с PyCharm 2018.3.3
. Однако я сомневаюсь, что проблема в PyCharm
, потому что когда я запускаю свою программу из cmd
, происходит то же самое, за исключением того, что программа останавливается напрямую без , уведомляющего меня об этом сообщением Msgstr "Процесс завершен с кодом выхода -1073741819 (0xC0000005)". Это сообщение появляется только в PyCharm, но все же.
У меня есть rpy2 version 2.9.5
Описание кода
Я относительно знаю, какая часть кода делает это, но я не могу оптимизировать это больше. Другими словами, в этой части кода, внутри перекрестной проверки, я переполнен каждым набором поездов и проверок определенным образом, и для этого я объединяю и X_train, и y_train обратно в один фрейм данных. , перенаселение этого фрейма данных, а затем возврат обновленных, перенаселенных, X_train и y_train, и выполнение моего анализа этих перенаселенных. Я думаю, что объединение обоих в numpy
массивов в pandas
dataframe и последующее некомбинирование обратно создает эту ошибку памяти. Также важно отметить, что это происходит в каждом сгибе, и я делаю перекрестную проверку 10-кратных-10-повторных. Однако даже когда я запускаю это на настольном компьютере P C, а не на своем ноутбуке, происходит то же самое, зная, что на моем собственном ноутбуке осталось достаточно ГБ. Я сомневаюсь, что это ошибка python / rpy2 ??
Фрагмент кода
# I am calling this function inside each fold
df_combined = self.prepare_data(X_train, y_train)
, а затем после вызова prepare_data()
я делаю следующее:
# THE apply_f1(), apply_f2(), apply_f3(), and apply_f4() ARE THE FUNCTIONS
# THAT USE rpy2 INTERNALLY
if self.f1:
X_train_inner, y_train_inner = self.apply_f1(df_combined)
elif self.f2:
X_train_inner, y_train_inner = self.apply_f2(df_combined)
elif self.f3:
X_train_inner, y_train_inner = self.apply_f3(df_combined)
else:
X_train_inner, y_train_inner = self.apply_f4(df_combined)
Функция prepare_data()
:
def prepare_data(self, X_train, y_train):
'''
concatenates X_train_inner and y_train_inner into one, and make them a data frame
so we are able to process the data frame by SMOGN, RandUnder, GN, or SMOTER
'''
# reshape + rename
X_train_samp = X_train
y_train_samp = y_train.reshape(-1, 1)
# combine two numpy arrays together into one numpy array
combined = np.concatenate((X_train_samp, y_train_samp), axis=1)
# transform X_train + y_train into a pandas dataframe
column_names = self.other + [self.target_variable]
df_combined = pd.DataFrame(combined, columns=column_names)
# convert the combined pandas dataframe to R Data.Frame
df_combined = pandas2ri.py2ri(df_combined)
return df_combined