我正在使用 scklearn 的随机森林分类,除了混淆矩阵之外,我在所有方面都得到了不错的结果,这里是代码和结果
这不是我所期望的,特别是因为训练量仅为我应有的训练量的 1/3,我在训练数据集中有 677k,但在混淆矩阵中它只执行所有标签 0。
问题似乎出在 matplotlib/seaborn 上。 (我无法重现它;也许您需要为我们提供一个可重现的示例,其中包含您编写的确切代码和数据集。)
您可以将混淆矩阵显示/打印为数据帧,而不是使用绘图。
import pandas as pd
from sklearn.metrics import confusion_matrix
def get_confusion_matrix_df(classifier, X, y):
"""Return the confusion matrix as a DataFrame."""
labels = classifier.classes_
columns_labels = pd.MultiIndex.from_product([["Predicted"], labels])
index_labels = pd.MultiIndex.from_product([["Actual"], labels])
prediction = classifier.predict(X)
matrix = confusion_matrix(y, prediction, labels=labels)
return pd.DataFrame(matrix, columns=columns_labels, index=index_labels)
get_confusion_matrix_df(rf_cv, X_train, y_train)
示例:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
X, y = load_iris(return_X_y=True, as_frame=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
get_confusion_matrix_df(model, X_test, y_test)
结果: