Преобразование любой двумерной матрицы (путаница или нет) в pandas фрейм данных прост:
from sklearn.metrics import confusion_matrix
y_true = [2, 0, 2, 2, 0, 1]
y_pred = [0, 0, 2, 2, 0, 2]
cm = confusion_matrix(y_true, y_pred)
print(cm)
# result:
[[2 0 0]
[0 0 1]
[1 0 2]]
import pandas as pd
df = pd.DataFrame(cm)
print(df)
# result:
0 1 2
0 2 0 0
1 0 0 1
2 1 0 2
заполнено, с именами как строк, так и столбцов.
Слияние фреймов данных также возможно прямолинейно:
cm2 = [[1, 0, 0],
[0, 0, 1],
[2, 0, 1]]
df2 = pd.DataFrame(cm2)
cm3 = [[0, 0, 2],
[1, 2, 1],
[2, 0, 0]]
df3 = pd.DataFrame(cm3)
frames = [df, df2, df3]
final = pd.concat(frames)
print(final)
# result:
0 1 2
0 2 0 0
1 0 0 1
2 1 0 2
0 1 0 0
1 0 0 1
2 2 0 1
0 0 0 2
1 1 2 1
2 2 0 0
Если вы используете его в al oop, вы всегда можете начать с пустого списка frames=[]
, использовать frames.append(df)
для каждого нового кадра данных и pd.concat(frames)
, чтобы получить окончательный вариант кадр:
frames = []
for model_name, model in models.items():
y_pred = cross_val_predict(model, features, ylabels, cv=cv_splitter)
cm = confusion_matrix(y_true, y_pred)
df = pd.DataFrame(cm)
frames.append(df)
final = pd.concat(frames)