数据挖掘学习小组之(统计学)

2019-07-31 17:02:25 浏览数 (1)

第一周

学习的目的

首先,要做一件事情首先要搞清楚的是:为什么要这么做?随着年纪越来越大,越来越觉得时间珍贵,所以每一分钟都要用好。而参加这个兴趣小组的原因很简单,想进一步提升自己的能力!

GIS说到底还是很小众,每天都在用GIS技术,都在处理GIS数据,但工作中有很多数据都不是GIS数据。每天面对的需求,都不仅仅是GIS那点数据,虽说城市中80%的数据都与位置有关,但那仅仅是有关!有关的意思可以有多种解读,有关可以是强相关,也可以是弱相关。我没觉得以GIS为基础的智慧城市给我的生活带来了多少改变,也许是因为我接触的项目都不够优秀吧,或者,是我不够优秀!但现在的我,觉得仅仅掌握GIS技术是不够的,还需要与其他行业进行结合,多掌握一些技术。但怎么结合,掌握什么技术,有点迷茫。机缘巧合之下,看到了这篇文章:数据团队思考:数据驱动业务,比技术更重要的是思维的转变!然后就加入了居士与各位数据挖掘的专家们组织的数据挖掘学习小组。我想通过与学习小组的各位一起系统的学习一种技能,通过学习与交流,了解大家都是怎么做数据的、是怎么用数据的。

学习的深度

在学习小组的群里,我看到有大佬在对着参考书演算,心里由衷的佩服。我觉得自己很难再学到这个深度了。比起演算,我打算将更多的精力放在应该怎么去用这些知识,算的过程,就交给代码吧。

抱着这样的态度我给自己定个标准:

1、掌握各种数的求法(用各种库);

2、了解各种数代表的意义,在什么情境下,该用什么数;

3、实践环节,一个不拉,都来一遍。

以后或许再加个几条,但写上了,我就会强迫自己去遵守

前面的都是前言,后面才是真正的开始!

知识点

居士的学习路线中是这么写的,很好,我就偷个懒直接粘了!

下面就开始分节进行学习了

集中趋势

众数

这个很好理解,就是一堆数字里,出现次数最多的那个。众数可以不存在,还可以是多个。

中位数

这个也不难理解,一堆数字里排序后,正好在中间的那一个,或两个。

分位数

分位数以四分位数最为著名,常用,所以下面的分位数,都指四分位。

这个说实话,俺不是很理解,所以就去看了看书,书上是这么写的:跟中位数一样,先对数据进行排序。排在四分之一位置的数值即为第一四分位数Q1;排在四分之二位置的数值为第二四分位数Q2,也就是中位数;排在四分之三位置的数值为第三四分位数Q3。这三个四分位数将整个数据集合分成四等分。

但你以为这就结束了?

too young too native!

我第一次用pandas算,算出来跟百度百科不一样;用numpy,还是不一样!我去群里问了一下,又仔细看了看百科前面的内容,终于捋顺了我第一次用pandas算,算出来跟百度百科不一样;用numpy,还是不一样!我去群里问了一下,又仔细看了看百科前面的内容,终于捋顺了!

其实,四分位数,有两种算法:

首先确定四分位数的位置:

Q1的位置= (n 1) × 0.25

Q2的位置= (n 1) × 0.5

Q3的位置= (n 1) × 0.75

n表示项数

对于四分位数的确定,有不同的方法,另外一种方法基于N-1 基础。即

Q1的位置=1 (n-1)x 0.25

Q2的位置=1 (n-1)x 0.5

Q3的位置=1 (n-1)x 0.75

两种计算方式,可以看下面的动图:

numpy和pandas,应该对应基于N-1的这种。

平均数

平均数包括:算数平均、加权平均、几何平均。

算术平均数

平均数这个好理解,一堆数字,求和再除以个数嘛!反映的是一组数据集合的集中趋势 。

加权平均数

跟算术平均数差不多,数字还是那堆数字,只是每个数字都有了权数(也叫权重)。算法就是:数字*权数/总单位个数。与算术平均数比较,更能反映事物本质。

几何平均数

有些数据之间的关系不是加减关系,而是乘除关系。假设有一个定比数据集合,集合中的数值分别为x1,x2,…,xn,且所有的数值均大于0,那么该数据集合的几何平均值的计算公式为:

离散程度

方差

数还是那一堆数,方差就是,这堆数里的每一个数与这对数的算术平均值的差的平方和的算术平均。反映的是数据的离散程度。

标准差

方差开方!

极差

最大值与最小值的差,极差反映的是一组数据的变化范围。

平均差

一堆数据中的每一个数,与算术平均值的差的绝对值的算术平均值。

四分位极差

四分位数的第三个,减去第一个,得到的值,就是四分位极差。

异众比率

异众比率指的是总体中非众数次数与总体全部次数之比。

离散系数

离散系数,又称变异系数。变异系数实质上是标准差相对于算术平均值的大。

分布的形状

峰态系数

峰态系数,又称峰度系数。峰度系数的概念:峰度系数是用来反映频数分布曲线顶端尖峭或扁平程度的指标。

代码

对于这些数,我初步了解了含义,虽然不是很透彻,但暂时算是混了个脸熟。相信随着书读的越来越多,这些统计学的小知识,我也能了解的越来越深入。

下面是代码了:

代码语言:javascript复制
import numpy as np
import pandas as pd
from scipy import stats

#创建随机Series
s = pd.Series(np.random.randint(10,20,200))

#求众数
print('众数:',s.mode()[0])

#求中位数
print('中位数:',s.median())

#分位数,以四分位为例
print('四分位:n第一分位:{0};n第二分位:{1};n第三分位:{2};'.format(s.quantile(0.25),s.quantile(0.5),s.quantile(0.75)))

#算术平均
print('算术平均:',s.mean())

#加权平均
#创建一个随机权重数组
qs = np.random.rand(s.count())
tmp = s*qs/qs.sum()
print('加权平均数:',tmp.sum())

#几何平均
print('几何平均数:',stats.gmean(s))

#方差
print('方差:',s.var())

#标准差
print('标准差:',s.std())

#极差
print('极差:',s.max()-s.min())

#平均差
print('平均差:',np.abs(s-s.mean()).mean())

#四分位极差
print('四分位极差:',s.quantile(0.75)-s.quantile(0.25))

#异众比率
print('异众比率:',1-s.value_counts()[s.mode()].sum()/s.count())

#离散系数
print('离散系数:',s.std()/s.mean())

#峰态系数
print('峰态系数:',stats.kurtosis(s))

others

孩童时代,我们经过几次摔倒之后,终于学会了骑自行车,即便之后好几年不曾再骑过,但骑车的方法却仍然记得很清楚,这就是用身体去记忆的结果。

--摘自《学会提问》,大岛祥誉著!

0 人点赞