Chinaunix首页 | 论坛 | 博客
  • 博客访问: 361072
  • 博文数量: 273
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1430
  • 用 户 组: 普通用户
  • 注册时间: 2018-02-02 15:57
文章分类

全部博文(273)

文章存档

2018年(273)

我的朋友

分类: 大数据

2018-07-05 15:19:16

用python在kaggle上试了几个project,有点体会,记录下。

Step1: Exploratory Data Analysis

EDA,也就是对数据进行探索性的分析,一般就用到pandas和matplotlib就够了。EDA一般包括:

  1. 每个feature的意义,feature的类型,比较有用的代码如下
    df.describe()
    df['Category'].unique()
  2. 看是否存在missing value
    df.loc[df.Dates.isnull(),'Dates']
  3. 每个特征下的数据分布,可以用boxplot或者hist来看
    %matplotlib inline
    import matplotlib.pyplot as plt
    df.boxplot(column='Fare', by = 'Pclass')
    plt.hist(df['Fare'], bins = 10, range =(df['Fare'].min(),df['Fare'].max()))
    plt.title('Fare >distribution')
    plt.xlabel('Fare')
    plt.ylabel('Count of Passengers')
    #如果变量是categorical的,想看distribution,则可以:
    df.PdDistrict.value_counts().plot(kind='bar', figsize=(8,10))
  4. 如果想看几个feature之间的联立情况,则可以用pandas的groupby,
    temp = pd.crosstab([df.Pclass, df.Sex], df.Survived.astype(bool))
    temp.plot(kind='bar', stacked=True, color=['red','blue'], grid=False)

在这步完成之后,要对以下几点有大致了解

  • 理解每个特征的意义
  • 要知道哪些特征是有用的,这些特征哪些是直接可以用的,哪些需要经过变换才能用,为之后的特征工程做准备

Step2: Data Preprocessing

数据预处理,就是将数据处理下,为模型输入做准备,其中包括:

  • 处理missing value:这里学问有点深,如果各位有好的经验可以跟我交流下。以我浅薄的经验来说我一般会分情况处理
    1. 如果missing value占总体的比例非常小,那么直接填入平均值或者众数
    2. 如果missing value所占比例不算小也不算大,那么可以考虑它跟其他特征的关系,如果关系明显,那么直接根据其他特征填入;也可以建立简单的模型,比如线性回归,随机森林等。
    3. 如果missing value所占比例大,那么直接将miss value当做一种特殊的情况,另取一个值填入
  • 处理Outlier:这个就是之前EDA的作用了,通过画图,找出异常值
  • 处理categorical feature:一般就是通过dummy variable的方式解决,也叫one hot encode,可以通过pandas.get_dummies()或者 sklearn中preprocessing.OneHotEncoder(), 我个人倾向于用pandas的get_dummies()
    看个例子吧,


阅读(894) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~