Homework1-classification model on Titanic survival data(6.9update)

本文记录了一位学生基于Kaggle Titanic数据集使用Python实现逻辑回归模型的过程,包括批量和随机梯度下降的实现,数据预处理,特征工程,以及在Pycharm中提高开发效率的探讨。
摘要由CSDN通过智能技术生成

昨天B老师给我布置了第一个作业,基于kaggle上经典的titanic生存数据做分类模型。

要求

data:https://www.kaggle.com/c/titanic
要求:
1. 用python脚本实现一个简单的逻辑回归,模型学习过程需要自己实现。
2. 记录模型学习的过程,绘制学习曲线、准确率曲线
3. 可以参考别人的作业

5.26

  1. 了解了一下线性回归的批量梯度下降:
    https://www.cnblogs.com/wallacup/p/6017378.html
  2. 学习一下python常用数据统计包:numpy/pandas
    https://morvanzhou.github.io

6.3

  1. 利用周末两天的时间封闭写作业
  2. 结果:
    1. 用网上的case数据集实现了逻辑回归的批量/随机梯度下降求解函数定义
    2. 利用pandas、numpy包对Titanic的training set进行描述性统计(统计量计算、scatter plot)、数据预处理(缺失值处理、特征工程)
    3. 没有找到将pandas特征处理过后的数据集转换成自建函数input数据格式(array/list)的方法,因此没有将处理后的数据集放到自定义函数中实现模型计算。Simon:【方法1】dataframe直接转input list;【方法2】dataframe转csv转input
    4. cross validation 和 learning curve 还未开始写
  3. 问题:
    1. 花了较多时间在理解和推导逻辑回归的梯度下降的vectorization(向量化,看书时能看懂,但编程时发现有特殊处理。同理,其他算法是否可以有显示的向量化结果,不然求和求导会爆炸?) Simon:向量化过程是基础能力,处理的模型多了自然能一眼看出向量化的方法,尤其是运用TensorFlow的过程中,都需要向量化处理。
    2. 花了较多时间在学习pandas、numpy的数据处理函数(矩阵运算、基于dataframe的数据透视和处理),处理数据特性(边查边看边学边写)
    3. 花了较多时间适应pycharm的开发和调试环境,不知道自己的调试方式是否正确,开发效率较低(在R中每次运行的结果会保存,在pycharm中每次运行不生成特定的解释器,无法继续基于上次开发的结果进行编译,每次都要重新来= =)Simon:可以在ipython中的python interpreter中直接编写,通过history命令整理代码。
  4. Action:请教一下专业的算法同学,看一下实际数据处理过程一般是以哪种数据格式进行存储(数据预处理、建模),如何在pycharm中提高开发效率?Simon:要有这种思维:将数据预处理/特征工程 和 建模 的过程分开对待。数据预处理过程如果数据量小可以在pandas中实现,如果数据量大,在线上通过sql实现。而建模过程和数据预处理是独立的。

贴一下这两天的劳动成果

logistics regression的gd、sgd


from numpy import *
import matplotlib.pyplot as plt
import time

def loadtrainingata():
    train_x = []
    train_y = []
    fileIn = open(r'D:\ML\h1_Tianic\testset.txt')
    for line in fileIn.readlines():
        lineArr = line.strip().split()
        train_x.append([1.0, float(lineArr[0]), float(lineArr[1])])
        train_y.append(float(lineArr[2]))
    return mat(train_x), mat(train_y).transpose()

#Sigmod Function
def sigmoid(inX):
    return 1.0 / (1 + exp(-inX))

#Logistic Regression
def trainLogicReg(train_x, train_y, opts):
    # calculate training time
    startTime = time.time()
    # train_x= mat(train_x)

    numSamples, numFeatures = shape
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值