Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Матриця невідповідностей | Порівняння Моделей
Класифікація з Python

Матриця невідповідностей

Свайпніть щоб показати меню

Під час здійснення прогнозу для задачі бінарної класифікації існує лише чотири можливі результати:

ConfusionMatrix

На зображенні вище фактичні значення (істинні мітки) впорядковані зверху вниз у спадному порядку, а передбачені значення — зліва направо у зростаючому порядку. Це стандартне розташування, яке використовується у scikit-learn для відображення матриць плутанини.

Note
Примітка

Різні бібліотеки або візуалізації можуть використовувати інше розташування — наприклад, розміщувати фактичні значення на ось x, а передбачені значення на ось y. Однак різниця полягає лише в макеті; значення в матриці залишаються незмінними.

Ці результати називаються істинно позитивний (TP), істинно негативний (TN), хибно позитивний (FP) та хибно негативний (FN). "істинно" або "хибно" вказує, чи є передбачення правильним, а "позитивний" або "негативний" стосується того, чи є передбачений клас 1 або 0.

Це означає, що існує два типи помилок: хибно позитивні та хибно негативні. Хибно позитивне передбачення також відоме як помилка 1 типу, а хибно негативне передбачення — як помилка 2 типу.

вагітна

Матриця плутанини

Перший спосіб оцінити ефективність моделі — організувати передбачення у матрицю плутанини наступним чином:

ConfusionMatrix1

Створити матрицю плутанини у Python можна за допомогою функції confusion_matrix() з пакету sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

Для кращої візуалізації можна використати функцію heatmap() з бібліотеки seaborn:

sns.heatmap(conf_matrix)

Ось приклад обчислення матриці плутанини для прогнозу Random Forest на наборі даних Titanic:

12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred) sns.heatmap(conf_matrix, annot=True);

Можна також побудувати відсотки замість кількості екземплярів, використовуючи параметр normalize:

conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred, normalize='all') sns.heatmap(conf_matrix, annot=True);
question mark

Яке призначення матриці плутанини?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Матриця невідповідностей

Під час здійснення прогнозу для задачі бінарної класифікації існує лише чотири можливі результати:

ConfusionMatrix

На зображенні вище фактичні значення (істинні мітки) впорядковані зверху вниз у спадному порядку, а передбачені значення — зліва направо у зростаючому порядку. Це стандартне розташування, яке використовується у scikit-learn для відображення матриць плутанини.

Note
Примітка

Різні бібліотеки або візуалізації можуть використовувати інше розташування — наприклад, розміщувати фактичні значення на ось x, а передбачені значення на ось y. Однак різниця полягає лише в макеті; значення в матриці залишаються незмінними.

Ці результати називаються істинно позитивний (TP), істинно негативний (TN), хибно позитивний (FP) та хибно негативний (FN). "істинно" або "хибно" вказує, чи є передбачення правильним, а "позитивний" або "негативний" стосується того, чи є передбачений клас 1 або 0.

Це означає, що існує два типи помилок: хибно позитивні та хибно негативні. Хибно позитивне передбачення також відоме як помилка 1 типу, а хибно негативне передбачення — як помилка 2 типу.

вагітна

Матриця плутанини

Перший спосіб оцінити ефективність моделі — організувати передбачення у матрицю плутанини наступним чином:

ConfusionMatrix1

Створити матрицю плутанини у Python можна за допомогою функції confusion_matrix() з пакету sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

Для кращої візуалізації можна використати функцію heatmap() з бібліотеки seaborn:

sns.heatmap(conf_matrix)

Ось приклад обчислення матриці плутанини для прогнозу Random Forest на наборі даних Titanic:

12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred) sns.heatmap(conf_matrix, annot=True);

Можна також побудувати відсотки замість кількості екземплярів, використовуючи параметр normalize:

conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred, normalize='all') sns.heatmap(conf_matrix, annot=True);
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 1
some-alt