大数据,机器学习,人工智能机器学习与数据挖掘机器学习与计算机视觉

机器学习系列(五)——matplotlib数据可视化与iris数

2019-06-07  本文已影响0人  Ice_spring

matplotlib基础

折线图

在实际中使用matplotlib并不多,除非要做专业的图像处理,我们更多使用的是它下面的pyplot。

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,50)#(0,10)切分50段
y=np.sin(x)
plt.plot(x,y)
plt.show()

画出的图像如下


plot1

可以加入很多渲染,如绘制多条曲线:

cosy=np.cos(x)
siny=y.copy()
plt.plot(x,siny)
plt.plot(x,cosy)
plt.show()

plot会很智能地绘制不同颜色:


plot2

颜色color可以手动指定,支持RGB方式和特殊名称:

plt.plot(x,siny,color='#000fff')
plt.plot(x,cosy,color='red')
plt.show()
plot3

修改绘制线条样式linestyle:

plt.plot(x,siny,color='#000fff',linestyle='--')
plt.plot(x,cosy,color='red')
plt.show()
plot4

手动指定坐标轴范围:

plt.plot(x,siny,color='#000fff',linestyle='--')
plt.plot(x,cosy,color='red')
plt.xlim(-5,15)
plt.ylim(-2,2)
plt.show()
plot5

指定坐标轴范围还有另外一种方法:

plt.plot(x,siny,color='#000fff',linestyle='--')
plt.plot(x,cosy,color='red')
plt.axis([-1,12,-2,1])
plt.show()
plot

在轴方向加入名称label:

plt.plot(x,siny,color='#000fff',linestyle='--')
plt.plot(x,cosy,color='red')
plt.xlabel('x-axis')
plt.ylabel('y-value')
plt.show()
plot7

图示函数名,在绘制时加入label,图像会自动在合适的位置加入图示:

plt.plot(x,siny,color='#000fff',label='sin(x)')
plt.plot(x,cosy,color='red',label="cos(x)")
plt.legend()
plt.show()
plot8

整个图取标题:

plt.plot(x,siny,color='#000fff',label='sin(x)')
plt.plot(x,cosy,color='red',label="cos(x)")
plt.title('my function')
plt.legend()
plt.show()
plot9

散点图

基本散点图与plot画图差不多

plt.scatter(x,siny)
plt.show()
plot10

一般用于绘制二维特征,而用不同的颜色表示label,方便对数据的分析。

x=np.random.normal(0,1,1000)#mean=0,var=1
y=np.random.normal(0,1,1000)#mean=0,var=1
plt.scatter(x,y,alpha=0.5)#alpha不透明度,1代表完全不透明
plt.show()
plot11

注:可以去matplotlib官网或者查看文档方式进行更系统的函数参数学习。


iris数据集可视化探索

iris数剧集

查看数剧集包含什么键值

from sklearn import datasets 
iris=datasets.load_iris()#iris在其中实际是一个字典
iris.keys()

dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])

依次是data,label,label_name,数剧集描述,特征名称,文件名。

iris.data.shape
out:(150, 4)
iris.feature_names#萼片长宽花瓣长宽
out:['sepal length (cm)',
 'sepal width (cm)',
 'petal length (cm)',
 'petal width (cm)']

iris.target中的元素只有三个取值0,1,2。shape为(150,),代表鸢尾花三种不同分类
target_names就是实际鸢尾花种类名称。

可视化探索

取data前两列

x=iris.data[:,:2]#只取前两列萼片长、宽
x.shape
out:(150, 2)

绘制x对应的散点图:

plt.scatter(x[:,0],x[:,1])
plt.show()
scatter1.png

但实际上上图的信息量很少,下面将不同类别的鸢尾花按不同颜色绘制出来:

y=iris.target
plt.scatter(x[y==0,0],x[y==0,1],color='red')#取特征第0,1列,绘制类别为0的,颜色red
plt.scatter(x[y==1,0],x[y==1,1],color='blue')#取特征第0,1列,绘制类别为1的,颜色blue
plt.scatter(x[y==2,0],x[y==2,1],color='green')#取特征第0,1列,绘制类别为2的,颜色green
plt.xlabel('pedal length')
plt.ylabel('pedal width')
plt.show()
scatter2

此时已经有一些规律可循了,对于散点图,有时为了标识不同类别,不只可以用不同颜色,还可以用不同样式marker:

y=iris.target
plt.scatter(x[y==0,0],x[y==0,1],color='red',marker='o')#取特征第0,1列,绘制类别为0的,颜色red
plt.scatter(x[y==1,0],x[y==1,1],color='blue',marker='+')#取特征第0,1列,绘制类别为1的,颜色blue
plt.scatter(x[y==2,0],x[y==2,1],color='green',marker='x')#取特征第0,1列,绘制类别为2的,颜色green
plt.xlabel('pedal length')
plt.ylabel('pedal width')
plt.show()
scatter3

不同类型的数据不只用不同颜色还用了不同样式使分类更加直观。
这里只是取了前两个特征来分类,如果用后两个特征:

x=iris.data[:,2:]#取后两个特征
y=iris.target
plt.scatter(x[y==0,0],x[y==0,1],color='red',marker='o')#取特征第0,1,(原特征里是3,4列),绘制类别为0的,颜色red
plt.scatter(x[y==1,0],x[y==1,1],color='blue',marker='+')#取特征第0,1列,绘制类别为1的,颜色blue
plt.scatter(x[y==2,0],x[y==2,1],color='green',marker='x')#取特征第0,1列,绘制类别为2的,颜色green
plt.xlabel('pedal length')
plt.ylabel('pedal width')
plt.show()
scatter

这就是数据可视化的效果,能让我们对数据和分类有一个直观的映像,在后续的处理中也能更加快速选择合适的机器学习算法。

上一篇下一篇

猜你喜欢

热点阅读