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