Мой цикл for i in range повторяется только один раз, мне нужно повторить его 19 раз, чтобы создать отдельные модели

#python #pandas

Вопрос:

Вот код: Существует 19 типов продуктов, и мне нужно создать отдельные модели для каждого из них. Цикл повторяется для i == 1. Но затем выходит из цикла.

 for i in range(1,20):  dtc = DecisionTreeClassifier()  scaler = MinMaxScaler()  df_result = df_result[df_result['Product'] == i]  x = df_result[feature_colsx]  y = df_result[feature_colsy]  try:  x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1,train_size=.80)  x_train = scaler.fit_transform(x_train)  x_test = scaler.fit_transform(x_test)  dtc.fit(x_train, y_train.values.ravel())  y_pred = dtc.predict(x_test)  accuracy = dtc.score(x_train,y_train)  Prd.append(i)  Prdacc.append(accuracy)  print(accuracy)  pickle.dump(dtc, open( 'model' '/' str(i) 'mod.pkl',"wb"))  pickle.dump(scaler, open( 'model' '/' str(i) 'scl.pkl',"wb"))  except:  pass  

Комментарии:

1. Ваш цикл повторяется 19 раз, как мне кажется. Вы не выходите из цикла или что-то в этом роде, так в чем же конкретно проблема?

2. Может быть, вы получаете исключение на других итерациях? Распечатайте исключение вместо того, чтобы скрывать его с pass помощью .

3. @Jab Я обнаружил ошибку, которую он повторял только один раз, из-за следующего: я обновил df_results при первом вводе в df_reults = df_results[df_results[‘Продукт’] = = i]

4. Он все еще повторяется 19 раз, просто ничего не обновляя.

5. @Jab да, он сделал итерацию, просто в них не было продуктов, так как df_result обновил его самостоятельно с помощью продукта 1 на первой итерации.

Ответ №1:

Я обнаружил ошибку, которую проигнорировал из-за недостатка внимания. df_results получает обновление на первой итерации.

 df_result = df_result[df_result['Product'] == i]  x = df_result[feature_colsx]  y = df_result[feature_colsy]  

Таким образом, код скорее должен быть:

 df_temp = df_result[df_result['Product'] == i]  x = df_temp[feature_colsx]  y = df_temp[feature_colsy]