数据集由数据对象组成,每个数据对象都代表一个对象或者一个实体。
例如在一张学生名单中,每个记录就表示着一个学生实体。
一、属性
1.1 什么是属性
说白了,属性就是一个能够表征对象的东西,它反映了对象的性质,或者说特征。属性,也可以称作特征(Feature),字段(Field),维度(Dimension),变量(Variable)。
1.2 属性的类型
如上图所示,属性通过是否具有可比性,可以分为定性和定量属性。定性属性又可以往下细分为对称属性,二元属性和序数属性,而定量属性可再分为区间标度属性和比率标度属性。
二、数据的基本统计描述
评价一个数据的好坏一般是通过其分布形态,而对其分布形态进行的描述不仅可以认识数据,判断好坏,更能识别噪声或是离群点。
常见的统计性描述可以概括为:集中趋势、离散趋势、相对离散程度和分布形态四个维度。
2.1 中心趋势度
指的是一组数据向某一中心值靠拢的程度,反映了一组数据的中心点所在。
1️⃣ 均值
最常见的统计量,可以表征数据的总体水平。但均值对于噪声比较敏感。
2️⃣ 中位数
先排序,再找中心。毫无疑问,这个方法的时间开销至少是O(nlogn)级别的。所以有时候,我们可以采用近似估计的方式去计算。
假定数据可以通过数值划分为区间,且知道每个区间的个数。于是,中位数可用以下的公式表示。
median=L1+[fmedian2N−(∑f)l]width
3️⃣ 众数
众数是一组数据中出现最多的数值,有多少个众数,那么我们称数据集为多少峰,例如一个众数:单峰,两个:双峰。
4️⃣ 中列数
Midrange,表示最大值和最小值的均值。也可以度量中心趋势哦。不过与其说度量中心,倒不如说是数据范围的中心,正如mid和range的意思一般。
2.2 散布(离中)度量
用于评估数据的散布或发散程度。
1️⃣ 极差、四分位数和四分位数极差
极差(Range)也称范围误差或者全距,指的是最大值和最小值的差距。也是衡量变动最简单的指标。
四分位数:将数据从大到小排序后,用三个点(25,50,75)将数据分为三等分,这三个点上对应的位置就是四分位数。例如Q1,Q2,Q3表示第一四分位数,第二四分位数,第三四分位数。
分半四分位差:即(Q3−Q1)/2
四分位数极差(IQR):Q3−Q1,它给出了数据中间一半的部分。
2️⃣ 五数概括、盒图和离群点
哪五个数?
- min
- Q1
- Q2
- Q3
- max
盒图又称箱线图,盒须图,体现了五数概括。利用四分位数间距IQR,我们可以判断界限,找出异常值。通常设定1.5倍IQR外的为异常值。所以边界为:
IQR左=Q1−1.5×IQRIQR右=Q3+1.5×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()
|
四、数据对象的相似性对量
现实中,我们需要处理的数据具有不同的形式和特征,而对数据相似性的度量又是数据挖掘中非常重要的环节
4.1 数据矩阵和相异性矩阵
数据矩阵
这就是一张二维表
∣∣O11…On1……Q1m…Onm∣∣
属性为列,对象为行。
相异性矩阵
是相似性矩阵的反矩阵
∣∣0d(2,1)d(1,2)0∣∣
4.2 常见的数值距离度量
1️⃣ 欧氏距离 Eulidean Distance
d(i,j)=(xi1−xj1)2+⋯+(xin−xjn)2
2️⃣ 曼哈顿距离 Manhattan Distance
d(i,j)=∣xi1−xj1∣+∣xi2−xj2∣
3️⃣ 切比雪夫距离 Chebyshev Distance
d(i,j)=k→∞lim(f=1∑p∣xif−xjf∣k)k1=max(∣xif−xjf∣)
1 2
| def chebyshev(x,y): return np.max(np.abs(x-y))
|
4️⃣ 闵可夫斯基距离 Minkowski Distance
d(i,j)=q(xi1−xj1)q+⋯+(xin−xjn)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)=∣∣x∣∣⋅∣∣y∣∣x⋅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)∑f=1pσij(f)dij(f)
emmm,这个意思就是,σij(f)表示对象i,j之间是否具有共同的属性f,我们只统计具有共同属性的,没有的话σ就将被设置为0