在行动之前通过可视化等方式看一下数据概貌,是Andrew Ng等人多次提到的想法,在一些工业界的竞赛过程中,一些参赛选手也通常会这样做。如果能够想到线性可分和不可分的问题,这样做的原因应该就不用多说了。拿到数据之后,小孩只会上模型,大人才会做数据概貌(我曾经是小孩,现在大小孩)。

groot项目刚发起,详细的介绍估计会在寒假之后。

轻量型文本的处理,选择pandas库,pandas中有两种数据结构支持,分别是DataFrame和Series,对应矩阵和列表。可视化的问题,选择matplotlib库。实际上,虽然不同的库有不同的数据结构支持,但是围绕矩阵和列表,通常都会找到对应的实现。比如在OpenCV,Eigen,Numpy,Matlab中等。

先看代码(数据来源groot):

import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('train.csv')
data.describe()

结果如下:

desc

显示结果打印了每一个属性(id,value0,…,value616)所有样本值得均值,标准方差,四分位数(min,25%,50%,75%,max)。

四分位数:对于一个列表,将数据按照从小到大进行排序。然后划分为四段,打印出每段两个端点值。

当然要看每个属性所有样本值的分布情况了:

plt.scatter(data['id'],data['value0']) | plt.show()

plot

上图显示了属性value0对应的所有值的分布。

几个问题:

  • describe()函数在得出三种统计值的时候,排除了NaN(Not a Number),实际问题中,需要先进行数据预处理,怎么能轻易的放过NaN呢?

  • 注意绘图结果的坐标刻度,比如上图中的横纵坐标。