Процесс завершен с кодом выхода -1073741819 (0xC0000005) - Rpy2 - PullRequest
0 голосов
/ 29 февраля 2020

Я много раз искал эту ошибку, из-за переполнения стека и других веб-сайтов, но я не могу найти решение своей проблемы.

В основном у меня есть программа, которая находится в 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
...