Отображать путаницу при вызове из функции - PullRequest
1 голос
/ 09 апреля 2019

У меня есть функция, которая импортирует случайный лесной классификатор из scikit learn, я подгоняю его данными и, наконец, хочу отобразить точность, каппу и матрицу путаницы.Все работает кроме печати путаницы.Я не получаю никакой ошибки, но запутанная матрица не печатается.

Я попытался вызвать print(cm), и это работает, но не печатается в обычном стиле пандас-данных, что я и ищу.

Вот код

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 Ответ

1 голос
/ 09 апреля 2019
  1. Импорт метрик из sklearn в начале.

    from sklearn import metrics
    
  2. Используйте это, если вы хотите показать матрицу путаницы.

    # Get and show confussion matrix
    cm = metrics.confusion_matrix(y_test, y_pred)
    print(cm)
    

При этом вы должны просмотреть матрицу смешения в необработанном тексте.

Если вы хотите показать Матрицу смешения с цветами, сделайте это другим способом:

  1. Импорт

    from sklearn.metrics import confusion_matrix
    import pandas as pd
    import seaborn as sns; sns.set()
    
  2. Используйте это так:

    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')`
    
  3. Надежда на лучшее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...