#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]