精华内容
下载资源
问答
  • 一些常用python预处理方法

    万次阅读 2016-04-23 23:05:39
    常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal and Variance Scaling) 变换后各维特征0均值,单位方差。也叫z-score规范化(零均值规范化

    转载自:http://2hwp.com/2016/02/03/data-preprocessing/

    常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍;

    1. 标准化(Standardization or Mean Removal and Variance Scaling)

    变换后各维特征有0均值,单位方差。也叫z-score规范化(零均值规范化)。计算方式是将特征值减去均值,除以标准差。

    1
    
    sklearn.preprocessing.scale(X)
    

    一般会把train和test集放在一起做标准化,或者在train集上做标准化后,用同样的标准化器去标准化test集,此时可以用scaler

    1
    2
    3
    
    scaler = sklearn.preprocessing.StandardScaler().fit(train)
    scaler.transform(train)
    scaler.transform(test)
    

    实际应用中,需要做特征标准化的常见情景:SVM

    2. 最小-最大规范化

    最小-最大规范化对原始数据进行线性变换,变换到[0,1]区间(也可以是其他固定最小最大值的区间)

    1
    2
    
    min_max_scaler = sklearn.preprocessing.MinMaxScaler()
    min_max_scaler.fit_transform(X_train)
    

    3.规范化(Normalization)

    规范化是将不同变化范围的值映射到相同的固定范围,常见的是[0,1],此时也称为归一化。《机器学习》周志华

    将每个样本变换成unit norm。

    1
    2
    
    X = [[ 1, -1, 2],[ 2, 0, 0], [ 0, 1, -1]]
    sklearn.preprocessing.normalize(X, norm='l2')
    

    得到:

    1
    
    array([[ 0.40, -0.40, 0.81], [ 1, 0, 0], [ 0, 0.70, -0.70]])
    

    可以发现对于每一个样本都有,0.4^2+0.4^2+0.81^2=1,这就是L2 norm,变换后每个样本的各维特征的平方和为1。类似地,L1 norm则是变换后每个样本的各维特征的绝对值和为1。还有max norm,则是将每个样本的各维特征除以该样本各维特征的最大值。

    在度量样本之间相似性时,如果使用的是二次型kernel,需要做Normalization

    4. 特征二值化(Binarization)

    给定阈值,将特征转换为0/1

    1
    2
    
    binarizer = sklearn.preprocessing.Binarizer(threshold=1.1)
    binarizer.transform(X)
    

    5. 标签二值化(Label binarization)

    1
    
    lb = sklearn.preprocessing.LabelBinarizer()
    

    6. 类别特征编码

    有时候特征是类别型的,而一些算法的输入必须是数值型,此时需要对其编码。

    1
    2
    3
    
    enc = preprocessing.OneHotEncoder()
    enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
    enc.transform([[0, 1, 3]]).toarray()  #array([[ 1., 0., 0., 1., 0., 0., 0., 0., 1.]])
    

    上面这个例子,第一维特征有两种值0和1,用两位去编码。第二维用三位,第三维用四位。

    另一种编码方式

    newdf=pd.get_dummies(df,columns=["gender","title"],dummy_na=True)

    7.标签编码(Label encoding)

    1
    2
    3
    4
    5
    6
    
    le = sklearn.preprocessing.LabelEncoder()  
    le.fit([1, 2, 2, 6]) 
    le.transform([1, 1, 2, 6])  #array([0, 0, 1, 2]) 
    #非数值型转化为数值型
    le.fit(["paris", "paris", "tokyo", "amsterdam"])
    le.transform(["tokyo", "tokyo", "paris"])  #array([2, 2, 1])
    

    8.特征中含异常值时

    1
    
    sklearn.preprocessing.robust_scale
    

    9.生成多项式特征

    这个其实涉及到特征工程了,多项式特征/交叉特征。

    1
    2
    
    poly = sklearn.preprocessing.PolynomialFeatures(2)
    poly.fit_transform(X)
    

    原始特征:

    转化后:

    展开全文
  • 数据预处理方法有哪些

    千次阅读 2020-08-12 14:02:54
    数据处理的工作时间占整个数据分析项目的70%以上,因此,数据的质量直接决定了分析模型的准确...简单来说,就是把数据里面哪些缺胳膊腿的数据、问题的数据给处理掉。总的来讲,数据清洗是一项繁重的任务,需要根据...

      数据处理的工作时间占整个数据分析项目的70%以上,因此,数据的质量直接决定了分析模型的准确性。那么,数据预处理的方法是什么呢?例如数据清理、数据集成、数据规范、数据转换等,其中最常用的是数据清理和数据集成,下面中琛魔方将来详细介绍一下这2种方法。

    数据预处理的方法有哪些

     

      数据预处理的方法

     

      1、数据清洗

     

      数据清洗是通过填补缺失值,平滑或删除离群点,纠正数据的不一致来达到清洗的目的。简单来说,就是把数据里面哪些缺胳膊腿的数据、有问题的数据给处理掉。总的来讲,数据清洗是一项繁重的任务,需要根据数据的准确性、完整性、一致性、时效性、可信性和解释性来考察数据,从而得到标准的、干净的、连续的数据。

     

      (1)缺失值处理

     

      实际获取信息和数据的过程中,会存在各类的原因导致数据丢失和空缺。针对这些缺失值,会基于变量的分布特性和变量的重要性采用不同的方法。若变量的缺失率较高(大于80%),覆盖率较低,且重要性较低,可以直接将变量删除,这种方法被称为删除变量;若缺失率较低(小于95%)且重要性较低,则根据数据分布的情况用基本统计量填充(最大值、最小值、均值、中位数、众数)进行填充,这种方法被称为缺失值填充。对于缺失的数据,一般根据缺失率来决定“删”还是“补”。

     

      (2)离群点处理

     

      离群点(异常值)是数据分布的常态,处于特定分布区域或范围之外的数据通常被定义为异常或噪声。我们常用的方法是删除离群点。

     

      (3)不一致数据处理

     

      实际数据生产过程中,由于一些人为因素或者其他原因,记录的数据可能存在不一致的情况,需要对这些不一致数据在分析前进行清理。例如,数据输入时的错误可通过和原始记录对比进行更正,知识工程工具也可以用来检测违反规则的数据。

     

      2、数据集成

     

      随着大数据的出现,我们的数据源越来越多,数据分析任务多半涉及将多个数据源数据进行合并。数据集成是指将多个数据源中的数据结合、进行一致存放的数据存储,这些源可能包括多个数据库或数据文件。在数据集成的过程中,会遇到一些问题,比如表述不一致,数据冗余等,针对不同的问题,下面简单介绍一下该如何处理。

     

      (1)实体识别问题

     

      在匹配来自多个不同信息源的现实世界实体时,如果两个不同数据库中的不同字段名指向同一实体,数据分析者或计算机需要把两个字段名改为一致,避免模式集成时产生的错误。

     

      (2)冗余问题

     

      冗余是在数据集成中常见的一个问题,如果一个属性能由另一个或另一组属性“导出”,则此属性可能是冗余的。

     

      (3)数据值的冲突和处理

     

      不同数据源,在统一合并时,需要保持规范化,如果遇到有重复的,要去重。

     

      在实践中,我们得到的数据可能包含大量的缺失值、异常值等,这对数据分析是非常不利的。此时,我们需要对脏数据进行预处理,以获得标准、干净和连续的数据,这些数据可以用于数据分析、数据挖掘等。

    展开全文
  • pandas常用数据预处理方法

    千次阅读 2018-04-10 12:52:55
    数据样式python代码df = pd.read_csv('../dataset/ai_risk_train/train_auth_info.csv', low_memory=False) # print(df)'''查看数据的基本信息''' print(df.info())'''整个数据的整体的分布''' ...

    数据样式

    这里写图片描述

    python代码

    df = pd.read_csv('../dataset/ai_risk_train/train_auth_info.csv', low_memory=False)
    # print(df)
    
    '''查看数据的基本信息'''
    print(df.info())
    
    '''整个数据的整体的分布'''
    print(df.describe())
    
    '''查看数据集的空值,或者说是缺失值'''
    print(df.isnull().sum())
    
    '''查看唯一值 '''
    print(df['auth_time'].unique())
    
    
    print(df.head(3))  # 前3行
    print(df.tail(3))    # 后3行
    
    
    print(df.loc[630])   # 提取索引值为630的那一行  默认0开始
    print(df.loc[2])     # 取第三行的数据
    print(df.iloc[2:5, :3])  # 取第二,三四行和前3列
    
    print(df[(df['id_card'] <= '5****************9') & (df['phone'] == '135****3522')])
    df = df.dropna(how='any')   # 发现df中的空值会全部删掉
    df = df.fillna(value=0)   # 用数据0来填充空值
    
    df['name'] = [index for index in range(df.shape[0])]
    df['auth_time'] = df['auth_time'].fillna(df['name'].mode())   # 用数据集里面的name众数来填充auth_time的空值
    
    df['name'] = ['aBcD' for index in range(df.shape[0])]
    # df['name'] = df['name'].map(str.upper).head(3)  # 只对name属性前三行进行大写转换
    df['name'] = df['name'].map(str.__len__).head(3)  # 只对name属性前三行计算字符串长度
    
    '''字符串的快速映射转换'''
    df['id'] = df['id'].map({'501951980776722440': '一等舱', '525890212484616200': '二等舱', '599309364691472392': '三等舱'})
    
    '''转换数据类型 int->float64'''
    df['name'] = [index for index in range(df.shape[0])]
    print(df.dtypes)
    df['name'] = df['name'].astype('float64')
    print(df.dtypes)
    
    '''更改列的名字'''
    df = df.rename(columns={'id': '是否获救'})
    print(df)
    
    '''数据的代替,替换'''
    df['name'] = ['aBcD' for index in range(df.shape[0])]
    df['name'] = df['name'].replace('aBcD', 'ABCD')
    print(df.head(3))

    由于时间关系,这里就不贴运行结果的图了,这个数据集是马上消费金融风险预测的数据

    参考资料
    展开全文
  • 给大家分享了python中常用的九种预处理方法,对大家学习或使用python具有一定的参考价值,需要的朋友们可以一起来看看。
  • 常用预处理指令

    2020-09-25 00:13:24
    下面是部分常用预处理指令: 指令 用途 # 空指令无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 #ifdef 如果宏已经定义...


    预处理指令是以#号为代码开头。下面是部分常用的预处理指令:

    指令 用途
    # 空指令无任何效果
    #include 包含一个源代码文件
    #define 定义宏
    #undef 取消已定义的宏
    #if 如果给定条件为真,则编译下面代码
    #ifdef 如果宏已经定义,则编译下面代码
    #ifndef 如果宏没有定义,则编译下面代码
    #elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
    #endif 结束一个#if……#else条件编译块
    #error 停止编译并显示错误信息

    一、条件编译

    条件编译指令将决定那些代码被编译,而那些不被编译的。可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件。

    1.#if指令

    #if指令检测关键后的常量表达式。如果为真,则就编译后面的代码,直到出现#else、#elif或者#endif为止;否则就不进行编译。

    2.#endif

    #endif终值#if预处理指令。

    #define DEBUG 0
    int main()
    {
    	#if DEBUG
    		代码块1
        #endif
        	代码块2
    }
    

    由于程序定义DEBUG宏代表0,所以#if条件为假,不编译后面的代码直到#endif,所以程序直接执行代码块2

    3.#ifdef和#ifndef

    #define DEBUG
    
    int main()
    {
    	#ifdef DEBUG
    		代码块1
        #endif
        
        #ifndef DEBUG
        	代码块2
        #endif
    }
    

    #if defined等价于#ifdef; #if !defined等价于#ifndef

    4.#else指令

    #else指令用于某个#if指令之后,当前面的#if指令的条件不为真时,就编译#else后面的代码。#endif指令将中指上面的条件块。

    #define DEBUG
    
    int main()
    {
        #ifdef DEBUG
             代码块1
        #else
             代码块2
        #endif
             代码块3
    }
    

    5.#elif指令

    #elif预处理指令综合了#else#if指令的作用。

    #define TWO
    
    int main()
    {
        #ifdef ONE
              代码块1
        #elif defined TWO
              代码块2
        #else
              代码块3
        #endif
    }
    

    执行代码块3

    二、其他一些标准指令

    1.#pragme

    #pragma指令没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息。

    #pragma region 功能
    	代码块
    #pragma endregion
    
    展开全文
  • Pandas常用数据预处理方法及指令

    千次阅读 2018-01-23 13:21:11
    常用数据预处理方法 这个部分总结的是在python中常见的数据预处理方法。 2.1标准化(Standardization or Mean Removal and Variance Scaling) 变换后各维特征0均值,单位方差。也叫z-score规范...
  • 问关于 C 语言中的预处理命令 答 我们可以在 C 源程序 中插入传给 编译程序 的各种指令这些指令被称为 预处理器指令等价于 汇编语言中的伪指令 它们扩充了程序设计的环境 现把常用预处理命令 总结如下 预处理程序...
  • 问关于 C 语言中的预处理命令 答 我们可以在 C 源程序 中插入传给 编译程序 的各种指令这些指令被称为 预处理器指令等价于 汇编语言中的伪指令 它们扩充了程序设计的环境 现把常用预处理命令 总结如下 1. 预处理...
  • C语言中常用预处理指令
  • 问关于C语言中的预处理命令 答 我们可以在C 源程序中插入传给 编译程序的各种指令这些指令被称为预处理器指令等价于汇编语言中的伪指令它们扩充了程序设计的环境 现把常用预处理命令总结如下 1. 预处理程序 按照...
  • 文本建模常用预处理方法

    千次阅读 2015-07-02 19:31:55
    file = "lemur-stopwords.txt",简单说是没有任何含义的词汇(a、about、above、上午、下午、中午),中英文都相应的词集。 5、词干分析: type = "porter2-stemmer",看下面就懂了。 abandon abandon ...
  • 常用的数据预处理方法

    千次阅读 2019-05-12 14:05:50
    一、删除处理 data.drop() 默认参数axis=0,表示对行index进行操作,如需对columns进行操作需要更改默认参数为axis=1;默认参数inplace=False,表示该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe...
  • 数据归一化处理,比较简单公式为 (x-min)/(max-min),主要目的是将数据的范围缩小至0-1之间,因而对数据绝对值的大小不敏感 2.数据标准化处理,也比较简单,公式为(x-avg)/sigma, 其中avg为数据的均值,sigma为...
  • Pandas常用数据预处理方法 代码详见https://github.com/RenDong3/Python_Note 1基本数学运算 除法运算 乘法运算 2归一化操作 3排序操作 升序排序 降序排序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,889
精华内容 38,755
关键字:

常用的预处理方法有哪些