机器学习笔记01——数据EDA(探索性数据分析)入门

知识点

  1. 数据属性分布分析(概率密度分析/是否呈现正态分布)

  2. 数据属性与Target之间的相关性(correlation协方差:值域[-1,1],映射到余弦相似度cos距离)

  3. 缺失属性相关性分析--进行合理的填充

  4. 构造属性和构造属性的相关性分析


阶段 1

train2 = pd.read_csv('./train.csv')

01.相关函数

  1. pd.get_dummies 函数
    默认对category and object 进行one-hot 编码。也可以对指定列进行编码。eg:

    pd.get_dummies(train2,columns=['col']#指定列
    pd.get_dumnies(train2)
    
    
  2. train2.get_dtype_counts() 查看数据的类型统计

    float64     3
    int64      35
    object     43
    dtype: int64
    
  3. 统计数据每列为空的数据个数的统计

     tmp = train2.isnull().sum()
     tmp[tmp> 0]
    

    输出:

         LotFrontage      259
         Alley           1369
         MasVnrType         8
         MasVnrArea         8
         BsmtQual          37
         BsmtCond          37
         BsmtExposure      38
         BsmtFinType1      37
         BsmtFinType2      38
         Electrical         1
         FireplaceQu      690
         GarageType        81
         GarageYrBlt       81
         GarageFinish      81
         GarageQual        81
         GarageCond        81
         PoolQC          1453
         Fence           1179
         MiscFeature     1406
         dtype: int64
    

02.相关性(协方差矩阵推出的相关系数矩阵【Pearson correlation coefficient】)

值域:【-1,1】
|r| >= 0.95 显著关系 (显著的关系需要概率 该特征是否与目标有很强的关联关系)(报价和成交价,这样的话可能考虑去掉,否则影响判断)
|r| >= 0.8 强相关
|r| >= 0.5 中度相关
0.5 >=|r| >= 0.3 弱相关 (部分数据与该特征可能存在较强的相关性)(草率的 可以去掉,待挖掘)(楼房屋顶和顶楼的成交价)
|r| < 0.3 极弱相关 
  1. 获取相关系数矩阵

     train.corr()#相关系数矩阵
    
  2. 获取指定列的相关系数矩阵

     corr = train.corr()["SalePrice"]#与房价的标签 相关性
     corr[corr>0.5].sort_values()
     #corr[corr<0]
    
  3. 相关性可视化

     #导入包:
    
     import seaborn as sns
     import matplotlib.pyplot as plt
     %matplotlib inline #功能是可以内嵌绘图,并且可以省略掉plt.show()这一步
     
     #绘图
     plt.figure(figsize=(30,30))
     sns.heatmap(train2.corr(),linewidth=0.01,square=True,cmap='viridis',annot=True)
    

    输出:

下载.png
*seaborn.heatmap解析*     

```
seaborn.heatmap(
data,
vmin=None, 
vmax=None, 
cmap=None, 
center=None,
robust=False, 
annot=None, 
fmt='.2g', 
annot_kws=None, 
linewidths=0, 
linecolor='white', 
cbar=True, 
cbar_kws=None, 
cbar_ax=None, 
square=False, 
xticklabels='auto', 
yticklabels='auto',
mask=None, 
ax=None, 
**kwargs)
  ```
参数名称 描述 值域/示例
data 要显示的数据 ax=sns.heatmap(data)
vmin,vmax 显示数据值的最大和最小范围 ax=sns.heatmap(data,vmin=0,vmax=1
cmap matplotlib颜色表名称或对象,或颜色列表,可选从数据值到色彩空间的银蛇,如果没有提供,默认设置 ax = sns.heatmap(data,vmin=0, vmax=1, cmap = 'GnBu')
center 指定色彩的中心值 ax = sns.heatmap(data,vmin=0, vmax=1, cmap = 'GnBu', center=0.7)
annot 如果为True,则将数据值写入每个单元格中 ax = sns.heatmap(data,vmin=0, vmax=1, cmap = 'GnBu', center=0.5,robust=False,annot=True) #Set1
robust 如果“True”和“vmin”或者“vmax"不存在,则使用强分位数计算颜色映射范围,而不是极值 ax = sns.heatmap(data,vmin=0, vmax=1, cmap = 'GnBu', center=0.5, robust=False) #Set1
fmt 表格里显示数据的类型 fmt ='.0%'#显示百分比;fmt ='f' 显示完整数字 = fmt ='g';fmt ='.3'显示小数的位数 = fmt ='.3f' = fmt ='.3g'
annot_kws 未知 未知
linewidths 划分每个单元格的线条宽度 ** 0.01
linecolor 划分每个单元格的线的颜色 **
cbar 是否绘制颜色条:colorbar 默认绘制
square 为‘True’时,整个网格为一个正方形 True
xticklabels, yticklabels 可以以字符串进行命名,也可以调节编号的间隔,也可以不显示坐标 1)ax = sns.heatmap(uniform_data,cmap = 'RdBu', center=0,cbar = True, square=False,xticklabels =['12','22'])#字符串命名;2)ax = sns.heatmap(uniform_data,cmap = 'RdBu', center=0,cbar = True, square = False,xticklabels =2)#编号间隔为2;3)ax = sns.heatmap(uniform_data,cmap = 'RdBu', center=0,cbar = True, square = False,xticklabels =False)#不显示坐标
mask boolean array or DataFrame, optionalIf passed, data will not be shown in cells where mask is True. Cells with missing values are automatically masked. >>>mask = np.zeros_like(corr)>>>mask[np.triu_indices_from(mask)] = Truewith>>>sns.axes_style("white"):>>>ax = sns.heatmap(corr, mask=mask, vmax=.3, square=True)
示例代码:
        
        import numpy as np;
        np.random.seed(0)
        import seaborn as sns; sns.set()
        import matplotlib.pyplot as plt
        data = np.random.rand(10, 12)
        f, ax = plt.subplots(figsize=(8,5))
        ax = sns.heatmap(data,cmap = 'RdBu',ax=ax,vmin=0, vmax=1,annot=True,fmt ='0.1g')
        #设置坐标字体方向
        label_y = ax.get_yticklabels()
        plt.setp(label_y, rotation=45,          horizontalalignment='right')
        label_x = ax.get_xticklabels()
        plt.setp(label_x, rotation=45,          horizontalalignment='right')
        plt.xlabel('x.num')#设置坐标名称
        plt.ylabel('y.num')
        plt.title('Plotting')#标题
        plt.show()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容