李宏毅机器学习2020课后作业笔记 【hw2】 收入分类

李宏毅机器学习2020课后作业 ML2020spring - hw2

1. 问题描述

判断收入是否超过50000,数据集有一些特征,比如说教育背景、出生地之类,是一个二分类的问题,数据集来源Census-Income (KDD) Dataset 本来是有train.csv, test_no_label.csv,但是助教已经帮忙做好了one-hot编码,所以我们拿到的数据是X_train, Y_train, X_test,感觉一下子就简单了不少。没处理前的数据大概长这样。
在这里插入图片描述

2. 数据预处理

如果是离散特征就用one hot编码排到后面去拼起来,如果是连续的数值,就不用动它
在这里插入图片描述

  1. 首先,分别标准化一下,标准化函数如下,可以在分母上加一个eps避免除0
# 标准化,大多做预处理都会做这一步的
def _normalize(X, train = True, specified_column = None, X_mean = None, X_std = None):
    if specified_column == None:
        specified_column = np.arange(X.shape[1])
#         print(specified_column)
        # 0 - 509 去掉了第一列id
    if train:
        # np.mean(x, axis=0) 列求平均值,reshape(1, -1)拉成一行
        X_mean = np.mean(X[:, specified_column], 0).reshape(1, -1)
        X_std = np.std(X[:, specified_column], 0).reshape(1, -1)
    # (54256, 510) = (54256, 510) - (1, 510) / (1, 510)
    # 利用了广播的机制
    X[:, specified_column] = (X[:, specified_column] - X_mean) / (X_std + 1e-8)
    
    return X, X_mean, X_std

这里不要用循环,不然计算超级慢,用广播机制。

X_train,</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值