美文网首页
数据预处理_数据相关性分析

数据预处理_数据相关性分析

作者: 南有妖尾 | 来源:发表于2020-04-22 19:19 被阅读0次

    相关性分析

    1、相关性分析是指对多个具备相关关系的变量进行分析,从而衡量变量间的相关程度或密切程度

    2、相关性可以应用到所有数据的分析过程中,任何事物之间都是存在一定的联系

    3、为了更准确描述变量之间的相关程度,通过计数相关系数来表示,在二元变量的相关分析中用相关系数(R)表示,而常用的有Pearson相关系数(皮尔逊相关系数) 和Spearman秩相关系数(斯皮尔曼相关系数)

    • 相关系数取值范围:-1≤R≤1,R>0为正相关表示两个变量的增长趋势相同,R<0为负相关表示两个变量的增长趋势相反
    • 相关性的强弱看相关系数R的绝对值。
      • |R|=0,不存在线性关系,|R|=-1,完全线性相关
      • |R|≤0.3,极弱线性相关或不存在线性相关
      • 0.3<|R|≤0.5,低度线性相关
      • 0.5≤|R|≤0.8,显著线性相关
      • |R|>0.8,高度线性相关
    # 设置cell多行输出
    
    from IPython.core.interactiveshell import InteractiveShell 
    InteractiveShell.ast_node_interactivity = 'all' #默认为'last'
    
    # 导入相关库
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    import os
    import warnings
    
    warnings.filterwarnings('ignore')
    os.chdir(r'E:\python_learn\data\python_book_v2\chapter3')
    
    file_name='data5.txt'
    data = pd.read_table(file_name,names=list('ABCDEFGHIJ'))
    data.head()
    

    Pearson相关系数 → data.corr(method='pearson')

    • pearson相关系数一般用于分析两个连续性变量之间的关系,且要求连续变量的取值服从正态分布。

    →pandas的corr()函数可以直接给出数据字段的相关系数矩阵,返各类型之间的相关系数DataFrame表格。

    • 参数说明:
      • method:可选值为{‘pearson’, ‘kendall’, ‘spearman’}
        • pearson:Pearson相关系数来衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性数据便会有误差。
        • kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正太分布的数据
        • spearman:非线性的,非正太分析的数据的相关系数
      • min_periods:样本最少的数据量
    # 此处假设数据服从正态分布
    
    # pearson相关系数矩阵
    pearson = round(data.corr(method='pearson',min_periods=1),2)   # method默认pearson
    pearson
    
    # 用色彩映射表现返回的相关性矩阵的相关性强弱
    pearson_abs = np.abs(pearson)
    pearson_abs.style.background_gradient(cmap='Blues',axis =1,low=0,high=1)
    # cmap:颜色
    # axis:映射参考,0为行,1以列
    
    # 用热力图可视化
    fig,ax = plt.subplots(1,1,figsize=(8,6))
    hot_img = ax.matshow(np.abs(pearson),vmin=0,vmax=1,cmap='Greens')
    # vmin=0,vmax=1  设置值域从0-1
    fig.colorbar(hot_img)  # 生成颜色渐变条(右侧)
    ax.set_title('热力图-Pearson相关性矩阵',fontsize=14,pad=12)
    ax.set_xticks(range(0,10,1))
    ax.set_yticks(range(0,10,1))
    ax.set_xticklabels(['x'+str(i) for i in range(len(pearson))],fontsize=12)
    ax.set_yticklabels(['x'+str(i) for i in range(len(pearson))],fontsize=12)
    

    Spearman秩相关系数 → data.corr(method='spearman')

    • 不服从正态分布的变量、分类或等级变量之间的关联性可采用Spearman秩相关系数来描述,因此Spearman秩相关系数又称为等级相关系数
    # Sperman秩相关系数矩阵
    spearman = round(data.corr(method='spearman'),2)
    spearman
    
    • 当数据变量之间的相关性较强的时,说明变量间可能存在共线性相关性,可以采取降维的处理方法,从原有的变量中提取部分特征代替原数据的所有特征。

    相关文章

      网友评论

          本文标题:数据预处理_数据相关性分析

          本文链接:https://www.haomeiwen.com/subject/czwwihtx.html