Python RF模型评估度量



我已经在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)

尽管生成了所有四个模型,但只有最后一个模型输出保存到数据帧";cf_matrix_train";。

电流输出:

预期输出

pandas中的.append()操作未就地完成。它返回一个新的数据帧。所以你必须把它分配给一些东西。此外,你正在做相反的事情。

更换线路

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 += 1

最新更新