matplotlib绘制关联图

相关性矩阵图

相关性矩阵存在的必要性

相关性矩阵,又叫做热力图,是关联图中最重要的一张图像,它能够为我们展现多个变量凉凉之间的相关性。

惯量图的目标是探索两个事件之间的关系,它为我们展示出一个事物随着另一事物的变化如何变化,但我们之前描述的关联图,折线图或散点图都只能够分析两个变量之间的相关性。在实际统计学和机器学习应用当中,我们往往需要探求多个变量两两之间的相关性。

一个最典型的例子是:在统计建模中,能够使用最小二乘法求解线性回归模型的充分必要条件是特征之间没有相关性(在统计学当中标准的术语应该叫做共线性),否则模型就会出现偏移,因此我们往往要先探索相关性,排除相关性,然后再建模。

要探求众多变量两两之间的相关性,我们不太可能对每一组变量都绘制散点图,这样的非常低效。

除此之外,即便我们绘制出了图像,我们也无法判断出相关性的强弱,即如果相关,那到底有多相关?

所以我们要选择更加有效也更加直接的方式:

  • 1、引入衡量相关性的数学指标:相关系数(Correlation Coefficient)

    相关系数是某种类型相关性等额数值度量,通常是有界的数字。最为人所知的就是皮尔逊相关系数,这个系数在-1~1之间波动,0表示完全无关,1表示完全正相关,-1表示完全负相关。

  • 2、绘制相关系数矩阵图,一次性查看所有变量两两之间的相关性

    这就是本节要绘制的图像。这张图实际是相关性矩阵和热力图一起构建,热力图(heapmap)就是用颜色深浅来表示数值大小的图像

matplotlib绘制关联图

横坐标是:一个数据集中的所有变量(可能包括特征或标签)

纵坐标:一个数据集中的所有变量(可能包括特征或标签)

颜色:颜色越接近红和绿,相关性越强,绿色代表正相关,红色代表负相关,浅黄色代表不想关系

1、导入需要的绘图库&导入数据

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns

large = 22; med = 16; small = 12
params = {'axes.titlesize': large,
          'legend.fontsize': med,
          'figure.figsize': (16, 10),
          'axes.labelsize': med,
          'axes.titlesize': med,
          'xtick.labelsize': med,
          'ytick.labelsize': med,
          'figure.titlesize': large}
plt.rcParams.update(params)
plt.style.use('seaborn-whitegrid')
sns.set_style("white")
%matplotlib inline

df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mtcars.csv")

name = ["英里/加仑","气缸数量","排量","总马力","驱动轴比","重量"
        ,"1/4英里所用时间","引擎","变速器","前进档数","化油器数量","用油是否高效"
        ,"汽车","汽车名称"]

df.columns = name


(df["汽车"] != df["汽车名称"]).sum()

3、先实现相关性矩阵,再实现热力图

df.corr():实现相关性矩阵

参数method:填写相关系数类型的参数,可以选择”Pearson”,”kendall”,”spearman”。

什么时候用相关系数?变量相关时:

分类型变量vs分类型变量分类型变量vs连续型变量连续型变量vs连续型变量列联表分析,卡方检验(Chi-squared)二分类:点双列相关(皮尔逊相关系数的一种特殊情况);多分类:Kruskal-Wallis H检验(如t检验或方差分析)线性相关:皮尔逊相关系数 ;非线性相关:以斯皮尔曼相关系数为代表的一系列等级相关系数

比较特别的是kendall这个相关系数,它对比的是两个变量按数量排序时(从小到大,或者从大到小),数据排序的相似性。其他相关系数,可以在scipy,numpy库中找到(百度和谷歌将会是你的好帮手)

sns.heatmap:把相关性矩阵放到热力图里去

参数:

data:输入的相关性矩阵

cmap:使用的光谱

center:绘制有色数据时,位于光谱中心的颜色所对应的值,注意:则一定是一个控制颜色的参数。如果没有指定cmap,使用此参数将更改默认的cmap参数。因此,我们一般在center中填写0。

annot:如果为True,则在热力图的每个单元格中写入数据值。如果时一个类似于data形状的数组,那么使用它来注释恶徒而不是原始数据。


plt.rcParams['font.sans-serif']=['Simhei']
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(12,10), dpi= 70)
sns.heatmap(df.corr()
            , xticklabels=coef.columns
            , yticklabels=coef.columns
            , cmap='RdYlGn'

            , center=0

            , annot=True
           )

plt.title('mtcars数据集的相关性矩阵', fontsize=22)
plt.xticks(fontsize=12
           ,rotation=45
           ,horizontalalignment='right'
          )
plt.yticks(fontsize=12)
plt.show()

matplotlib绘制关联图

成对分析图

成对分析图是以图像形式分析多个变量之间相关性的图像,是矩阵图的具象化。

如我们前面提及的,我们可以使用散点图,或者带最佳拟合的散点图来描述变量两两之间的关系。当我们有着探索多个特征两两之间关系的需求时,——绘制图像的效率比较地下,因此我们才引入成对分析图,一种类矩阵的而绘图那个是,一次性绘制出所有特征之间的相关性图像。

成对分析图的横坐标是所有特征,纵坐标也是所有特征。 横坐标为不同的特征时,显示两个特征之间的相关性图像,当横纵坐标为同一个特征时,显示这个特征自身的分布图。

1、导入需要的绘图库

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import warnings; warnings.filterwarnings(action='once')

large = 22; med = 16; small = 12
params = {'axes.titlesize': large,
          'legend.fontsize': med,
          'figure.figsize': (16, 10),
          'axes.labelsize': med,
          'axes.titlesize': med,
          'xtick.labelsize': med,
          'ytick.labelsize': med,
          'figure.titlesize': large}
plt.rcParams.update(params)
plt.style.use('seaborn-whitegrid')
sns.set_style("white")
%matplotlib inline

2、导入数据


df = sns.load_dataset('iris')

3、代码解读,图像解读

sns.pairplot()

重要参数:

hue:类别所在的列(和带拟合线的散点图一致),取出数据集的子集,对数据集进行分类,其实单词”hue”是色调的意思,我们可以将这个参数与我们之前类中的参数c来进行比对,在这个参数中输入不同的类别,可以让不同的数据集展示不同的颜色。。

kind:绘制的相关性图像类型,可以选择”scatter”散点图或者”reg”带拟合线的散点图。


plt.figure(figsize=(10,8), dpi = 80)
plt.rcParams['font.sans-serif']=['Simhei']
sns.pairplot(df
             , kind="scatter"
             , hue="species"
             , plot_kws=dict(s=40, edgecolor="white", linewidth=1)
            );

matplotlib绘制关联图

plt.figure(figsize=(10,8), dpi= 80)
plt.rcParams['font.sans-serif']=['Simhei']
sns.pairplot(df, kind="reg", hue="species");

matplotlib绘制关联图

什么时候用相关性矩阵,什么时候用成对分析图呢?

当我们希望探求不同分类下的特征之间的相关性的时候,用成对分析图
当特征很多的时候,使用相关性矩阵,当特征只有少数的几个的是偶,使用成对分析图;当在意特征本身的分布时候,使用成对分析图;当数据较少时,使用成对分析图。

Original: https://blog.csdn.net/qq_48314528/article/details/120545100
Author: Litra LIN
Title: matplotlib绘制关联图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/766254/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python爬取图片

    爬取网站 https://image.baidu.com/ 先打开页面 然后点击动物图片 当然选择哪个都可以我这里只是喜欢动物的所以选择这个分类 爬取任何数据 第一步就是先确定数据…

    Python 2023年8月2日
    074
  • 在pygame的窗口中添加小球

    其间因为自己打代码不正确,出现了一些问题,然后在网上查了一些基础知识 以下是代码: #-*-coding:utf-8 -*- import sys import pygame py…

    Python 2023年9月24日
    037
  • pytorch模型网页部署——Flask

    一、Flask用法 Flask是python的轻量级web框架,可用来做简单的模型部署。Flask的基本用法如下: step1:定义Flask类的对象,即创建一个基于Flask的服…

    Python 2023年8月9日
    079
  • Django个人博客开发练手demo笔记

    目录 序言 一、环境搭建、项目结构 二、设计阶段 三、创建数据库模型 四、使用后台管理系统 五、创建视图类 六、网站成型 七、问题修复 八、完整项目效果 九、其他 序言 Djang…

    Python 2023年8月5日
    070
  • python学习笔记(十二)

    python的pandas模块 pandas和numpy的区别 numpy比作列表,那么pandas更像字典形式 pandas的使用 import pandas as pdimpo…

    Python 2023年8月8日
    041
  • 爬虫日记(77):Scrapy的命令合法的判断

    前面已经从三个地方准备好所有可以运行的命令,接着下来就是需要根据命令行的输入内容来判断命令是否合法,参数个数是否合法,参数内容是否合法了。我们分析这一段代码,学会处理命令行参数,以…

    Python 2023年10月6日
    027
  • Django中的关系映射

    Django中的关系映射 学习Django的ORM需要掌握三个维度 如何建表 如何建立数据 如何对数据进行查询 一个人对应一个身份证 class People(models.Mod…

    Python 2023年8月6日
    045
  • Ubuntu 配置谷歌Android Test Station

    ATS:释义及配置方法 上面的配置方法讲得挺详细,不过在实际操作过程中还是遇到一些小问题,特总结如下: 1、在桌面命令窗口中执行 mtt start,会提示mtt命令不支持,需要安…

    Python 2023年6月11日
    093
  • Matplotlib 设计交互式、美观和高级绘图的动手示例

    要在 Django 中使用 进行 ,可以使用 的内置工具包 mpld3。 mpld3 可以将 图形转换为 HTML 或 D3.js 渲染的 SVG,并在浏览器中显示它们。 下面是一…

    Python 2023年9月6日
    055
  • 这些编程语言你需要了解一下

    2022 年最受欢迎的语言 1、Python Python 位居 2022 年最受欢迎的语言榜首,并且鉴于多种原因成为最适合学习的编程语言之一。Python 是一种通用的服务器端编…

    Python 2023年8月1日
    031
  • 【时间复杂度和空间复杂度】简单理解与学习

    学习算法之前,我们需要先搞懂时间复杂度和空间复杂度。顾名思义,时间复杂度和空间复杂度是一个判断算法好坏的一个标准。时间复杂度就相当于运行代码花费的时间,空间复杂度则代表代码所占用的…

    Python 2023年6月11日
    070
  • 机器学习-K近邻(KNN)算法详解

    一、KNN算法描述 KNN(K Near Neighbor):找到k个最近的邻居,即每个样本都可以用它最接近的这k个邻居中所占数量最多的类别来代表。KNN算法属于有监督学习方式的分…

    Python 2023年10月28日
    038
  • Windows配置深度学习环境详细教程(二):conda工具的使用

    序言 对于想要入门Python或者深度学习的初学者而言,配置环境一直是一个令人头疼的问题。相信有许多人经历过安装第三方包失败,安装好了却在使用中报错,安装CUDA、tensorfl…

    Python 2023年9月9日
    089
  • ESP8266 系统环境搭建

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 入…

    Python 2023年8月9日
    082
  • 人到中年,做管理真的需要懂的管理必备知识

    课堂三点要求: 认真听讲,记笔记 * – 讲义电子版会给补充,不要急于找资料 – 跟着课堂节奏 积极参与课堂互动,远程依然有温度 * – 课堂提…

    Python 2023年6月3日
    073
  • python实现外星人入侵——0

    前言 本系列博客适合对py的基本语法已经有了简单的了解,希望通过一个实例来进行加深的朋友。或者是已经跟着书本一步步实现了这个项目,希望能够 复习一遍。这里我使用的是vscode进行…

    Python 2023年9月24日
    050
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球