Пользовательский KPI от Scikit-Learn Confusion Matrix UDF - PullRequest
0 голосов
/ 22 мая 2019

У меня есть сбалансированный набор данных, и я хотел бы использовать пользовательский KPI для оценки модели. Где KPI = TP / (FP + FN + TP). Как лучше вернуть пользовательскую функцию, а не вычислять этот пользовательский KPI из матриц путаницы?

#import pandas
import pandas as pd
col_names = ['pregnant', 'glucose', 'bp', 'skin', 'insulin', 'bmi', 'pedigree', 'age', 'label']
# load dataset
pima = pd.read_csv("pima-indians-diabetes.csv", header=None, names=col_names)

#split dataset in features and target variable
feature_cols = ['pregnant', 'insulin', 'bmi', 'age','glucose','bp','pedigree']
X = pima[feature_cols] # Features
y = pima.label # Target variable

# split X and y into training and testing sets
from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)

# import the class
from sklearn.linear_model import LogisticRegression
# instantiate the model (using the default parameters)
logreg = LogisticRegression()
# fit the model with data
logreg.fit(X_train,y_train)
y_pred=logreg.predict(X_test)

confusion_matrix(y_test, y_pred)

#############################
# Creating a custom KPI
#############################
test_TP_list = []
test_TN_list = []
test_FP_list = []
test_FN_list = []
test_KPI_list = []

cm = confusion_matrix(Y_test, Y_test_predict)
test_CM_list.append(cm)

#accumulate KPIs

TN = float(cm[0][0])
test_TN_list.append(TN)

FP = float(cm[0][1])
test_FP_list.append(FP)

FN = float(cm[1][0])
test_FN_list.append(FN)

TP = float(cm[1][1])
test_TP_list.append(TP)

#compute KPI
KPI = TP / (FP+FN+TP)
test_KPI_list.append(KPI)
#print('KPI: ', KPI)
...