• 机器学习——seaborn实用画图方法简介


    0、seaborn简介:

    • 前言:下面的总结只是介绍seaborn有哪些方法和属性,至于具体使用,通过下面给出的名称稍作查找即可。重点应该关注本文介绍的seaborn的使用方法
    • seaborn与机器学习的关系:
      在这里插入图片描述
    • 知识图谱
      在这里插入图片描述
    0.1、了解即可的知识:
    • seaborn:在matplotlib的基础上画一些更好看的图,在进行探索性数据分析时会常用到,对于seaborn需要做简单了解,掌握对应画法的查询方法。
    • 官网:https://seaborn.pydata.org/
    • 下载方法:在控制界面输入“pip install seaborn”

    • 如果seaborn版本不是最新,可以跟新:“pip install --upgrade seabron”
    • seaborn中也自带一些数据集,通过属性调用就可以查看:“get_dataset_names()”,要调用这些数据集要通过调用方法:load_dataset(“数据集名称”)
    • 设置seaborn主题风格的方法:set_style(“风格名称”) # darkgrid、whitegrid、dark、white、ticks
    • 在seaborn中可以通过despine()方法去掉不需要的边框,这种操作在matplotlib中是无法实现的。通过其中的offset参数可以设置图形到轴线的距离。
    • set_context()方法可以设置图形当中内容的格式,比如字体大小之类的。
    • 在seaborn中绘制子图可以将风格的使用控制在一定的作用范围内
    f = plt.figure(figsize=(10,4))
    # 子图
    with sns.axes_style('dark'):
        f.add_subplot(1,2, 1) # 1行2列排第1个
        sinplot()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    • 离散型颜色调色板:
      1、seaborn默认的颜色是六种,如果面对分类问题大于六种时,就可以使用hls颜色空间来划分,例如需要有n种不同颜色时,就可以调用sns.color_palette(‘hls’, n),调色板在seaborn中就相当于一个参数了。
      2、亮度和饱和度:”sns.hls_palette(n,l=‘亮度数值’,‘饱和度数值’)“
    • 连续性颜色调色板:
      1、颜色有浅到深:“sns.color_palette(‘‘颜色名称’)”
      2、颜色有深到浅:“sns.color_palette(’‘颜色名称_r’)”
      3、其他方法:“sns.cubehelix_palette(n, start=数值, rot=数值)”,“sns.light_palette(“颜色名称”)”
      4、对于颜色问题,大部分时间使用默认的即可

    0.2、★★★seaborn使用重点
    • 单变量分析(单个特征数据分布情况查看):直方图,会根据数据自动生成每个柱子(bins)
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    import seaborn as sns
    sns.set()   # 使用seaborn默认设置
    
    x = np.random.normal(size=100) # 随机生成高斯分布的数据
    display(x.shape)
    sns.displot(x,kde=False)  # 直方图,kde为核密度估计,通过bins参数可以设置柱子的个数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    • 观测两个变量之间关系最好用的就是散点图:
    mean = [0, 1]
    cov = [[1, 0.5], [0.5, 1]] # 协方差
    
    # 创建2维的正态分布
    data = np.random.multivariate_normal(mean, cov, 200)
    # data
    
    df = pd.DataFrame(data=data, columns=['x','y'])
    df
    
    # 画双变量图
    # sns.jointplot(x='x', y='y', data=df)
    
    sns.jointplot(x='x', y='y', data=df)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述
    散点图中可能会有点重叠在一起,所以可以通过下面的hex图来看到散点图的同时看到数据密度分布

    mean = [0, 1]
    cov = [[1, 0.5], [0.5, 1]] # 协方差
    
    # # 创建2维的正态分布
    data = np.random.multivariate_normal(mean, cov, 1000)
    # data
    
    df = pd.DataFrame(data=data, columns=['x','y'])
    df
    with sns.axes_style('white'):
        sns.jointplot(x=
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    60行自己动手写LockSupport是什么体验?
    conda创建虚拟环境&conda常用命令&复制环境
    xgp用什么加速器 xgp加速器免费推荐
    C++进阶篇4---番外-AVL树
    Java中正则表达式基本语法和简单使用
    第四站:数组
    系统学习Shell之正则表达式
    基于matlab的立体图像编码解码算法仿真与分析
    数据结构 | 算法的时间复杂度与空间复杂度【通俗易懂】
    Spring MVC中如何获取Request,Response对象方法呢?
  • 原文地址:https://blog.csdn.net/sz1125218970/article/details/133171687