Как я могу написать метод или цикл for для очень похожих кусков кода - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть пример кода ниже.Код работает отлично, но моя проблема в том, что этот код не чистый и стоит слишком много строк, я считаю, что этот код можно сократить с помощью метода или цикла for, но я не мог понять, как мне этого добиться.Куски кода одинаковы на 90%, только изменения происходят в переменной части.Я только поставил 2 части, но мой код состоит из 5 частей, как это

#KFOLD-1

all_fold_X_1 = pd.DataFrame(columns=['Sentence_txt'])
index = 0
for k, i in enumerate(dfNew['Sentence_txt'].values):
    if k in kFoldsTrain1:
        all_fold_X_1 = all_fold_X_1.append({index:i}, ignore_index=True)

X_train1 = count_vect.fit_transform(all_fold_X_1[0].values)

Y_train1 = [i for k,i in enumerate(dfNew['Sentence_Polarity'].values) if k in kFoldsTrain1]
Y_train1 = np.asarray(Y_train1)

#KFOLD-2

all_fold_X_2 = pd.DataFrame(columns=['Sentence_txt'])
index = 0
for k, i in enumerate(dfNew['Sentence_txt'].values):
    if k in kFoldsTrain2:
        all_fold_X_2 = all_fold_X_2.append({index:i}, ignore_index=True)

X_train2 = count_vect.fit_transform(all_fold_X_2[0].values)

Y_train2 = [i for k,i in enumerate(dfNew['Sentence_Polarity'].values) if k in kFoldsTrain2]
Y_train2 = np.asarray(Y_train2)

1 Ответ

0 голосов
/ 24 ноября 2018

Полный пример не был предоставлен, поэтому я делаю некоторые предположения.Возможно, что-то вроде этого:

def train(dataVar, dfNew):
    ret = {}
    index = 0
    for k, i in enumerate(dfNew['Sentence_txt'].values):
        if k in kFoldsTrain1:
            dataVar = dataVar.append({index:i}, ignore_index=True)

    ret['x'] = count_vect.fit_transform(dataVar[0].values)
    ret['y'] = [i for k,i in enumerate(dfNew['Sentence_Polarity'].values) if k in kFoldsTrain1]
    ret['y'] = np.asarray(Y_train1)

    return ret

#KFOLD-1
kfold1 = train(pd.DataFrame(columns=['Sentence_txt']), dfNew)

#KFOLD-2
kfold2 = train(pd.DataFrame(columns=['Sentence_txt']), dfNew)

Возможно, вы поняли идею.Вам может не понадобиться второй аргумент в функции, зависящий от того, является ли переменная 'dfNew' глобальной.Я также далеко от эксперта Python!;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...