我已经在Python中运行了随机森林模型。我需要将TP、FP、FN和TN数据存储在数据中。
cf_matrix_train = pd.DataFrame([{'Key':0,'TN':0,'FP':0,'FN':0,'TP':0}])
df = pd.DataFrame()
max_f = list(range(1,3))
max_d = list(range(10,12))
for fea in max_f:
for dep in max_d:
clf=RandomForestClassifier(random_state=1,n_estimators=100,max_features=fea, max_depth=dep)
clf.fit(X_train,y_train)
train_pred = clf.predict(X_train)
cm_train = confusion_matrix(train_pred,y_train)
cf_matrix_train['TN'] = cm_train[0][0]
cf_matrix_train['FP'] = cm_train[1][0]
cf_matrix_train['FN'] = cm_train[0][1]
cf_matrix_train['TP'] = cm_train[1][1]
cf_matrix_train.append(df)
print(cm_train)虽然生成了这四个模型,但只有最后一个模型输出保存到dataframe "cf_matrix_train“中。
发布于 2022-04-12 12:12:16
.append()操作在pandas中不被执行。它返回一个新的数据帧。所以你得把它分配给什么东西。而且,你在做相反的事情。
更换线路
cf_matrix_train.append(df)使用
df = df.append(cf_matrix_train)除此之外,你还可以这样做:
df = pd.DataFrame(columns=['Key', 'TN', 'FP', 'FN', 'TP'])
max_f = list(range(1, 3))
max_d = list(range(10, 12))
index = 0
for fea in max_f:
for dep in max_d:
clf = RandomForestClassifier(random_state=1, n_estimators=100,
max_features=fea, max_depth=dep)
clf.fit(X_train,y_train)
train_pred = clf.predict(X_train)
cm_train = confusion_matrix(train_pred, y_train)
df.loc[index, 'Key'] = f"{fea}, {dep}"
df.loc[index, 'TN'] = cm_train[0][0]
df.loc[index, 'FP'] = cm_train[1][0]
df.loc[index, 'FN'] = cm_train[0][1]
df.loc[index, 'TP'] = cm_train[1][1]
index += 1https://stackoverflow.com/questions/71842206
复制相似问题