Матриця невідповідностей
Свайпніть щоб показати меню
Під час здійснення прогнозу для задачі бінарної класифікації існує лише чотири можливі результати:
На зображенні вище фактичні значення (істинні мітки) впорядковані зверху вниз у спадному порядку, а передбачені значення — зліва направо у зростаючому порядку. Це стандартне розташування, яке використовується у scikit-learn для відображення матриць плутанини.
Різні бібліотеки або візуалізації можуть використовувати інше розташування — наприклад, розміщувати фактичні значення на ось x, а передбачені значення на ось y. Однак різниця полягає лише в макеті; значення в матриці залишаються незмінними.
Ці результати називаються істинно позитивний (TP), істинно негативний (TN), хибно позитивний (FP) та хибно негативний (FN). "істинно" або "хибно" вказує, чи є передбачення правильним, а "позитивний" або "негативний" стосується того, чи є передбачений клас 1 або 0.
Це означає, що існує два типи помилок: хибно позитивні та хибно негативні. Хибно позитивне передбачення також відоме як помилка 1 типу, а хибно негативне передбачення — як помилка 2 типу.
Матриця плутанини
Перший спосіб оцінити ефективність моделі — організувати передбачення у матрицю плутанини наступним чином:
Створити матрицю плутанини у 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:
12345678910111213141516import 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')
12345678910111213141516import 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);
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Матриця невідповідностей
Під час здійснення прогнозу для задачі бінарної класифікації існує лише чотири можливі результати:
На зображенні вище фактичні значення (істинні мітки) впорядковані зверху вниз у спадному порядку, а передбачені значення — зліва направо у зростаючому порядку. Це стандартне розташування, яке використовується у scikit-learn для відображення матриць плутанини.
Різні бібліотеки або візуалізації можуть використовувати інше розташування — наприклад, розміщувати фактичні значення на ось x, а передбачені значення на ось y. Однак різниця полягає лише в макеті; значення в матриці залишаються незмінними.
Ці результати називаються істинно позитивний (TP), істинно негативний (TN), хибно позитивний (FP) та хибно негативний (FN). "істинно" або "хибно" вказує, чи є передбачення правильним, а "позитивний" або "негативний" стосується того, чи є передбачений клас 1 або 0.
Це означає, що існує два типи помилок: хибно позитивні та хибно негативні. Хибно позитивне передбачення також відоме як помилка 1 типу, а хибно негативне передбачення — як помилка 2 типу.
Матриця плутанини
Перший спосіб оцінити ефективність моделі — організувати передбачення у матрицю плутанини наступним чином:
Створити матрицю плутанини у 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:
12345678910111213141516import 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')
12345678910111213141516import 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);
Дякуємо за ваш відгук!