【发布时间】:2018-04-16 16:17:46
【问题描述】:
在flight delay dataset 的一个版本上使用scikit-learn 中的LogisticRegression 类。
我使用pandas 选择一些列:
df = df[["MONTH", "DAY_OF_MONTH", "DAY_OF_WEEK", "ORIGIN", "DEST", "CRS_DEP_TIME", "ARR_DEL15"]]
我将NaN的值填为0:
df = df.fillna({'ARR_DEL15': 0})
确保分类列标有“类别”数据类型:
df["ORIGIN"] = df["ORIGIN"].astype('category')
df["DEST"] = df["DEST"].astype('category')
然后从pandas调用get_dummies():
df = pd.get_dummies(df)
现在我训练和测试我的数据集:
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)
一旦我调用 score 方法,我得到的结果约为 0.867。但是,当我调用 roc_auc_score 方法时,我得到的数字要低得多,约为 0.583
probabilities = lr.predict_proba(test_set_x)
roc_auc_score(test_set_y, probabilities[:, 1])
ROC AUC 远低于score 方法提供的值有什么原因吗?
【问题讨论】:
标签: machine-learning scikit-learn classification logistic-regression auc