zoukankan      html  css  js  c++  java
  • 机器学习之特征工程(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

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

     

  • 相关阅读:
    (五)SpringBoot如何定义全局异常
    从 vim 一题看线头 DP 的扩展应用
    Hadoop Shell基本操作
    《需求工程》阅读笔记*part1
    Jmeter系列(16)- 详解 HTTP Request
    Jmeter系列(15)- 配置元件的入门介绍
    Jmeter系列(14)- 前置、后置处理器的入门介绍
    Jmeter系列(13)- 断言Assertions 的入门介绍
    Jmeter系列(12)- 定时器Timers 的入门介绍
    Jmeter系列(11)- 监听器Listeners 的入门介绍
  • 原文地址:https://www.cnblogs.com/sima-3/p/14809628.html
Copyright © 2011-2022 走看看