Obteniendo un bajo puntaje ROC AUC pero una alta precisión
Usando unLogisticRegression
clase enscikit-learn
en una versión de laconjunto de datos de retraso de vuelo.
yo suelopandas
para seleccionar algunas columnas:
df = df[["MONTH", "DAY_OF_MONTH", "DAY_OF_WEEK", "ORIGIN", "DEST", "CRS_DEP_TIME", "ARR_DEL15"]]
Yo completoNaN
valores con 0:
df = df.fillna({'ARR_DEL15': 0})
Asegúrese de que las columnas categóricas estén marcadas con el tipo de datos 'categoría':
df["ORIGIN"] = df["ORIGIN"].astype('category')
df["DEST"] = df["DEST"].astype('category')
Luego llameget_dummies()
depandas
:
df = pd.get_dummies(df)
Ahora entreno y pruebo mi conjunto de datos:
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
test_set, train_set = train_test_split(df, test_size=0.2, random_state=42)
train_set_x = train_set.drop('ARR_DEL15', axis=1)
train_set_y = train_set["ARR_DEL15"]
test_set_x = test_set.drop('ARR_DEL15', axis=1)
test_set_y = test_set["ARR_DEL15"]
lr.fit(train_set_x, train_set_y)
Una vez que llame alscore
método obtengo alrededor de 0,867. Sin embargo, cuando llamo alroc_auc_score
método obtengo un número mucho menor de alrededor de 0.583
probabilities = lr.predict_proba(test_set_x)
roc_auc_score(test_set_y, probabilities[:, 1])
¿Hay alguna razón por la cual el AUC ROC es mucho más bajo de lo quescore
método proporciona?