zoukankan      html  css  js  c++  java
  • 特征预处理

    # coding=utf-8
    from sklearn.preprocessing import MinMaxScaler
    from sklearn.preprocessing import StandardScaler
    from sklearn.preprocessing import Imputer
    import  numpy as np
    '''
    特征预处理:通过特定的统计方法,将数据转换成算法要求的数据 。包括数据缺失,数据填充等
    数值型数据:
        标准缩放:
            1、归一化:通过对原始数据进行变换把数据映射到(默认为0,1)之间;   
                计算公式:x' = (x-min)/(max-min) x'' = x'*(mx-mi)+mi 
                目的:使得某一个特征对最终结果不会造成更大的影响
                弊端:异常点对归一化的最大值最小值影响很大。
                适用场景:鲁棒性差,只适合小数据的场景(无异常数据)
                api:MinMaxScaler(feature_range=(2,4))
                        MinMaxScaler.fit_transform()
            2、标准化:通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
                公式:x' = (x-mean)/a 其中mean为平均值;a为标准差
                        方差:var = ((x1-mean)^2 +(x2-mean)^2+ ....)/n ,其中var为方差,n为每个特征样本数 ;方差可以考量数据的稳定性
                        标准差:对方差开平方,即var^(1/2)
                优点:对异常点没有影响,适合嘈杂数据场景
                api:StandardScaler()
                        StandardScaler.fit_transform()
                        StandardScaler.mean_
                        StandardScaler.with_std
                        
            3、缺失值:主要使用pandas处理(np.nan为float类型) 
                        删除:(不建议) dropna()
                        填充:填充使用列的均值、中位数、众数  fillna()  
                        替换:replace("?",np.nan)
                Api:Imputer(missing_values='NaN',strategy="mean")
                        Imputer.fit_transform()  
    类别型数据: one-hot编码
    
    时间类型:  时间的切分
    
    特征预处理Api:
        sklearn.preprocessing
        归一化Api:
    
    '''
    
    
    def mm():
        """
        归一化处理
        错误1:setting an array element with a sequence. 表示列没有对齐
        :return:
        """
        m = MinMaxScaler(feature_range=(2,4))
        data = m.fit_transform([[9,2,3],[40,50,4],[34,23,45]])
        print(data)
        return None
    
    def stand():
        """
        标准化缩放
        :return:
        """
        std = StandardScaler()
        data = std.fit_transform([[9,2,3],[40,50,4],[34,23,45]])
        print(data)
        return  None
    
    def im():
        """
        缺失值处理
        :return:
        """
        i = Imputer(missing_values='NaN',strategy='mean',axis=0)
        result =i.fit_transform([[9,np.nan,3],[np.nan,50,4],[34,23,45]])
        print(result)
        return None
    
    if __name__ == '__main__':
        mm()
        stand()
        im()
  • 相关阅读:
    arcgis api for js入门开发系列二十打印地图的那些事
    arcgis api 3.x for js 入门开发系列十九图层在线编辑
    arcgis api 3.x for js 入门开发系列十八风向流动图(附源码下载)
    influxDB 0.9 C# 读写类
    [InfluxDB] 安装与配置
    分布式,集群,冗余的理解
    CentOS 7.0系统安装配置图解教程
    InfluxDB学习之InfluxDB的基本操作| Linux大学
    InfluxDB v1.6.4 下载
    InfluxDB中文文档
  • 原文地址:https://www.cnblogs.com/ywjfx/p/10847149.html
Copyright © 2011-2022 走看看