数据挖掘-Datawhale学习笔记-01-数据分析EDA

    前言: 数据挖掘小白一个,之前也被师兄带着参加过一次数据竞赛,但是多半在划水,对于一个数据挖掘流程还不是特别清晰,通过Datawhale的系统学习,希望可以学到完成的解题流程,为下次比赛打基础。
    学习题目:天池-二手车价格预测
    https://tianchi.aliyun.com/competition/entrance/231784/information
    数据挖掘-数据分析EDA
    https://tianchi.aliyun.com/notebook-ai/detail?postId=95457
    强烈推荐-小白入门学习:
    https://blog.csdn.net/Koala_Tree/article/details/78725881

数据探索性分析EDA
通过探索性分析,寻找变量与变量,变量与预测值之间的一些关系分布,为特征工程及后续处理做准备。
具体流程包括:

1.载入各种数据科学以及可视化库:
数据科学库 pandas、numpy、scipy;
可视化库 matplotlib、seabon;
其他;

2.载入数据:
载入训练集和测试集;
简略观察数据(head()+shape);

3.数据总览:
通过describe()来熟悉数据的相关统计量
通过info()来熟悉数据类型

4.判断数据缺失和异常
查看每列的存在nan情况
异常值检测
value_counts()查看类别统计

5.了解预测值的分布
总体分布概况(无界约翰逊分布等)
查看skewness and kurtosis
查看预测值的具体频数

6.特征分为类别特征和数字特征,并对类别特征查看unique分布

7.数字特征分析
相关性分析
查看几个特征得 偏度和峰值
每个数字特征得分布可视化
数字特征相互之间的关系可视化
多变量互相回归关系可视化

8.类型特征分析
unique分布
类别特征箱形图可视化
类别特征的小提琴图可视化
类别特征的柱形图可视化类别
特征的每个类别频数可视化(count_plot)

9…用pandas_profiling生成数据报告

数据探索的意义
数据探索有利于我们发现数据的一些特性,数据之间的关联性,对于后续的特征构建是很有帮助的。

1.对于数据的初步分析(直接查看数据,或.sum(), .mean(),.descirbe()等统计函数)可以从:样本数量,训练集数量,是否有时间特征,是否是时序问题,特征所表示的含义(非匿名特征),特征类型(字符类似,int,float,time),特征的缺失情况(注意缺失的在数据中的表现形式,有些是空的有些是”NAN”,“–”符号等),特征的均值方差情况。

2.分析记录某些特征值缺占比30%以上样本的缺失处理,有助于后续的模型验证和调节,分析特征应该是填充(填充方式是什么,均值填充,0填充,众数填充等),还是舍去,还是先做样本分类用不同的特征模型去预测。

3.对于异常值做专门的分析,分析特征异常的label是否为异常值(或者偏离均值较远或者事特殊符号),异常值是否应该剔除,还是用正常值填充,是记录异常,还是机器本身异常等。

4.对于Label做专门的分析,分析标签的分布情况等。

5.进步分析可以通过对特征作图,特征和label联合做图(统计图,离散图),直观了解特征的分布情况,通过这一步也可以发现数据之中的一些异常值等,通过箱型图分析一些特征值的偏离情况,对于特征和特征联合作图,对于特征和label联合作图,分析其中的一些关联性。

#######################
#######################
#######################先填一些之前的干货
1.对于缺失值的处理方式
h在这里插入图片描述
还有的kaggle比赛也常用随机森林模型填补缺失值。

def set_missing_ages(df):

    # 把已有的数值型特征取出来丢进Random Forest Regressor中
    age_df = df[['Age','Fare', 'Parch', 'SibSp', 'Pclass']]

    # 乘客分成已知年龄和未知年龄两部分
    known_age = age_df[age_df.Age.notnull()].as_matrix()
    unknown_age = age_df[age_df.Age.isnull()].as_matrix()

    # y即目标年龄
    y = known_age[:, 0]

    # X即特征属性值
    X = known_age[:, 1:]

    # fit到RandomForestRegressor之中
    rfr = RandomForestRegressor(random_state=0, n_estimators=2000, n_jobs=-1)
    rfr.fit(X, y)

    # 用得到的模型进行未知年龄结果预测
    predictedAges = rfr.predict(unknown_age[:, 1:])
#     print predictedAges
    # 用得到的预测结果填补原缺失数据
    df.loc[ (df.Age.isnull()), 'Age' ] = predictedAges 

    return df, rfr

2.对异常值的识别
四分图法,3σ原则
参考: https://cloud.tencent.com/developer/article/1429994

补充
3.对于类别特征与数字特征分析
类别:
通过unique查看种类,
value_counts()查看类别统计 (可能会发现极不均匀分布等异常情况)
数字:
分析特征与预测变量相关性
数字特征分布可视化
查看特征间相关性

##首先将类别特征类型改为object
#将类别特征与数字特征分开
#数字特征
numeric_features = Train_data.select_dtypes(include=[np.number])
numeric_features.columns
# # 类型特征
categorical_features = Train_data.select_dtypes(include=[np.object]) 
categorical_features.columns


#查看类别特征统计分布
for cat_fea in categorical_features:
    print(cat_fea + "的特征分布如下:")
    print("{}特征有个{}不同的值".format(cat_fea, Train_data[cat_fea].nunique()))
    print(Train_data[cat_fea].value_counts())


#数字特征分析
## 1) 相关性分析
#即分析特征变量与预测变量之间相关性,这里变量为price
price_numeric = Train_data[numeric_features]
correlation = price_numeric.corr()
print(correlation['price'].sort_values(ascending = False),'\n')

f , ax = plt.subplots(figsize = (7, 7))
plt.title('Correlation of Numeric Features with Price',y=1,size=16)
sns.heatmap(correlation,square = True,  vmax=0.8)

## 2) 数字特征得分布可视化
f = pd.melt(Train_data, value_vars=numeric_features)
g = sns.FacetGrid(f, col="variable",  col_wrap=2, sharex=False, sharey=False)
g = g.map(sns.distplot, "value")

## 3) 数字特征相互之间的关系可视化
sns.set()
columns = numeric_features
sns.pairplot(Train_data[columns],size = 2 ,kind ='scatter',diag_kind='kde')
plt.show()

可视化学习参考:
https://www.jianshu.com/p/6e18d21a4cad¶
缺失值处理参考:
https://segmentfault.com/a/1190000015801384

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值