TP, FP, TN, FN собираются в одну таблицу — матрицу ошибок, или матрицу неточностей. По главной диагонали (от верхнего левого угла) выстроены правильные прогнозы:TN в левом верхнем углу;
TP в правом нижнем углу.
Вне главной диагонали — ошибочные варианты:FP в правом верхнем углу;
FN в левом нижнем углу.
Рассчитаем матрицу ошибок функцией confusion_matrix().
import pandas as pd
from sklearn.metrics import confusion_matrix
target = pd.Series([1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1])
predictions = pd.Series([1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1])
print(confusion_matrix(target, predictions))
Построим матрицу ошибок для решающего дерева.
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
data = pd.read_csv('/datasets/travel_insurance_preprocessed.csv')
target = data['Claim']
features = data.drop('Claim', axis=1)
features_train, features_valid, target_train, target_valid = train_test_split(
features, target, test_size=0.25, random_state=12345)
model = DecisionTreeClassifier(random_state=12345)
model.fit(features_train, target_train)
predicted_valid = model.predict(features_valid)
print(confusion_matrix(target_valid, predicted_valid))
Матрица ошибок поможет построить новые метрики. Recall - полнота, выявляет, какую долю положительных среди всех ответов выделила модель.
Рассмотрим на примере. Применим функцию, которая отвечает за вычисление полноты.
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import recall_score
data = pd.read_csv('/datasets/travel_insurance_preprocessed.csv')
target = data['Claim']
features = data.drop('Claim', axis=1)
features_train, features_valid, target_train, target_valid = train_test_split(
features, target, test_size=0.25, random_state=12345)
model = DecisionTreeClassifier(random_state=12345)
model.fit(features_train, target_train)
predicted_valid = model.predict(features_valid)
recall_score(target_valid, predicted_valid)
print(recall_score(target_valid, predicted_valid))
Ещё одна метрика для оценки качества прогноза целевого класса — точность precision. Применим функцию, которая отвечает за вычисление точности.
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import precision_score
data = pd.read_csv('/datasets/travel_insurance_preprocessed.csv')
target = data['Claim']
features = data.drop('Claim', axis=1)
features_train, features_valid, target_train, target_valid = train_test_split(
features, target, test_size=0.25, random_state=12345)
model = DecisionTreeClassifier(random_state=12345)
model.fit(features_train, target_train)
predicted_valid = model.predict(features_valid)
print(precision_score(target_valid, predicted_valid))