Datawhale 算法实践第2期 Task 2 - 模型评估

任务描述

记录7个模型(逻辑回归、SVM、决策树、随机森林、GBDT、XGBoost和LightGBM)关于accuracy、precision,recall和F1-score、auc值的评分表格,并画出Roc曲线。

1. 代码优化 - 数据集加载

由于train_test_split 支持输入为Dataframes格式的数据。所以对于数据的读取代码,建议修正如下:(比较简洁)

data = pd.read_csv("data_all.csv")
# train_test_split支持dataframes格式的数据, 无需将数据转为矩阵
X = data.drop(labels=["status"], axis=1)
y = data[["status"]]

略冗余的代码用到了以下方法:

.values.ravel()、.values 或 .as_matrix()

2. 数据未归一化情况下,LR和SVM求出的precision和recall为0?

@007 同学写的很有道理,可参照一下他的博客:
“如果你不用正则,那么,标准化并不是必须的,如果你用正则,那么标准化是必须的。”(LogisticRegression的默认参数是使用C=1.0, penalty=‘l2’)

因为不用正则时,我们的损失函数只是仅仅在度量预测与真实的差距,加上正则后,我们的损失函数除了要度量上面的差距外,还要度量参数值是否足够小。而参数值的大小程度或者说大小的级别是与特征的数值范围相关的。

此外,测试了一下,如果选用L2正则化,无论惩罚因子C的取值如何变化,最终的precision和recall仍为0。选用L1正则时,precision和recall不为0(或许是因为L1正则只是对系数取绝对值&

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值