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()
  • 相关阅读:
    postman的使用
    测试模型的发展论
    winform 控件没有Cursor属性时的处理办法
    【C#】两个DataTable关联查询(inner join、left join)C#代码
    【C#】datetimepicker里面如何设置日期为当天日期,而时间设为0:00或23:59?
    【C#】string格式的日期转为DateTime类型及时间格式化处理方法
    js解析后台传过来的json
    shell做成csv文件
    Hibernate查询总的记录数
    在引入的css或者js文件后面加参数的作用
  • 原文地址:https://www.cnblogs.com/ywjfx/p/10847149.html
Copyright © 2011-2022 走看看