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

相关性分析

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

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

3、为了更准确描述变量之间的相关程度,通过计数相关系数来表示,在二元变量的相关分析中用相关系数®表示,而常用的有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()
ABCDEFGHIJ
097.45691.563177.474635.6125489.3572641.03250230.851485455.451485172.77812.46
1101.76920.3615768.013708.48280681.4430220.986397722.85572076.30571978.861185.68
298.21894.768824.036182.0678489.5753157.321615678.851057980.511058386.64894.41
398.79694.0012996.112672.9466489.3711927.441028936.04109382.9760690.05995.97
498.56702.4511696.534707.07154598.0922076.093363655.63405832.86118129.15908.55

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
ABCDEFGHIJ
A1.00-0.040.27-0.050.21-0.050.19-0.03-0.020.95
B-0.041.00-0.010.73-0.010.620.000.480.51-0.04
C0.27-0.011.00-0.010.72-0.000.650.010.020.28
D-0.050.73-0.011.000.010.880.010.700.72-0.05
E0.21-0.010.720.011.000.020.910.030.030.21
F-0.050.62-0.000.880.021.000.030.830.82-0.05
G0.190.000.650.010.910.031.000.030.030.18
H-0.030.480.010.700.030.830.031.000.71-0.04
I-0.020.510.020.720.030.820.030.711.00-0.02
J0.95-0.040.28-0.050.21-0.050.18-0.04-0.021.00
# 用色彩映射表现返回的相关性矩阵的相关性强弱
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
ABCDEFGHIJ
A1.000.110.300.010.20-0.010.18-0.03-0.030.94
B0.111.000.030.780.030.690.020.540.580.10
C0.300.031.000.010.740.020.700.030.020.32
D0.010.780.011.000.030.920.020.760.77-0.00
E0.200.030.740.031.000.040.950.040.030.20
F-0.010.690.020.920.041.000.030.840.84-0.02
G0.180.020.700.020.950.031.000.030.020.18
H-0.030.540.030.760.040.840.031.000.72-0.05
I-0.030.580.020.770.030.840.020.721.00-0.03
J0.940.100.32-0.000.20-0.020.18-0.05-0.031.00
# 用热力图可视化
fig,ax = plt.subplots(1,1,figsize=(8,6))
hot_img = ax.matshow(np.abs(spearman),vmin=0,vmax=1,cmap='Reds')
# vmin=0,vmax=1  设置值域从0-1
fig.colorbar(hot_img)  # 生成颜色渐变条(右侧)
ax.set_title('热力图-Pearman相关性矩阵',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(spearman))],fontsize=12)
ax.set_yticklabels(['x'+str(i) for i in range(len(spearman))],fontsize=12)

在这里插入图片描述

  • 当数据变量之间的相关性较强的时,说明变量间可能存在共线性相关性,可以采取降维的处理方法,从原有的变量中提取部分特征代替原数据的所有特征。
  • 14
    点赞
  • 205
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值