使用pyplot中scatter画散点图

使用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()画散点图的一些内容。



猜你喜欢

转载自blog.csdn.net/u012328159/article/details/79446910