网上的例子:
https://github.com/donnemartin/data-science-ipython-notebooks/blob/master/kaggle/titanic.ipynb
作为一个data mining的雏,这两天试了试kaggle上面的beginner competition,就是著名的泰坦尼克幸存分析,我遇到的主要的问题就是如何处理缺失数据
按照常识在使用scikit-learn处理数据之前,都要把文字数据转变成数字,否则无法使用core function计算
在这个例子中,自然是做classification,所以呢不可能把文字转换成字典映射数字,因为诸如性别男女,客舱等级,上船码头都是categorical的数据,所以特别容易转换成integer
转换的方法也很简单,pandas可以方便的将一个column的类型转换成category,然后再用与category index相同长度的自然数升序数组来rename_categories
另外一种方法是得到这个column的unique值,然后用dict(zip(unique vales,range(0,len(unique values)+1)得到自然数升序数组和unique值之间的映射,然后再用pandas的map函数将自然数一一对应的添加到dataframe里
说道处理缺失的数据,scikit有个module叫imputer,sklearn.Imputer,推算者,推算子,直接将nan或者为0的数据用mean或者median或者最常出现的数据代替
而我看到网上一个例子是没有使用imputer,而是在自己对数据进行初步的直观分析后,在每个groupby里各自使用该group中的median进行替代
接下来就该使用回归方法(linear_model)或者分类方法(classification)来通过X建立关系式,然后预测测试值,最后评估模型的预测正确率
网上的例子使用random forest,我使用的是DecisionTree,在使用我的相对比较简单的预处理数据的情况下他得到了79%的正确率,而我只得到了77%,我还是这用logisticregression和svm结果非常不理想啊,至于为什么还没有研究
我还没有尝试使用它的groupby+median的数据预处理方法,例子给出的结果是83%的正确率
评估结果的module叫metric,他能通过比较预测得到的Y_test和真实值Y_true得到一个score来反映正确率,当然还有其他函数能给出更详细的比较结果