首页 > 解决方案 > 我的 for i in range 循环只迭代一次,我需要迭代 19 次才能创建单独的模型

问题描述

这是代码:有 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

标签: pythonpandas

解决方案


我发现了一个由于缺乏关注而忽略的错误。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]

推荐阅读