特征预处理

# 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()

 

posted @ 2019-05-10 22:48  小白啊小白,Fighting  阅读(355)  评论(0编辑  收藏  举报