• 机器学习之特征工程(1.1)


    为什么我们要进行归一化/标准化?

    • 特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其它的特征
    • 我们需要用到一些方法进行无量纲化,使不同规格的数据转换到同一规格

    归一化:

    from sklearn.preprocessing import MinMaxScaler
    import pandas as pd
    
    def minmax_demo():
        """
        归一化
        :return:
        """
        # 1、获取数据
        data = pd.read_csv(r"D:/machine learning/dating")
        data = data.iloc[:, :3]
        print("data:
    ", data)
    
        # 2、实例化一个转换器类
        transfer = MinMaxScaler(feature_range=[0, 1])
    
        # 3、调用fit_transform
        data_new = transfer.fit_transform(data)
        print("data_new:
    ", data_new)
    
        return None

    注意最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。解决方案如下:

    标准化

        通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内;

    • 对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变
    • 对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。
    from sklearn.preprocessing import StandardScaler
    import pandas as pd
    
    def stand_demo():
        """
        标准化
        :return:
        """
        # 1、获取数据
        data = pd.read_csv("dating.txt")
        data = data.iloc[:, :3]
        print("data:
    ", data)
    
        # 2、实例化一个转换器类
        transfer = StandardScaler()
    
        # 3、调用fit_transform
        data_new = transfer.fit_transform(data)
        print("data_new:
    ", data_new)
        return None

    在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。

     

  • 相关阅读:
    无缝滚动轮播图
    angular 1.6指令与服务
    angular 1.6路由
    javascript 对象
    JavaScript的运算符
    初识JavaScript!
    git常用命令(二)文字版
    CSS水平垂直居中
    收藏的一些牛逼博客
    html5 学习汇总
  • 原文地址:https://www.cnblogs.com/sima-3/p/14809628.html
Copyright © 2020-2023  润新知