зацикливание модели обучения на классах модели и изменение имени кадра данных по классу модели - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь автоматизировать обучающий конвейер и у меня возникают некоторые проблемы с переименованием входных кадров данных с изменением классов моделей.

sample_train = [9]
sample_test = [18]
model_class = [0]


for i in sample_train:
    for j in model_class:
        # Define the training datasets -Filter the datasets with model selections
        trainX_M[j] = mldata_pd[(mldata_pd.sample_id == i) & (mldata_pd.training_set_band == j)].drop(
            ['conv_gv_band', 'sample_id', 'training_set_band'], axis=1)
        trainy_M[j] = mldata_pd[(mldata_pd.sample_id == i) & (
            mldata_pd.training_set_band == j)].iloc[:, mldata_pd.columns == 'conv_gv_band']

    trainX_M0, testX, trainy_M0, testy = train_test_split(trainX_M0, trainy_M0,
                                                          test_size=0.2,
                                                          random_state=42)

Я ожидаю, что trainX_M0 при model_class=0, но получаю ошибку:

NameError: имя 'trainX_M' не определено

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Вы пытаетесь установить значение в позиции j в trainX_M[j] =, то же самое с trainY_M[j] =, и из ошибки вы можете прочитать, что массив trainX_M не был определен ранее. В вашем размещенном коде отрублен я тоже не вижу определения. Вы уверены, что есть и пишется так же?

Если их нет, вы можете инициализировать массив trainX_M следующим образом (я думаю, что размер равен model_class):

trainX_M = [None] * len(model_class)
0 голосов
/ 27 мая 2019

ваша переменная - trainX_M, а не trainX_M0, caggne до

trainX_M0[j] = mldata_pd[(mldata_pd.sample_id == i) & (mldata_pd.training_set_band == j)].drop(['conv_gv_band','sample_id','training_set_band'], axis=1)

или создайте список trainX_M и добавьте к нему все матрицы для класса

...