数据集由数据对象组成,每个数据对象都代表一个对象或者一个实体。

例如在一张学生名单中,每个记录就表示着一个学生实体。


一、属性

1.1 什么是属性

说白了,属性就是一个能够表征对象的东西,它反映了对象的性质,或者说特征。属性,也可以称作特征(Feature),字段(Field),维度(Dimension),变量(Variable)。

1.2 属性的类型

image-20221006211327075

如上图所示,属性通过是否具有可比性,可以分为定性和定量属性。定性属性又可以往下细分为对称属性,二元属性和序数属性,而定量属性可再分为区间标度属性和比率标度属性。


二、数据的基本统计描述

评价一个数据的好坏一般是通过其分布形态,而对其分布形态进行的描述不仅可以认识数据,判断好坏,更能识别噪声或是离群点。

常见的统计性描述可以概括为:集中趋势、离散趋势、相对离散程度和分布形态四个维度。

2.1 中心趋势度

指的是一组数据向某一中心值靠拢的程度,反映了一组数据的中心点所在。

1️⃣ 均值

最常见的统计量,可以表征数据的总体水平。但均值对于噪声比较敏感。

2️⃣ 中位数

先排序,再找中心。毫无疑问,这个方法的时间开销至少是O(nlogn)O(nlog_n)级别的。所以有时候,我们可以采用近似估计的方式去计算。

假定数据可以通过数值划分为区间,且知道每个区间的个数。于是,中位数可用以下的公式表示。

median=L1+[N2(f)lfmedian]widthmedian=L_1+\left [\frac{\frac{N}{2}-(\sum f)_l}{f_{median}}\right ]width

3️⃣ 众数

众数是一组数据中出现最多的数值,有多少个众数,那么我们称数据集为多少峰,例如一个众数:单峰,两个:双峰。

4️⃣ 中列数

Midrange,表示最大值和最小值的均值。也可以度量中心趋势哦。不过与其说度量中心,倒不如说是数据范围的中心,正如midrange的意思一般。


2.2 散布(离中)度量

用于评估数据的散布或发散程度。

1️⃣ 极差、四分位数和四分位数极差

极差(Range)也称范围误差或者全距,指的是最大值和最小值的差距。也是衡量变动最简单的指标。

四分位数:将数据从大到小排序后,用三个点(25,50,75)将数据分为三等分,这三个点上对应的位置就是四分位数。例如Q1,Q2,Q3Q_1,Q_2,Q_3表示第一四分位数,第二四分位数,第三四分位数。

分半四分位差:即(Q3Q1)/2(Q_3-Q_1)/2

四分位数极差(IQR):Q3Q1Q_3-Q_1,它给出了数据中间一半的部分。

2️⃣ 五数概括、盒图和离群点

哪五个数?

  • min
  • Q1Q_1
  • Q2Q_2
  • Q3Q_3
  • max

盒图又称箱线图,盒须图,体现了五数概括。利用四分位数间距IQRIQR,我们可以判断界限,找出异常值。通常设定1.5倍IQRIQR外的为异常值。所以边界为:

IQR=Q11.5×IQRIQR=Q3+1.5×IQRIQR_{左}=Q_1-1.5\times IQR \\ IQR_右=Q_3+1.5\times IQR


三、数据可视化

一个好的数据分析,应当是要做到简单易懂的,复杂的事情交给机器去做吧~

通过图形清晰有效地表达数据称为数据可视化,他将数据所包含的信息的综合体,包括属性和变量,抽象化为一些图表形式。

这部分的话暂时不打算展开来讲了,我可能会新开一章专门介绍matplotlib+sns+pyecharts(排面)。

这里简单贴一个小小的散点图。

1
2
3
4
5
6
7
8
9
10
import numpy as np
import matplotlib.pyplot as plt

n=50
x=np.random.rand(n)*2
y=np.random.rand(n)*2
colors=np.random.rand(n)
area=np.pi*(10*np.random.randn(n))**2
plt.scatter(x,y,s=area,c=colors,alpha=0.5,marker='o')
plt.show()
image-20221006215808879

四、数据对象的相似性对量

现实中,我们需要处理的数据具有不同的形式和特征,而对数据相似性的度量又是数据挖掘中非常重要的环节

4.1 数据矩阵和相异性矩阵

数据矩阵

这就是一张二维表

O11Q1mOn1Onm\begin{vmatrix} O_{11} & \dots &Q_{1m} \\ \dots& &\dots\\ O_{n1}& \dots & O_{nm} \end{vmatrix}

属性为列,对象为行。

相异性矩阵

是相似性矩阵的反矩阵

0d(1,2)d(2,1)0\begin{vmatrix} 0 &d(1,2)& \\ d(2,1)&0& \end{vmatrix}

4.2 常见的数值距离度量

1️⃣ 欧氏距离 Eulidean Distance

d(i,j)=(xi1xj1)2++(xinxjn)2d(i,j)=\sqrt{(x_{i1}-x_{j1})^2+\dots+(x_{in}-x_{jn})^2}

2️⃣ 曼哈顿距离 Manhattan Distance

d(i,j)=xi1xj1+xi2xj2d(i,j)=|x_{i1}-x_{j1}|+|x_{i2}-x_{j2}|

3️⃣ 切比雪夫距离 Chebyshev Distance

d(i,j)=limk(f=1pxifxjfk)1k=max(xifxjf)d(i,j)=\lim_{k\to\infin}(\sum_{f=1}^p|x_{if}-x_{jf}|^k)^\frac{1}{k}=max(|x_{if}-x{jf}|)

1
2
def chebyshev(x,y):
return np.max(np.abs(x-y))

4️⃣ 闵可夫斯基距离 Minkowski Distance

d(i,j)=q(xi1xj1)q++(xinxjn)qd(i,j)=^q\sqrt{(x_{i1}-x_{j_1})^q+\dots+(x_{in}-x_{jn})^q}

可以说,曼哈顿距离和欧氏距离都是闵氏距离的推广

1
2
def minkowski(x,y,p):
return np.sum(np.abs(x-y)**p)**(1/p)

5️⃣ 汉明距离 Hamming Distance

两个等长字符串之间变换需要的最小次数

1
2
3
4
5
6
7
8
9
10
def Hamming(a,b):
x=a^b
ans=0
while x:
x&=(x-1)
ans+=1
return ans

def Hamming(a,b):
return np.sum(a!=b)/len(a)

6️⃣ 余弦相似性

一般用于文档数据的相似性度量。

sim(x,y)=xyxysim(x,y)=\frac{x\cdot y}{||x||\cdot||y||}

1
2
def cos_similarity(x,y):
return np.dot(x,y)/(np.linalg.norm(x)*np.linalg.norm(y))

这个np.linalg.norm表示范数


4.3 混合类型属性的相似性

d(i,j)=f=1pσij(f)dij(f)f=1pσij(f)d(i,j)=\frac{\sum_{f=1}^p\sigma^{(f)}_{ij}d_{ij}^{(f)}}{\sum_{f=1}^p\sigma^{(f)}_{ij}}

emmm,这个意思就是,σij(f)\sigma^{(f)}_{ij}表示对象i,ji,j之间是否具有共同的属性ff,我们只统计具有共同属性的,没有的话σ\sigma就将被设置为0