使用pyplot中scatter画散点图

标签: python  机器学习  可视化  数据

使用pyplot中scatter画散点图

        在机器学习任务中,为了更好地训练模型,我们通常会先可视化观察下数据集,比如如果我们的数据集不是线性可分的,那么此时你如果还是使用logistics regression等模型训练出来的效果也不会太好。(ps.多说一句,如果数据集不是线性可分的,一般选择使用神经网络,额。。好吧,绕不开的神经网络,但是三十年河东三十年河西,以后会是什么模型风靡江湖谁也不知道)。绕回正题,这篇博客主要介绍pyplot中的scatter画散点图。先看demo,再细致的讲解。
比如我载入sklearn中自带的乳腺癌数据集,这个数据集的具体情况如下所示(图片截自sklearn官网):

这里写图片描述

        能够看出每个样本共有50个特征,样本的类别是二元分类(0,1),我们只用前两个特征进行示例可视化:

import matplotlib.pyplot as plt
from sklearn import datasets

X_train,y_train = datasets.load_breast_cancer(return_X_y=True)#载入数据集
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, marker = 'o', s=40, cmap=plt.cm.Spectral)#c--color,s--size,marker点的形状
plt.show()

        画出来的图为:

散点图

        下面来看下scatter()这个函数的一些主要的参数(官网API地址:scatter()):
scatter

        具体的含义如下:

参数 含义作用
x,y 数组,输入数据
s size,点的大小
c color,可以是颜色字符串如‘b’,‘y’,‘r’等,也可以是数组,如果是数组比较复杂,就像我举的这个例子里,c=y_train就是一个数组。如果是数组,就用后面的cmap参数,cmap参数颜色映射,当使用cmap=plt.cm.Spectral时,会自动的根据类别,比如这个例子里是一个二元分类问题,那么这个函数会给label 1一种颜色,label 0设置另一种颜色。同样对于多分类也是如此,下面还会展示一个多类别的图给大家看看。
marker 点的形状,默认是’o’,可以设置为’*’,’v’,’+’,’x’等等
alpha 标量,范围是(0,1),透明度
linewidths 标量,点的边框的宽度
edgecolors 点的边框颜色


下面来看一个多类别的图,数据集用鸢尾花数据集,这个数据集详情如下:

莺尾花数据集

代码如下:

import matplotlib.pyplot as plt
from sklearn import datasets

X_train,y_train = datasets.load_iris(return_X_y=True)
print(X_train.shape)
print(y_train.shape)
plt.scatter(X_train[:, 0], X_train[:, 1], c = y_train, marker = 'o', s = 40,cmap = plt.cm.Spectral)
plt.show()

结果如下:

多类别



以上就是pyplot中scatter()画散点图的一些内容。



版权声明:本文为u012328159原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012328159/article/details/79446910

智能推荐

python_使用matplotlib画柱状图(bar),散点图(scatter)

柱状图(plt.bar) 代码与注释 结果 柱状图 散点图(plt.scatter) 代码与注释 结果 散点图...

python中画散点图

示例代码: 今天想在散点图的某些特定的点外面画圆圈标记,从下面的文章找到一些灵感,只要在原来的散点图上面给指点添加相应的标志,设置其透明度就可以实现该想法。 顺便复习下散点图的用法。 大家平时为了直观地显示数据的分布情况,在画散点图的时候,简单地把数据点用圆点标出来,像这样: 这样:     还有这样: 然而今天我想给大家展示的散点图,或许没有那么直观地反映数据的分布情况,不够...

散点图scatter

前言 散点图主要表现数据量因变量随自变量而变化,主要有正相关、负相关和不相关。 代码 展示 正相关 负相关 不相关 后记 画一个散点图大概就是这样了,其中x轴与y轴数据可以自己添加想要的。此例主要用来后期的学习和延伸。...

Linux信号及工作原理

  什么是信号     信号可以理解为软件中断,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是差不多的。信号是异步的,一个进程不必通过任何操作来等待信号的到达。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。   谁来产生信号 信号事件的发生有两个...

手机端图片放大,双指放大,元素的双指缩放

在做webapp时候,遇到一个需要做双指放大的功能,需求是:一张带有坐标的图片上有固定的点,需要点击这些坐标上的点进入相应的商品,并且需要对这一块进行双指可以缩放,双击缩放; 一开始是自己写监听touch事件进行处理,但是再缩放的时候,偶尔出现卡顿闪烁,用户体验不很好,后来采用插件 pinch-zoom GitHub地址: https://github.com/manuelstofer/...

猜你喜欢

leetcode 剑指offer 54 二叉搜索树的第k大节点

第 K 大节点即反中序遍历大第 K 个数。...

redis 初步了解

1.连接redis 通过java操作 1.首先 导入redis驱动 2.连接redis通过jedis 2.创建redis连接池 连接redis通过 jedis 相当于HTTPclient 1.创建单例模式的方法 在调用的时候被创建 2.创建私有静态 jedisPool 3. 创建私有类 创建静态代码块 放入连接池的基本配置 4.有 最大连接数 最大空闲书 最小空闲连接数 5. 创建连接redis对...

第6章数据类型-基本数据类型-Boolean类型-main

防采集标记:亢少军老师的课程和资料 Dart交流群:1046954554 Flutter开源项目请关注: https://github.com/kangshaojun @作者: 亢少军 '...

使用 Infura 和 web3.js 呼叫合约

如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: 以太坊DApp实战入门教程 以太坊去中心化电商应用开发实战 如果你希望了解如何部署合约,可以查看另一篇文章:在truffle中使用infura部署以太坊智能合约。 Infura 提供公开的 Ethereum 主网和测试网络节点。到 Infura 官网申请,只要输入一点基本资料和 Email,就可以收到 API-ke...

手写RPC通信框架

RPC基本介绍 服务器端构建 API包下主体编写 首先初始采用Socket进行通信利用IO进行数据交互,对客户端要提供API调用接口,使得客户端可以利用API中提供的接口,获得服务器端的数据。服务器端模块目录如下: 先编写一个接口,该接口放置在api模块下,实现类放置在provider模块下,这样做目的是让客户端仅加载API包的条件下,可以调用服务器端的实现类完成具体业务逻辑。 服务器端需要客户端...