数据集由数据对象组成,每个数据对象都代表一个对象或者一个实体。
例如在一张学生名单中,每个记录就表示着一个学生实体。
说白了,属性就是一个能够表征对象的东西,它反映了对象的性质,或者说特征。属性,也可以称作特征(Feature),字段(Field),维度(Dimension),变量(Variable)。

如上图所示,属性通过是否具有可比性,可以分为定性和定量属性。定性属性又可以往下细分为对称属性,二元属性和序数属性,而定量属性可再分为区间标度属性和比率标度属性。
评价一个数据的好坏一般是通过其分布形态,而对其分布形态进行的描述不仅可以认识数据,判断好坏,更能识别噪声或是离群点。
常见的统计性描述可以概括为:集中趋势、离散趋势、相对离散程度和分布形态四个维度。
指的是一组数据向某一中心值靠拢的程度,反映了一组数据的中心点所在。
1️⃣ 均值
最常见的统计量,可以表征数据的总体水平。但均值对于噪声比较敏感。
2️⃣ 中位数
先排序,再找中心。毫无疑问,这个方法的时间开销至少是 O ( n l o g n ) O(nlog_n) O(nlogn)级别的。所以有时候,我们可以采用近似估计的方式去计算。
假定数据可以通过数值划分为区间,且知道每个区间的个数。于是,中位数可用以下的公式表示。
m
e
d
i
a
n
=
L
1
+
[
N
2
−
(
∑
f
)
l
f
m
e
d
i
a
n
]
w
i
d
t
h
median=L_1+\left [\frac{\frac{N}{2}-(\sum f)_l}{f_{median}}\right ]width
median=L1+[fmedian2N−(∑f)l]width
3️⃣ 众数
众数是一组数据中出现最多的数值,有多少个众数,那么我们称数据集为多少峰,例如一个众数:单峰,两个:双峰。
4️⃣ 中列数
Midrange,表示最大值和最小值的均值。也可以度量中心趋势哦。不过与其说度量中心,倒不如说是数据范围的中心,正如mid和range的意思一般。
用于评估数据的散布或发散程度。
1️⃣ 极差、四分位数和四分位数极差
极差(Range)也称范围误差或者全距,指的是最大值和最小值的差距。也是衡量变动最简单的指标。
四分位数:将数据从大到小排序后,用三个点(25,50,75)将数据分为三等分,这三个点上对应的位置就是四分位数。例如 Q 1 , Q 2 , Q 3 Q_1,Q_2,Q_3 Q1,Q2,Q3表示第一四分位数,第二四分位数,第三四分位数。(四大天王有三个很奇怪吗🐕)
分半四分位差:即 ( Q 3 − Q 1 ) / 2 (Q_3-Q_1)/2 (Q3−Q1)/2
四分位数极差(IQR): Q 3 − Q 1 Q_3-Q_1 Q3−Q1,它给出了数据中间一半的部分。
2️⃣ 五数概括、盒图和离群点
哪五个数?
盒图又称箱线图,盒须图,体现了五数概括。利用四分位数间距
I
Q
R
IQR
IQR,我们可以判断界限,找出异常值。通常设定1.5倍
I
Q
R
IQR
IQR外的为异常值。所以边界为:
I
Q
R
左
=
Q
1
−
1.5
×
I
Q
R
I
Q
R
右
=
Q
3
+
1.5
×
I
Q
R
IQR_{左}=Q_1-1.5\times IQR \\ IQR_右=Q_3+1.5\times IQR
IQR左=Q1−1.5×IQRIQR右=Q3+1.5×IQR
一个好的数据分析,应当是要做到简单易懂的,复杂的事情交给机器去做吧~
通过图形清晰有效地表达数据称为数据可视化,他将数据所包含的信息的综合体,包括属性和变量,抽象化为一些图表形式。
这部分的话暂时不打算展开来讲了,我可能会新开一章专门介绍matplotlib+sns+pyecharts(排面)。
这里简单贴一个小小的散点图。
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()

现实中,我们需要处理的数据具有不同的形式和特征,而对数据相似性的度量又是数据挖掘中非常重要的环节
数据矩阵
这就是一张二维表
∣
O
11
…
Q
1
m
…
…
O
n
1
…
O
n
m
∣
|O11…Q1m……On1…Onm|
∣
∣O11…On1……Q1m…Onm∣
∣
属性为列,对象为行。
相异性矩阵
是相似性矩阵的反矩阵
∣
0
d
(
1
,
2
)
d
(
2
,
1
)
0
∣
|0d(1,2)d(2,1)0|
∣
∣0d(2,1)d(1,2)0∣
∣
1️⃣ 欧氏距离 Eulidean Distance
d
(
i
,
j
)
=
(
x
i
1
−
x
j
1
)
2
+
⋯
+
(
x
i
n
−
x
j
n
)
2
d(i,j)=\sqrt{(x_{i1}-x_{j1})^2+\dots+(x_{in}-x_{jn})^2}
d(i,j)=(xi1−xj1)2+⋯+(xin−xjn)2
2️⃣ 曼哈顿距离 Manhattan Distance
d
(
i
,
j
)
=
∣
x
i
1
−
x
j
1
∣
+
∣
x
i
2
−
x
j
2
∣
d(i,j)=|x_{i1}-x_{j1}|+|x_{i2}-x_{j2}|
d(i,j)=∣xi1−xj1∣+∣xi2−xj2∣
3️⃣ 切比雪夫距离 Chebyshev Distance
d
(
i
,
j
)
=
lim
k
→
∞
(
∑
f
=
1
p
∣
x
i
f
−
x
j
f
∣
k
)
1
k
=
m
a
x
(
∣
x
i
f
−
x
j
f
∣
)
d(i,j)=\lim_{k\to\infin}(\sum_{f=1}^p|x_{if}-x_{jf}|^k)^\frac{1}{k}=max(|x_{if}-x{jf}|)
d(i,j)=k→∞lim(f=1∑p∣xif−xjf∣k)k1=max(∣xif−xjf∣)
def chebyshev(x,y):
return np.max(np.abs(x-y))
4️⃣ 闵可夫斯基距离 Minkowski Distance
d
(
i
,
j
)
=
q
(
x
i
1
−
x
j
1
)
q
+
⋯
+
(
x
i
n
−
x
j
n
)
q
d(i,j)=^q\sqrt{(x_{i1}-x_{j_1})^q+\dots+(x_{in}-x_{jn})^q}
d(i,j)=q(xi1−xj1)q+⋯+(xin−xjn)q
可以说,曼哈顿距离和欧氏距离都是闵氏距离的推广
def minkowski(x,y,p):
return np.sum(np.abs(x-y)**p)**(1/p)
5️⃣ 汉明距离 Hamming Distance
两个等长字符串之间变换需要的最小次数
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️⃣ 余弦相似性
一般用于文档数据的相似性度量。
s
i
m
(
x
,
y
)
=
x
⋅
y
∣
∣
x
∣
∣
⋅
∣
∣
y
∣
∣
sim(x,y)=\frac{x\cdot y}{||x||\cdot||y||}
sim(x,y)=∣∣x∣∣⋅∣∣y∣∣x⋅y
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
=
1
p
σ
i
j
(
f
)
d
i
j
(
f
)
∑
f
=
1
p
σ
i
j
(
f
)
d(i,j)=\frac{\sum_{f=1}^p\sigma^{(f)}_{ij}d_{ij}^{(f)}}{\sum_{f=1}^p\sigma^{(f)}_{ij}}
d(i,j)=∑f=1pσij(f)∑f=1pσij(f)dij(f)
emmm,这个意思就是,
σ
i
j
(
f
)
\sigma^{(f)}_{ij}
σij(f)表示对象
i
,
j
i,j
i,j之间是否具有共同的属性
f
f
f,我们只统计具有共同属性的,没有的话
σ
\sigma
σ就将被设置为0