(十八)数据分析中的一些概念

HIKAI

29 SEP 2017

0 Comments

矢量、向量、标量

矢量和向量是一个东西,只是在不同领域里面用到的不同称呼。矢量常常用在物理学中,向量在数学、几何中比较常见,同时具有大小和方向的量。与向量相对的是只有大小没有方向的标量。

数组(array)与矩阵(matrix)

两者最直观的区别,数组中的元素可以是字符等,矩阵中的元素只能是数。因为矩阵是一个数学概念(线性代数里的),数组是个计算机上的概念。

从外观形状和数据结构上看,二维数组和数学中的矩阵没有区别。但是矩阵作为一种变换或者映射算子的体现,矩阵运算有着明确而严格的数学规则。而数组运算是Matlab软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。虽然数组运算尚缺乏严谨的数学推理,虽然数组运算仍在完善和成熟中,但是它的作用和影响正随着matlab的发展而扩大。

序列/序列型的对象

序列是一类基本数据类型(字符串/列表/元组)的统称,这些数据类型都含有一些共同的特性。例如:可以包含有若干个元素,这些元素有序排列,并且可以通过下标索引来访问到其中的一个或几个元素。

序列类型包含了:String字符串、Tuple元组、List列表。

向量化/矢量化编程实现Vectorized implementation

向量化编程是提高算法速度的一种有效方法,它使你不用编写循环即可对数据执行批量运算。为了提升特定数值运算操作(如矩阵相乘、矩阵相加、矩阵-向量乘法等)的速度,数值计算和并行计算的研究人员已经努力了几十年。矢量化编程的思想就是尽量使用这些被高度优化的数值运算操作来实现我们的学习算法。代码中尽可能避免显式的for循环。

很多时候,我们在实现算法的时候,总会碰到累和的伪代码,比如下面这个:

为了简单,这里只重复5次,但是原理是一样的。很显然我们要得到这个结果,非常简单,比如下面的这段Python代码:

X = [1,2,3,4,5]

Y = [1,2,3,4,5]

res = 0

for i in range(1,5):

res+=X[i-1]*Y[i-1]

那么,我们有没有更好的办法呢?有的,看到X,Y都是向量,我们很容易想到向量化编程。

比如,改成下面这段代码:

import numpy as np

X = [1,2,3,4,5]

Y = [1,2,3,4,5]

X_array = np.array(X)

Y_array = np.array(Y) #转变为列向量

print X_array

print Y_array.reshape(5,1) #给它转换为5*1矩阵

#下面是X_array是一个1*5的矩阵,而Y_array是一个5*1的矩阵了

res_temp = np.dot(X_array,Y_array)

print res_temp

上面这段代码,其实最关键的就是一行代码,就是np.dot(X_array, Y_array)这句话。

就已经能够代替下面这段代码了:

for i in range(1,5):

res+=X[i-1]*Y[i-1]

或者用下面这行代码也行!

res_temp_2 = np.sum(X_array*Y_array)

这两种形式比较常见!贴一下最后的结果截图:

离散和连续

随机变量是根据偶然性取值的变量。我们在谈到随机变量时,通常是以“概率分布”的形式来描述他们。也即:随机变量落在每一个可能的值上的概率。典型的例子就是掷骰子,它有着同等的概率生成数字1到6.

在统计学中,变量按变量值是否连续可以分为连续变量与离散变量两种。离散变量是指其数值只能用自然数或整数单位计算的,则为离散变量。例如,企业个数,职工个数,设备台数等,只能按计量单位数计数,这种变量的数值一般用计数方法取得。

反之,在一定区间内可以任意取值的变量叫做连续变量,其数值是连续不断的,相邻两个数值可作无限分隔,即可取无限个数值。例如,生产零件的规格尺寸,人体测量的身高,体重,胸围等为连续变量,其数值只能用测量或计量的方法取得。

符号x如果能够表示对象集合S中的任意元素,就是变量。如果变量的域(即对象的集合S)是离散的,该变量就是离散变量。如果它的域是连续的,它就是连续变量。

一般,我们会把随机变量划分为两类:离散型随机变量和连续性随机变量。处理这两类随机变量的方式有所不同,但他们依据的原理是相同的。我们很容易便能看到基于随机变量的模型在金融领域是如何派上用场的:金融资产价格的波动(这里指股价),常常按照“确定模型”和“随机模型”两者之一来解读。而随机模型是通过随机变量来表示。在随机模型中,我们在每个时间单位对随机变量进行采样,根据这些采样结果得到随机模型的参数,从而将其作为一种金融工具来预测股价的变动。使用这种分析模式,是因为金融资产中的大部分价格波动无法通过确定性模型给出合理的解释。

随机变量服从“概率分布”的,它是用来描述随机变量的函数。这个概率分布函数囊括了随机变量所有可能的取值情况下,所对应的概率。对于给定的随机变量X,我们用符号P(X=x)表示随机变量X=x的概率。对于离散型随机变量,我们进一步简写为p(x)代替P(X=x)。这也被称为概率质量函数(probability mass function,以下简称PMF)。而对于连续性随机变量我们不能使用PMF,我们只能使用概率密度函数(probability density function, PDF)。

离散型随机变量,是定义在一个可以穷尽的结果集中的变量。对于随机变量可能出现的值,都有一个单独的与之对应的概率。考虑一下抛硬币或是掷骰子,它们都是遵循最基本的等概率均匀分布的离散型随机变量。前者有两种可能出现的结果,正面或反面,对应发生的概率都是1/2。然而,离散型随机变量并非总是等概率分布的,而是由变量的概率质量函数p(x)决定的。函数为概率分布域中的每个点给出其可能出现的概率(质量)。

概率函数有两个基本属性:

1.0 ≤ p(x) ≤ 1

2.对于结果集中的所有情况,它们对应的概率之和为1

第一点,对于随机变量出现的所有可能情况(比如骰子中的点数),每种情况对应的概率一定介于0(一定不出现)和1(100%会出现)之间。

第二点,对于离散型随机变量结果集已经穷尽了所有可能出现的情况,因此总体来看,它们的并集是一个必然事件。(还是拿骰子举例:骰子每次投掷出现的结果必然是落在数字1到6之间,也就是100%会落在1到6中的某个数字。当数字1出现的概率为 1/6 时,意味着可能出现其他5个数字的概率为 5/6 )。

标准差和标准差系数

标准差:Standard Deviation,计算公式是

,标准差能够反映一个数据集的离散程度。

标准差系数:变异系数???,coefficient of variation,计算公式是

标准差并不是在所有情况下都适用,它受几个因素影响:离散程度、数据水平和计量单位。不同数据水平、不同计量单位的数列不能使用标准差来判断离散程度。

二维数组离散程度matlab,(十八)数据分析中的一些概念相关推荐

  1. qt 二维数组初始化_第十九章、C语言学习之数组3

    这一章我们来看一看多维数组. 我们假设有这么一个一维数组int a[6]:这个数组里面有6个元素,那么我们可以看成这样一幅图: 那么如果这个数组中a[0]这个元素不是单纯的一个变量,而是一个5个元素的 ...

  2. C++读取txt数据为二维数组 将数据保存到txt文本中

      C++读取txt数据为二维数组 保存txt文本数据     C++文件读写操作有:ofstream,ifstream,fstream: #include <fstream> ofstr ...

  3. go 声明二维数组_一篇文章了解Go语言中数组Arrays的使用内幕

    概述 与其他编程语言类似,Go语言也有数组array.Go语言中,数组的行为和其他语言没有什么不同.Go语言中还有一个叫做切片slice的东西,它就像是对数组的引用.在本文中,我们将只研究数组. 定义 ...

  4. 矩阵(二维数组)的性质在算法求解中的应用

    本文所说的矩阵(matrix),其实在编程实现时,往往以二维数组的形式出现. 1. 对称矩阵(二维数组) 在求解旅行商问题时,题干中要求,城市之间彼此互通(两城市之间的道路只有一条). double ...

  5. php判断二维数组里值均为空,php中经典方法实现判断多维数组是否为空

    php中经典方法实现判断多维数组是否为空 复制代码 代码如下: //判断一个数组是否为空 /** array( ); 空 array( array( ), array( ), array( ) ); ...

  6. 二维数组求最小值_求一列中满足条件的最大最小值

    [后台回复数字1-10,可查平台所有内容!] 最近碰到一个求最小值的问题,今天和大家分享一下.如下图: 想求张三的几次成绩的最高分和最低分. 我们先来看看最高分,这里大家先别往下看,想想如果是你,你怎 ...

  7. 若在矩阵A中存在一个元素Aij,该元素是第i行元素中最大值并且又是第j列元素中最小值,则称此元素值为该元素的一个鞍点。假设以二维数组存储矩阵A,求该矩阵中的所有鞍点。

    #include <stdio.h> #include <stdlib.h> int main() {     int nh,nl,max,p,top=0;//max存储该行的 ...

  8. matlab建成二维数组,matlab绘制二维数组

    hist 累计图 rose 极座标累计图 stairs 阶梯图 stem 针状图 fill 实心图 feather 羽毛图 compass 罗盘图 quiver 向量场图 Matlab 如何画出一个二 ...

  9. 《零基础看得懂的C语言入门教程 》——(九)C语言二维数组与循环嵌套

    一.学习目标 了解二维数组的使用方法 了解循环嵌套的使用方法 目录 C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言. 第一篇:(一)脱离学习误区 第二篇:(二)C语言没那么难简单开发带你了 ...

最新文章

  1. OpenCV代码提取:merge/split函数的实现
  2. 《ASCE1885的网络编程》---Winsock APIのIP地址转换函数
  3. 五、吃掉Java基本数据类型,学习Java的基础
  4. [linux]makefile使用
  5. UI Configuration类型的determination 逻辑
  6. 英特尔CEO:将在行业整合背景下大力收购半导体企业
  7. 套接字,TCP,UDP
  8. eclipse默认项目部署路径(.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps) 改为自己的tomcat真实路径方法
  9. 小米盒子投屏+android,使用小米盒子手机投屏电视看村晚
  10. 写给朋友们的Markdown教程,真的很好用,而且很简单
  11. 我们为什么教不好自己的孩子?(云中逸客)
  12. python爬取京东商品评价信息
  13. 买不起NAS,用硬盘也可以玩起来
  14. ArcGIS Pro中管线三维符号化方法
  15. 如何将台式机的网络共享给另外一台台式机
  16. HBase配置AES加密
  17. 【坑点】Intellij Idea 出现“Unable to parse template”问题
  18. 鸿蒙音波萨顶顶,萨顶顶卸妆堪比整容,“神婆”变女神,网友:早就该这样!...
  19. 冯诺依曼为现代计算机的结构奠定了,冯·诺依曼为现代计算机的结构奠定了基础,他的主要设计思想是 。...
  20. java serlet清空cookie_Java如何在Servlet中删除Cookie?

热门文章

  1. android 代码生成 keyhash,android签名 keystore 生成 keyhash
  2. log4j 源码解析_Log4j配置详解
  3. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)
  4. 80后,天才程序员, Facebook 第一任 CTO,看看开挂的人生到底有多变态?
  5. Python+OpenCV 十几行代码模仿世界名画
  6. wxWidgets:wxHashMap类用法
  7. boost::mpl模块实现comparison相关的测试程序
  8. boost::mp11::mp_with_index相关用法的测试程序
  9. GDCM:gdcm::Object的测试程序
  10. ITK:区域最小图像过滤器