精华内容
下载资源
问答
  • 十六、数据变换和数据离散化

    千次阅读 2020-03-12 08:42:56
    数据变换是一种将原始数据变换成较好数据格式的方法,以便作为数据处理前特定数据挖掘算法的输入。 数据离散化是一种数据变换形式。 数据变换策略概述 通过规范化变换数据- 通过分箱离散化 通过直方图分析离散化 ...

    1.数据归约的概念

    数据变换的概念和数据离散化
    在数据预处理过程中,不同的数据适合不同的数据挖掘算。数据变换是一种将原始数据变换成较好数据格式的方法,以便作为数据处理前特定数据挖掘算法的输入。

    • 数据离散化是一种数据变换形式。
    • 数据变换策略概述
    • 通过规范化变换数据-
    • 通过分箱离散化
    • 通过直方图分析离散化
    • 通过聚类、决策树和相关分析离散化
    • 标称数据的概念分层产生

    2 数据变换策略概述

    在数据变换中,数据被变换或统一成适合于挖掘的形式。数据变换策略包括如下几种:

    • 光滑(smoothing):去掉数据中的噪声。这类技术包括分箱、回归和聚类。
    • 属性构造:可以由给定的属性构造新的属性并添加到属性集中,以帮助挖掘过程。
    • 聚集:对数据进行汇总或聚集。例如,可以聚集日销售数据,计算月和年销售量。。
    • 规范化:把属性数据按比例缩放,使之落入一个特定的小区间,如0.0~1.0。
    • 离散化:数值属性(例如,年龄)的原始值用区间标签(例如,0~10,11~20等)。
    • 由标称数据产生概念分层:属性,如street,可以泛化到较高的概念层,如city或country。

    3 通过规范化变数据

    3.1 最小-最大规范化:对原始数据进行线性变换

    令minA和maxA表示属性A的最小值和最大值,最小—最大值标准化将值vi映射为vi’(范围是[new_minA, new_maxA]:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GA9NM4Do-1583973479287)(01.png)]
    最小—最大值标准化保留了原有数据值的关系。如果后来的输入的标准化的数据落在了原有数据区间的外面,将会发生过界的错误。

    3.2 最小-最大规范化:例子

    假定收入属性的最小值和最大值分别是$12,000和$98,000. 将收入属性映射到范围[0.0, 1.0]上。则一个值为$73,600的收入标准化为。

    3.3 z-分数标准化

    属性A的值,基于平均值和标准差来标准化。计算公式:
    在这里插入图片描述
    其中A¯和σA是属性A的均值和标准差。这种方法在实际的最小值和最大值未知时很有用,或者离群点主导了最小—最大值的标准化。
    3.2.4 z-分数标准化——例子*
    假定income属性的均值和标准差是$54,000和$16,000。使用z-分数标准化,则$73,600被转换为: 。
    在这里插入图片描述

    4 数据离散化

    4.1 通过分箱离散化

    分箱并不使用类信息,因此是一种非监督的离散化技术,对用户制定的箱个数很敏感,也容易受离群点的影响。

    4.2 通过直方图分箱离散化

    直方图分析也是一种非监督离散化技术,因为它不使用类信息。

    4.3 通过聚类、决策树和相关分析离散化

    聚类将数据划分成簇或组;离散化的决策树方法是监督的,它们使用了类标号(分类)。

    5. 标称数据的概念分层产生

    5.1 标称数据的数据变化

    现在,我们考察标称数据的数据变换。特别地,我们研究标称属性的概念分层产生。标称属性具有有穷多个不同值(但可能很多),值之间无序。例如地理位置、工作类别和商品类型。

    1、对于用户和领域专家而言,人工定义概念分层是一项乏味和耗时的任务。幸运的是,许多分层结构都隐藏在数据库的模式中,并且可以在模式定义级自动地定义。
    2、概念分层可以用来把数据变换到多个粒度层。例如,关于销售的数据挖掘模式除了在单个分店挖掘之外,还可以针对指定的地区或国家挖掘。

    5.2 根据每个属性的不同值个数产生概念分层

    假设用户从数据库中选择了一个关于location的属性集country(15), province_or_state(365),city(3567), street(674339),但没有指出这些属性之间的分层次序。
    在这里插入图片描述

    展开全文
  • 数据集成 数据挖掘的过程中往往需要的数据分布在不同的数据库,数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据...数据变换 1. 简单函数变换 2. 规范化 最小最大规范化 值与最小值的差 再除以极差得...

    数据集成

    数据挖掘的过程中往往需要的数据分布在不同的数据库,数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。

    1. 实体识别
      同名异义
      名字相同但实际代表的含义不同
      异名同义
      名字不同但代表的意思相同
      单位不统一
    2. 冗余属性识别
      1. 相同的属性出现多次
      2. 同一属性命名不一致导致重复

    数据变换

    1. 简单函数变换

    2. 规范化

    最小最大规范化
    值与最小值的差 再除以极差得到规范后的值
    零-均值规范化
    值与平均值的差 在除以标准差
    这种规范的方式是当前最多的数据标准化方法
    小数定标规范法
    移动的小数位数取决于绝对值的最大值。

    3. 连续属性离散化

    连续属性的离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或者整数值代表落在每个子区间中的数据值。
    常用的离散化方法有:等宽法、等频法和聚类
    (1)等宽法
    (2)等频法
    (3)基于聚类分析的方法

    4. 属性构造

    根据已知的属性创造出新的属性。

    5. 小波变换

    小波分析的理论和方法在信号处理、图像处理、语音处理、模式识别、量子物理等领域得到越来越广泛的应用。

    数据规约

    在大数据集上进行复杂的数据分析和挖掘需要很长的时间,数据规约产生更小但保持数据完整性的新数据集。
    在规约后的数据集上进行分析和挖掘将更有效率。
    数据规约的意义在于:

    • 降低无效、错误数据对建模的影响,提高建模的准确性。
    • 少量且具代表性的数据将大幅缩减数据挖掘所需的时间。
    • 降低存储数据的成本。

    属性规约

    通过属性合并来创建新属性维数,或者直接通过删除不相关的属性来减少维数。目标是寻找出最小的属性子集并确保新数据子集的概率分布尽可能地接近原来数据集的概率分布。
    常见方法如下:
    合并属性
    逐步向前选择 -------依次选择最优属性添至空集合
    逐步向后删除 -------依次选择最差属性移出原集合
    决策树归纳 利用决策树的归纳方法对初始数据进行分类归纳学习,获得初始决策树,没有出现在该决策树上的可以认为是无关的属性。
    主成分分析 -----用较少的变量去解释原始数据中的大部分变量,即将许多相关性很高的变量转化成彼此相互独立或不相关的变量。

    数值规约

    数值规约是指通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法两类。
    有参数方法是使用一个模型来评估数据,只需存放参数,而不需要存放实际数据,例如回归和对数线性模型。无参数的方法就需要存放实际数据,例如直方图,聚类,抽样等

    展开全文
  • 数据预处理(三)数据变换

    万次阅读 2018-11-27 10:24:12
    文章目录数据变换一、特征二值化二、特征归一化(一)、总和标准化(二)、标准差标准化(三)、极大值标准化(四)、极差标准化(区间放缩法,0-1标准化)三、连续特征变换四、定性特征哑编码:One-hot编码 ...

    数据变换

    数据变换即对数据进行规范化处理,以便于后续的信息挖掘。常见的数据变换包括:特征二值化、特征归一化、连续特征变化,定性特征哑编码等。

    一、特征二值化

    特征二值化的核心在于设定一个阈值,将特征与该阈值比较后,转话为0或1(只考虑某个特征出现与否,不考虑出现次数,程度),它的目的是将连续数值细粒度的度量转化为粗粒度的度量。
    下面为Python实现特征二值化的方法:

    from sklearn.preprocessing import Binarizer
    import numpy as np
    data = [[1,2,4],[1,2,6],[3,2,2],[4,3,8]]
    binar = Binarizer(threshold=3) #设置阈值为3,<=3标记为0,>3标记为1
    print(binar.fit_transform(data))
    
    #fit_transform(X)中的参数X只能是矩阵
    print(binar.fit_transform(np.matrix(data[0])))
    

    结果如下:
    在这里插入图片描述

    二、特征归一化

    特征归一化也叫做数据无量纲化,主要包括:总和标准化、标准差标准化、极大值标准化、极差标准化。这里需要说明的是,基于树的方法是不需要进行特征归一化的,例如GBDT,bagging、boosting等等,而基于参数的模型或基于距离的模型,则都需要进行特征归一化。

    (一)、总和标准化

    总和标准化处理后的数据介于(0,1)之间,并且它们的和为1。总和标准化的步骤和公式也非常简单:分别求出各聚类要素所定义的数据的总和,以各要素的数据除以该要素的数据总和,即:
    在这里插入图片描述
    经过总和标准化处理后所得的新数据满足:
    在这里插入图片描述

    (二)、标准差标准化

    标准差标准化公式如下:
    在这里插入图片描述
    其中
    在这里插入图片描述
    标准差标准化处理后所得到的新数据,各要素(指标)的平均值0,标准差为1,即:
    在这里插入图片描述

    (三)、极大值标准化

    结果极大值标准化的公式如下所示:
    在这里插入图片描述
    极大值标准化后的新数据,各要素的最大值为1,其余各项都小于1。
    对稀疏数据进行中心化会破坏稀疏数据的结构,这样做没有什么意义,但可以对稀疏数据标准化,极大值标准化就是为稀疏数据设计的,同时这也是一种常用的方法,Python中极大值标准化为MaxAbsScaler(),如果要使用Python中标准差标准化(StandardScaler)则需要设置with_centering = False,否则将破坏数据稀疏性。

    (四)、极差标准化(区间放缩法,0-1标准化)

    极差标准化的计算公式如下:
    在这里插入图片描述
    经过极差标准化处理后的新数据,各要素的极大值为1,极小值为0,其余数值均在0与1之间。这里的min{x_ij}和max{x_ij}指的是和x_ij同一列的最小值和最大值。

    如果数据中有离群点,对数据进行均值和方差的标准化效果并不好,这时候可以使用robust_scale和RobustScaler作为代替,它们有对数据中心化和数据的缩放鲁棒性更强的参数。

    三、连续特征变换

    连续特征变换的常用方法有三种:基于多项式的数据变换、基于指数函数的数据变换、基于对数函数的数据变换。连续特征变换能够增加数据的非线性特征捕获特征之间的关系,有效提高模型的复杂度。

    #encoding=utf-8
    """
    生成多项式特征与自定义函数(如:log等)
    在输入特征中增加非线性特征可以有效提高模型的复杂度,其中最常用的是多项式特征
    matrix =
    [[0 1 2]
     [3 4 5]
     [6 7 8]]
    当degree = 2时,以第二行为例:
    [1 3 4 5 3*3 3*4 3*5 4*4 4*5 5*5]
    当degree = 3时,以第二行为例::
    [1 3 4 5 3*3 3*4 3*5 4*4 4*5 5*5 3*3*3 3*3*4 3*3*5 4*4*3 4*3*5 5*5*3 4*4*4 4*4*5 4*5*5 5*5*5]
    """
    import numpy as np
    from sklearn.preprocessing import PolynomialFeatures
    from sklearn.preprocessing import FunctionTransformer
    """生成多项式"""
    X = np.arange(9).reshape(3,3)
    print(X)
    ploy = PolynomialFeatures(2)
    
    print(ploy.fit_transform(X))
    
    ploy = PolynomialFeatures(3)
    print(ploy.fit_transform(X))
    
    """自定义转换器"""
    X = np.array([[0,1],[2,3]])
    transformer = FunctionTransformer(np.log1p) #括号内的就是自定义函数
    print(transformer.fit_transform(X))
    
    transformer = FunctionTransformer(np.exp)
    print(transformer.fit_transform(X))
    
    

    在这里插入图片描述

    四、定性特征哑编码:One-hot编码

    one-hot编码又称为独热码,即一位代表一种状态,及其信息中,对于离散特征,有多少个状态就有多少个位,且只有该状态所在位为1,其他位都为0。

    举例来说:
    天气有:{多云、下雨、晴天}三种情况,如果我们将“多云”表达为0,“下雨”表达为1,“晴天”表达为2,这样会有什么问题呢?
    我们发现不同状态对应的数值是不同的,那么在训练的过程中就会影响模型的训练效果,明明是同一个特征在样本中的权重却会发生了变化。

    那么,如何对这三个值进行one-hot编码呢?这时候我们就使用到one-hot编码,
    即对于:
    天气:{多云、下雨、晴天}
    湿度:{偏高、正常、偏低}
    当输入{天气:多云,湿度:偏低}时进行独热编码,天气状态编码可以得到{100},湿度状态编码可以得到{001},那么二者连起来就是最后的独热编码{100001}。此时{0,2}转换后的长度就是6 = 3+3,即{100001}。

    sklearn中有封装好的独热编码:OneHotEncoder

    from sklearn.preprocessing import OneHotEncoder
    data = [[1,0,3],[1,1,0],[0,2,1],[1,0,2]]
    oneHotEn = OneHotEncoder()
    print(oneHotEn.fit(data))
    print(oneHotEn.transform([[1,2,2]]).toarray())
    print(oneHotEn.n_values_) #不同特征对应的值有几种
    print(oneHotEn.feature_indices_) #不同特征对应的索引号
    

    输出:
    在这里插入图片描述
    代码分析:
    data是一个矩阵,一列代表一个特征,可知矩阵有3个特征,且第一个特征有2个特征值(0,1),第二个特征有3个特征值(0,1,2),第三个特征有4个特征值(0,1,2,3)。当输入[1,2,2]时,相当于第一个特征,特征值为1的位标记为1,第二个特征,特征值为2的位标记为1,第三个特征,特征值为2的位标记为1。
    在这里插入图片描述
    将离散特征进行one-hot编码后,距离计算就会更加合理。

    展开全文
  • Python数据变换

    千次阅读 2018-05-27 17:00:13
    数据变换主要是对数据进行规范化处理,将数据转换成“适当的”形式,以适用于挖掘任务及算法的需要。 1、简单函数变换: 简单函数变换是对原始数据进行某些数学函数变换,常用的变换包括平方、开方、取对数、差分...

    数据变换主要是对数据进行规范化处理,将数据转换成“适当的”形式,以适用于挖掘任务及算法的需要。

     

    1、简单函数变换:

    简单函数变换是对原始数据进行某些数学函数变换,常用的变换包括平方、开方、取对数、差分运算等。即:

     

                                                                         x'=x^2

                                                                          x'=根号下x

                                                         x'=log(x)

     

     

                                                  

    简单的函数变换用来将不具有正态分布的数据变换成具有正态分布的数据。在时间序列分析中,有时简单的对数变换或者差分运算就可以将非平稳序列转换成平稳序列。在数据挖掘中简单的函数变换很有必要。

     

    来自 <http://baijiahao.baidu.com/s?id=1585969571369834055&wfr=spider&for=pc>

     

    2、规范化

    为了清除指标之间量纲和取值范围的差异影响,将数据按照比例进行缩放,使之落在指定的范围内。

     

    (1)最小-最大规范化

     

    最小-最大规范化也称为离差标准化,是对原始数据的线性变换,将数值值映射到[0,1]之间。转换公式如下:

    这是最简单也是最容易想到的方法,通过遍历feature vector里的每一个数据,将Max和Min的记录下来,并通过Max-Min作为基数(即Min=0,Max=1)进行数据的归一化处理:

    LaTex:{x}_{normalization}=\frac{x-Min}{Max-Min}

    其中,max为样本数据的最大值,min为样本数据的最小值。max-min为极差。离差标准化保留了原来数据中存在的关系,是消除量纲和数据取值范围影响的最简单方法。这种处理的缺点是若数值集中某个数值很大,则规范化后各值会接近于0,并且将会相差不大。若将来遇到超过目前属性[min,max]取值范围的时候,会引起系统出错,需要重新确定min和max;

    Python实现:

    1. def MaxMinNormalization(x,Max,Min):  
    1.     x = (x - Min) / (Max - Min);  
    2.     return x;  

     

     

    (2)零-均值规范化

    这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,这里的关键在于复合标准正态分布,个人认为在一定程度上改变了特征的分布,关于使用经验上欢迎讨论,我对这种标准化不是非常地熟悉,转化函数为:

    LaTex:{x}_{normalization}=\frac{x-\mu }{\sigma }

    Python实现:

    1. def Z_ScoreNormalization(x,mu,sigma):  
    1.     x = (x - mu) / sigma;  
    2.     return x;  

    这里一样,mu(即均值)用np.average(),sigma(即标准差)用np.std()即可。

     

     

    (3)小数定标规范化

    通过移动属性值的小数位数,将属性值映射到[-1,1]之间,移动的小数位数取决于属性值绝对值的最大值:

     

     

     

    (4)Sigmoid函数

    Sigmoid函数是一个具有S形曲线的函数,是良好的阈值函数,在(0, 0.5)处中心对称,在(0, 0.5)附近有比较大的斜率,而当数据趋向于正无穷和负无穷的时候,映射出来的值就会无限趋向于1和0,是个人非常喜欢的“归一化方法”,之所以打引号是因为我觉得Sigmoid函数在阈值分割上也有很不错的表现,根据公式的改变,就可以改变分割阈值,这里作为归一化方法,我们只考虑(0, 0.5)作为分割阈值的点的情况:

     

     

    LaTex:{x}_{normalization}=\frac{1}{1+{e}^{-x}}

    Python实现:

    1. def sigmoid(X,useStatus):  
    1.     if useStatus:  
    2.         return 1.0 / (1 + np.exp(-float(X)));  
    3.     else:  
    4.         return float(X);  

     

     

     

    展开全文
  • 什么时候Normalization4、所有情况都应当Standardization或Normalization么5、一些其他的数据变换方式5.1、l...
  • 数据变换的几种形式

    千次阅读 2019-09-28 17:46:06
    数据变换主要是对数据进行规范化处理,达到适用于挖掘的目的。  简单的函数变换包括平方、开方、取对数查分运算等,可以将不具有正态分布的数据变换成具有正态分布的数据,对于时间序列分析,有时简单的对数变换和...
  • 数据变换的万能钥匙:Box-Cox变换

    千次阅读 2017-06-11 21:09:26
    摘要:至于说什么时候应该用哪个函数来作变换...》,你一定已经熟悉了数据变换的目的和意义,也了解了常用的若干种数据变换函数,如、、等。 至于说什么时候应该用哪个函数来作变换,原文也针对常见的几种情况给出了一
  • 如何解决网页粘贴数据到excel数据变换问题 首先我们获取过来的数据
  • ML之FE:特征工程处理中常用的数据变换(log取对数变换等)之详细攻略 目录 特征工程处理中常用的数据变换(log取对数变换等)之详细攻略 log取对数变换 特征工程处理中常用的数据变换(log取对数变换等)...
  • 数据变换中,数据被变换或统一成适合于挖掘的形式,策略包括以下几种: (1)光滑:(2)属性构造(特征构造)(3)聚集(4)规范化(5)离散化(6)由标称数据产生概念分层 反正还有很多,我也不想写了,等有机会...
  • 数据变换 例如:渠道之间的数据量级差距太大,进行简单的函数转换,这俩根据散点图,采用log对数函数 01 遍历数据框进行数据操作 import math I=range(Data.index.size) J=range(Data.columns.size) i=0 j...
  • torchvision.transforms中常用的数据变换 (1)torchvision.transforms.Resize():用于对载入的图片数据按我们需求的大小进行缩放。传递给这个类的参数可以使一个整形数据,也可以是一个类似于(h,w)的序列,其中,...
  • 数据准备(预处理)过程中常常需要进行数据的处理,例如数据清洗包括缺失值和异常值处理,数据变换如规范化数据,数据规约如属性规约(选择部分有代表性的属性)等,在Python有很多进行数据预处理的快速方法,以数据...
  • 数据预处理-数据变换-小波变换

    千次阅读 2018-08-04 15:02:30
    代码来源:Python数据分析与挖掘实战 小波变换用于通信或者电子专业信号分析使用 #-*- coding: utf-8 -*- #利用小波分析进行特征分析 import pywt from scipy.io import loadmat #mat是Python专用格式,需要用...
  • 数据变换是指将数据转换或统一成适合于挖掘的形式。 (1)数据泛化:使用概念分层,用高层概念替换低层或“原始”数据。例如,分类的属性,如街道,可以泛化为较高层的概念,如城市或国家。类似地,数值属性如年龄...
  • 我们在进行统计分析前,需要对数据进行描述,观察数据是否服从正态分布,若数据不满足正态,可以对数据做一些变换,使其服从正态分布后再行分析,SPSS Modeler中,使用变换节点来实现数据变换。 变换节点: 案例:...
  • 目录 数据变换的目的 数据变换的七种常见方式 初值化变换 均值化变换 百分比变换 倍数变换 归一化变换 极差最大值化变换 区间值化变换 1. matlab ...
  • 1. 数据变换 2. 数据规范化方法 归一化(Min-max规范化) 标准化(Z-score标准化) 小数定标规范化 4. 规范化的作用 3. 数据挖掘算法中是否都需要进行规范化呢? 4. 标准化有什么注意事项? 具体写在了我的笔记里: ...
  • 挖掘的数据类型:时间序列,序列,数据流,时间空间数据,多媒体数据,文本数据,图,社会网络和web数据;  挖掘:知识类型、使用的技术、目标应用的技术、挖掘任务分类。 衡量取样数据质量的标准: 资料完整无缺...
  • 1、数据集成:将多个数据源中的数据合并并存放在一个一致的数据仓库中。 数值属性数据判断重复:计算属性A和属性B的相关系数。其中相关系数在[-1,1]之间,若相关系数大于0且值越大说明相关性越强,若相关系数等于0...
  • 例子参考: 如图:
  • 数据变换到0到255之间,归一化

    万次阅读 2017-11-22 15:56:35
    piexl为各个坐标点的数据值(将其转换到0到255之间) int ymax=255;//要归一的范围的最大值 int ymin=0;//要归一的范围的最小值 xmax=max(piexl);所有数据中最大的 xmin=min(piexl);所有数据中最小的 xiugaihou...
  • 数据集成:是将储存咋两个数据框内的数据,以“关键词”为依据,以行为单位做列向合并,是通过merge()函数实现,基本形式:merge(数据框1,数据框2,by="关键字")。 但是在数据集成中可能会有这些...
  • 数据预处理-对数变换

    千次阅读 2020-03-24 21:13:11
    这里写自定义目录标题 数据分布的倾斜有很多负面的影响。 ...Log变换通常用来创建单调的数据变换。它的主要作用在于帮助稳定方差,始终保持分布接近于正态分布并使得数据与分布的平均值无关。 ...
  • (二)栅格数据变换 1、平移 2、扭曲 3、旋转 4、翻转 5、重设比例 6、镜像 三、实验目的 1、掌握栅格数据投影方法; 2、掌握栅格数据变换的方法。 四、实验数据 dem.tif 五、实验过程 (一)栅格数据...
  • 1.1 右偏态数据变换方法 对数(ln、log10) 均方根(全为正数) 3次方根(正负均有) 1.1 左偏态数据变换方法 e的乘方 平方 3次方 2 数据标准化(Normalization) 2.1 线性变换   通常将数据线性变换到[0, 1]...
  • 数据变换策略主要有光滑、属性构造、聚集、规范化、离散化和由标称数据产生概念分层。 例如:通过规范化变换数据二. 数据的离散化 离散化技术可以根据如何进行离散化加以分类。离散化可以分为监督和非监督的离散...
  • 使用matlab对采样数据文本进行fft变换步骤与代码 傅里叶变换。 提供对采样数据文本进行FFT(快速傅里叶变换)的代码模板,并对代码重要部分做了注释,便于理解 matlab FFT 傅里叶变换
  • 数据降维-PCA算法(K-L变换

    千次阅读 2019-03-29 14:42:26
    PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。 PCA主要步骤: 设有m条n维数据: 1)将原始数据按列组成n行m列矩阵X 2)将X的每一行(代表一个...
  • 在傅里叶变换,短时傅里叶变换的基础上,介绍了小波变换思想,和步骤,以及离散小波变换等思想。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 363,514
精华内容 145,405
关键字:

数据变换