李宏毅机器学习中文课程作业二:预测赢家还是输家

一、作业要求

给定训练集spam_train.csv,要求根据每个ID各种属性值来判断该ID对应角色是Winner还是Losser(收入是否大于50K),这是一个典型的二分类问题。
训练集介绍:

  1. CSV文件,大小为4000行X59列;
  2. 4000行数据对应着4000个角色,ID编号从1到4001;
  3. 59列数据中, 第一列为角色ID,最后一列为分类结果,即label(0、1两种),中间的57列为角色对应的57种属性值;

二、思路分析及代码实现

思路分析:

这是一个典型的二分类问题,结合课上所学内容,决定采用Logistic回归算法。
与线性回归用于预测不同,Logistic回归则常用于分类(通常是二分类问题)。Logistic回归实质上就是在普通的线性回归后面加上了一个sigmoid函数,把线性回归预测到的数值压缩成为一个概率,进而实现二分类(关于线性回归模型,可参考上一次作业)。
在损失函数方面,Logistic回归并没有使用传统的欧式距离来度量误差,而使用了交叉熵(用于衡量两个概率分布之间的相似程度)。

代码实现:

具体原理可参考:传送门

1. 数据预处理
读入文件,先将最后两列进行归一化操作。然后将文件分为训练集和验证集,并分布保存为python文件,方便调用。
李宏毅机器学习中文课程作业二:预测赢家还是输家_第1张图片

2. 训练
定义激活函数sigmoid和损失函数compute_loss。
李宏毅机器学习中文课程作业二:预测赢家还是输家_第2张图片
开始利用梯度下降法进行训练,并每隔三轮验证一下训练集的预测精度。
李宏毅机器学习中文课程作业二:预测赢家还是输家_第3张图片
李宏毅机器学习中文课程作业二:预测赢家还是输家_第4张图片
输出训练结果。
李宏毅机器学习中文课程作业二:预测赢家还是输家_第5张图片
3. 预测
利用训练结果进行预测。
李宏毅机器学习中文课程作业二:预测赢家还是输家_第6张图片
数据集和代码见:代码地址

你可能感兴趣的:(机器学习)