• 【数据挖掘】数据统计性描述与相似度


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

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


    一、属性

    1.1 什么是属性

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

    1.2 属性的类型

    在这里插入图片描述

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


    二、数据的基本统计描述

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

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

    2.1 中心趋势度

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

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


    2.2 散布(离中)度量

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

    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 (Q3Q1)/2

    四分位数极差(IQR): Q 3 − Q 1 Q_3-Q_1 Q3Q1,它给出了数据中间一半的部分。

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

    哪五个数?

    • min
    • Q 1 Q_1 Q1
    • Q 2 Q_2 Q2
    • Q 3 Q_3 Q3
    • max

    盒图又称箱线图,盒须图,体现了五数概括。利用四分位数间距 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=Q11.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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述


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

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

    4.1 数据矩阵和相异性矩阵

    数据矩阵

    这就是一张二维表
    ∣ O 11 … Q 1 m … … O n 1 … O n m ∣ |O11Q1mOn1Onm| O11On1Q1mOnm
    属性为列,对象为行。

    相异性矩阵

    是相似性矩阵的反矩阵
    ∣ 0 d ( 1 , 2 ) d ( 2 , 1 ) 0 ∣ |0d(1,2)d(2,1)0| 0d(2,1)d(1,2)0

    4.2 常见的数值距离度量

    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)=(xi1xj1)2++(xinxjn)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)=xi1xj1+xi2xj2
    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)=klim(f=1pxifxjfk)k1=max(xifxjf)

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

    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(xi1xj1)q++(xinxjn)q
    可以说,曼哈顿距离和欧氏距离都是闵氏距离的推广

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

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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∣∣xy

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

    这个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

  • 相关阅读:
    kafka满五替换
    [netty-websocket-boot-starter] 轻量、高性能的WebSocket框架
    互补格雷码+相移码求解三维点云
    基于golang操作Docker
    用关键词获取商品详情和商品ID
    嵌入式分享合集63
    云原生 | Docker - [Dockerfile]
    Python数据分析实战-实现卡方检验(附源码和实现效果)
    【学习记录】调试千寻服务+DTU+导远RTK过程的记录
    My Seventy-ninth Page - 完全平方数 - By Nicolas
  • 原文地址:https://blog.csdn.net/qq_45957458/article/details/127711792