总第87篇

01|写在前面:

在前面我们研究了单列(变量)数据情况,现实中的案例大多都是多列(变量)的,即影响一件事情的因素有多个,我们除了要看单列数据以外还需要看看这不同列之间是否存在某些联系。常见的关系有四种:无关联、强关联、简单关联和多元(非简单)关联。接下来具体看看具体如何借助可视化对多变量数据进行分析。

你可以看:python数据科学-单变量数据分析

02|数据导入:

本次的数据是用的sklearn库自带的iris数据集,那么iris数据集是什么呢?

Iris数据集是机器学习中常用的分类实验数据集,也是一个多变量分析的数据集,数据集共包含150个数据集,3个分类,每50个数据集是一类,每个数据包含4个属性(也可以理解成是特征值)。

源数据集部分

这里的前四列就是四个属性值,第五列是数据集所属的分类。数据的分类有Iris-setosa,Iris-versicolor,Iris-virginica三种,为了便于后续的进一步分析,把这三种分类分别用0,1,2代替。

#加载相关库
from sklearn.datasets import load_iris
from sklearn.preprocessing import scale
import numpy as np
import matplotlib.pyplot as plt
import itertools
%matplotlib inline
plt.style.use("bmh")

在导入相关库以后就可以加载对应的数据集进来啦。

#加载Iris数据集
data=load_iris()
x=data["data"]#将属性值赋值给x
y=data["target"]#将对象/分类值赋值给y
col_names=data["feature_names"]#列名
print("col_names:{}".format(np.unique(col_names)))#将列名打印
print("target:{}".format(np.unique(y)))#将分类打印

确认一下导入的列名和分类数据是否正常。

#iris数据集的列名,分别表示花萼长度、花萼宽度、花瓣长度、花瓣宽度
col_names:['petal length (cm)' 'petal width (cm)' 'sepal length (cm)' 'sepal width (cm)']
#数据集的分类
target:[0 1 2]#分别用0,1,2代替

03|数据可视化:

3.1多变量数据概览:

当数据集有多个变量时,我们先看看这些变量的一个整体分布情况,比较有效的表达方式就是箱型图。

#绘制图表
fig=plt.figure(1)
ax=fig.add_subplot(111)
ax.boxplot(x)
ax.set_xticklabels(data["feature_names"])

各属性值的箱型图

通过上图我们可以看出,petal width的中位数值最小,speal length的最大;speal width有异常值,而其他属性没有;speal length中的最大值时四个属性值中的最大值,petal width最小值是四个属性值中的最小值。

3.2变量间关系分析

我们一般分析两个变量之间的关系时,最简单粗暴的一种方法就是绘制这两个变量的直线,然后观察这两条直线的走势,两条直线越接近(也可以用两者的夹角大小去衡量),说明相关性越强,比如下面这两个图。

data=range(1101,1113)
sales_A=range(200,2600,200)
sales_B=range(1950,150,-150)
fig=plt.figure()
ax1=fig.add_subplot(111)
ax1.plot(data,sales_A,label="sales_A")
ax2=ax1.twinx()
ax2.plot(data,sales_B,c="r",label="sales_B")
ax1.legend(loc="upper center")
ax2.legend(loc="lower center")

AB两种产品销量随时间变化

该图反映了两种产品随着时间的推移成负相关关系,在日常业务中新产品上市时,新旧产品之间会出现这种关系,比如你把A产品当作iphone8,B产品当作iphone7,7销量开始下降的时候正是8上市的时候。

data=range(1101,1113)
sales_A=range(200,2600,200)
sales_B=range(150,1950,150)
plt.subplot()
plt.plot(data,sales_A,label="sales_A")
plt.plot(data,sales_B,label="sales_B")
plt.legend(loc="best")

AB两种产品销量随时间变化

通过这个图可以看出AB两产品的销量是呈比较强的相关性,在业务中很典型的一个例子就是啤酒和尿布之间的关系。

当然了,如同第一节中提到的,可视化图表只是让我们对整体的数据有一个大概的认识,不太具体。关于衡量两个变量具体的相关性大小可以用相关性系数来衡量。这里先不涉及。

上面的相关性分析常用于变量是“时序数据”的情景下,用来表示随着时间的推移,两个变量呈现一个什么样的关系。那么“非时序数据”我们该怎么破呢?

这里用散点图去进行分析,之所以用散点图是因散点图是以点的形式表示,可以通过看不同变量的分布情况来分析不同变量之间的关系。

#将多变量数据进行可视化
#绘出6个子图形,包括以下几列:花萼长度、花萼宽度、花瓣长度、花瓣宽度(四个属性值两两组合)
plt.close("all")
plt.figure(1)
#绘制一个3行2列的图
subplot_start=321
col_numbers=range(0,4)
#给图形添加标签
col_pairs=itertools.combinations(col_numbers,2)
plt.subplots_adjust(left=0.2,right=1.2,top=2.0,bottom=0.6,hspace=0.5)
for col_pair in col_pairs:plt.subplot(subplot_start)plt.scatter(x[:,col_pair[0]],x[:,col_pair[1]],c=y)plt.xlabel(col_names[col_pair[0]])plt.ylabel(col_names[col_pair[1]])subplot_start+=1

不同属性值两两组合后的散点图

上图中三种颜色代表三个不同的分类,通过图表可以看出petal length和petal width对类的分类效果最好(当petal length<2,petal width<1时,属于“0”类,当两者继续往大时属于“1”类,达到最大时,属于“2”类),而speal legenth和speal width对类的分类效果最差。

小小的总结一下:如果是要看两个变量随着时间推移呈现出什么样的关系时,可以绘制折线图参考;而如果要看两个变量与所属类别之间关系时,可以绘制散点图进行参考。

04|涉及到的知识点:

  • 同一个坐标中绘制两条或多条折线(啤酒和尿布的例子)。

  • 同一个坐标中绘制两条Y轴(iphone8和iphone7的例子)。

  • 箱型图怎么看(多变量数据概览)。

关于每篇中涉及到的知识点说明:

近期的文章,我会在每篇文章的末尾加上涉及到的知识点这一项,该项内容为我个人觉是一些比较新的点,或者是我觉得有必要提的点,仅此而已。

python数据科学-多变量数据分析相关推荐

  1. python数据科学-单变量数据分析

    总第85篇 01|背景: 我们在做机器学习之前,需要自己先对数据进行深入的了解(这些数据是什么类型,总共有多少数据,有没有缺失值,均值是多少之类的),只有自己对数据足够了解了,才能够更好地利用机器学习 ...

  2. 干货!小白入门Python数据科学全教程 Python大数据分析

    本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据工程师 ...

  3. 有前途的人工智能大数据分析相关职业:Python数据科学入门之路

    2019独角兽企业重金招聘Python工程师标准>>> 为什么学习Python数据科学? Python是数据科学职业所需的宝贵技能之一.Python是数据科学的首选编程语言. 201 ...

  4. python数据科学手册_小白入门Python数据科学

    前言 本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据 ...

  5. 14 张Python数据科学速查表

    大家好,我是俊红. 今天给大家隆重推荐一个Python数据分析领域的大佬:小一,他也是公众号[小一的学习笔记]的号主! 小一是我的好友,从事数据分析行业近5年,擅长使用Python进行爬虫.数据处理和 ...

  6. python 数据科学书籍_您必须在2020年阅读的数据科学书籍

    python 数据科学书籍 "We're entering a new world in which data may be more important than software.&qu ...

  7. python数据科学入门_干货!小白入门Python数据科学全教程

    前言本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据工 ...

  8. python3 array为什么不能放不同类型的数据_小白入门Python数据科学全教程lt;一gt;...

    前言 本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据 ...

  9. 人工智能写小说python_1月下旬值得一读的10本技术新书(人工智能、C++、Python数据科学等)!文末有福利!...

    1月下旬,阿里云云栖社区 联合 图灵教育 为大家带来十本技术书籍(人工智能.C++.Python数据科学等).以下为书籍详情,文末还有福利哦! 书籍名称:<C++性能优化指南> 内容简介 ...

最新文章

  1. JZOJ 5630. 【NOI2018模拟4.4】Connection
  2. c语言程序设计章节作业网上,C语言程序设计第17章在线测试
  3. 网站建设——从无到有
  4. spring boot创建一个应用
  5. HH SaaS电商系统的线上服务商品库存和采购设计
  6. 对于一个指针可以多次使用delete_【C++札记】new和delete
  7. 火绒规则 禁止所有软件的安装_十大机械设计软件对比,附所有软件安装资料...
  8. AndroidStudio安卓原生开发_UI控件_ImageView_CheckBox_RadioButton---Android原生开发工作笔记98
  9. C++编程题-职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来
  10. 站点技术---301重定向
  11. .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  12. 使用fsck命令检查文件系统错误
  13. 文章被推荐到首页,在哪里可以看到?
  14. 九、JavaScript网页特效 - 章节课后练习题及答案
  15. linux运维的名言,Linux之父十大名言 你曾听说过几句?
  16. 自然语言处理之中文文本分析(jieba分词、词袋doc2bow、TFIDF文本挖掘)
  17. HOE-32020,23554-99-6用于染色DNA的蓝色荧光染料
  18. JavaScript专题(一)变量提升与预编译,一起去发现Js华丽的暗箱操作
  19. html表格table的表头排序,js代码fastunit使用案例
  20. Mac鼠标移动速度慢解决方案

热门文章

  1. springboot连接SQL数据库配置application
  2. mysql自动dump脚本_MySQL--简单mysqldump脚本
  3. 精益质量管理中执行防错管理的八大要点
  4. RedisManager使用手册(二) -- 配置文件详解
  5. 福布斯全球最佳雇主榜:网易排名80 大幅超腾讯阿里
  6. 在python下比celery更加简单的异步任务队列RQ
  7. oracle中用户连接相关
  8. IBM计划未来四年在美聘用2000名退伍军人
  9. HDU3400+三分
  10. .Net Micro Framework SDK 2.5 发布