Kaggle Titanic Competition-第一部分

作为一个kaggle的入门级玩家,首要的事情当然是读代码,熟悉库,模仿老玩家了。

首先要做的事情就是熟练掌握完成一项竞赛是怎样一个流程,以kaggle-titanic为例,进行初步学习。

文章翻自http://www.ultravioletanalytics.com/2014/10/30/kaggle-titanic-competition-part-i-intro/。由于本人能力有限,编写有不当之处,还请大家多多指正,大家共同学习!!!正文由下开始:

如果你没听说过kaggle,那么我现在来告诉你,这是一项数据科学的在线竞赛,竞赛问题来自企业以及其他一些机构在实际中所面临的难点或挑战,他们会提供相关数据集,以便于任何人都可以构造模型。或得最佳成绩的竞赛团队将被赋予极大的荣誉或利益,有的参赛者加入是为了学习提升,有的仅仅是兴趣使然,也有的是为了money。

目前有一项竞赛涉及到泰坦尼克号上的乘客数据,目的是预测哪种类型的乘客能够逃离沉船并获救与救生艇。这虽然只属于学习型的竞赛,但是由于学习样本较少,以及恐慌人群的随机性和杂乱性,这项竞赛还是很有挑战性的。

既然是学习中的挑战,那么相关可参考的解决方案将是我们极佳的起始点。官网提供的代码使用python中的scikit-learn库构造一个随机森林模型,然而,sclearn库可供我们应用于此并获得更佳预测结果的工具以及技术还有很多,且待我细细讲来。

首先,我们要学会基础中的基础–读取数据,以便于以后特征方面的工作,而这里就不得不提到pandas库了。

import pandas as pd

# read in the training and testing data into Pandas.DataFrame objects
input_df = pd.read_csv('data/raw/train.csv', header=0)
submit_df  = pd.read_csv('data/raw/test.csv',  header=0)

# merge the two DataFrames into one
df = pd.concat([input_df, submit_df])

# re-number the combined data set so there aren't duplicate indexes
df.reset_index(inplace=True)

# reset_index() generates a new column that we don't want, so let's get rid of it
df.drop('index', axis=1, inplace=True)

# the remaining columns need to be reindexed so we can access the first column at '0' instead of '1'
df = df.reindex_axis(input_df.columns, axis=1)

print df.shape[1], "columns:", df.columns.values
print "Row count:", df.shape[0]

这里注意一下:

1.将两个文件中的数据串接在一起原因在于:当我们在众多特征中进行特征工程的工作时,获取特征所有可能取值的范围以及这些值的分布是很有意义的。这个工作要求我们在数据处理工程中时刻记录训练数据和测试数据,但结果证明这件事并不是很难实现。

2.数据串接之后,我们要进行大量的dataframe(译者注:pandas实现中的一种数据结构,类似于普通的多维数组)维护工作。关于串接数据集,pandas的实现十分灵活,并且会要求少量的TLC(译者注:闪存),以确保在没有明确要舍弃的前提下不会丢失任何获取到的原始信息。

以上为第一部分,接下来有空会继续更新……

补:
从机器学习预测的角度讲关键有三点,这三点掌握后也可以很快速地通用到当前很多预测问题中,1.洗数据:保留数值变量,类别变量全都改成多列由0-1组成的哑变量,此时所有变量都是数值的了,然后剃除那些绝大多数值为NA或同一值的变量,然后把其余的NA用该列均值补齐。2.模型:针对非线性预测,目前从预测精度、稳健性、适用范围和速度都首选xgboost,原理上可以从机器学习中的决策树入门,然后参考Random Forest和Gradient Boosting Tree;技术上可以减小步长eta来更精细地逼近,减小每步分支选择变量的比例colsample_bylevel来增加子模型的多样性。3.交叉验证:把数据分成k份,每次训练模型时取一份做预测集,把其他k-1份粘起来做训练集,这样能够得到k个模型和k个验证结果,减小过拟合。最后平均来做预测提交

你可能感兴趣的:(pandas,Kaggle,ml,sci-learn)