#python #pandas #function #machine-learning #confusion-matrix
#python #pandas #функция #машинное обучение #путаница-матрица
Вопрос:
У меня есть функция, которая импортирует классификатор случайного леса из scikit learn, я сопоставляю его с данными и, наконец, хочу отобразить матрицу точности, каппы и путаницы. Все работает, кроме печати матрицы путаницы. Я не получаю никаких ошибок, но матрица путаницы не печатается.
Я попытался вызвать print(cm)
, и это работает, но он не печатает в обычном стиле фрейма данных pandas, который я ищу.
Вот код
def rf_clf(X, y, test_size = 0.3, random_state = 42):
"""This function splits the data into train and test and fits it in a random forest classifier
to the data provided, analysing its errors (Accuracy and Kappa). Also as this is classification,
the function will output a confusion matrix"""
#Split data in train and test, as well as predictors (X) and targets, (y)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=random_state, stratify=y)
#import random forest classifier
base_model = RandomForestClassifier(random_state=random_state)
#Train the model
base_model.fit(X_train,y_train)
#make predictions on test set
y_pred=base_model.predict(X_test)
#Print Accuracy and Kappa
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
print("Kappa:",metrics.cohen_kappa_score(y_test, y_pred))
#create confusion matrix
labs = [y_test[i][0] for i in range(len(y_test))]
cm = pd.DataFrame(confusion_matrix(labs, y_pred))
cm #here is the issue. Kinda works with print(cm)
Комментарии:
1. Вам нужны имена столбцов и индексы? Возможно, попробуйте выполнить ввод при создании самого фрейма данных? например. pd.DataFrame( … , columns = [ … ], index = [ … ])
2. попробуйте
return cm
в последней строке3. Спасибо @ChrisA, ваш ответ работает для меня. Спасибо!
Ответ №1:
-
Импортируйте метрики из sklearn в начале.
from sklearn import metrics
-
Используйте это, когда вы хотите показать матрицу путаницы.
# Get and show confussion matrix cm = metrics.confusion_matrix(y_test, y_pred) print(cm)
При этом вы должны просмотреть матрицу путаницы в необработанном тексте.
Если вы хотите показать матрицу путаницы с цветами, сделайте это другим способом:
-
Импорт
from sklearn.metrics import confusion_matrix import pandas as pd import seaborn as sns; sns.set()
-
Используйте это таким образом:
cm = confusion_matrix(y_test, y_pred) cmat_df = pd.DataFrame(cm, index=class_names, columns=class_names) ax = sns.heatmap(cmat_df, square=True, annot=True, cbar=False) ax.set_xlabel('Predicción') ax.set_ylabel('Real')`
-
Надейтесь на лучшее!