• 机器学习入门-数值特征-对数据进行log变化


    对于一些标签和特征来说,分布不一定符合正态分布,而在实际的运算过程中则需要数据能够符合正态分布

    因此我们需要对特征进行log变化,使得数据在一定程度上可以符合正态分布

    进行log变化,就是对数据使用np.log(data+1) 加上1的目的是为了防止数据等于0,而不能进行log变化

    代码:

    第一步:导入数据

    第二步:对收入特征做直方图,同时标出中位数所在的位置,即均值

    第三步:对收入特征做log变化,使用np.log(data+1) 

    第四步:对log收入特征做直方图,标出中位数线的位置,即均值

    结论:我们可以发现变化后的特征在一定程度上更加接近正态分布

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 第一步导入数据
    ffc_survey_df = pd.read_csv('datasets/fcc_2016_coder_survey_subset.csv', encoding='utf-8')
    
    # 第二步对数据的收入做直方图
    fig, ax = plt.subplots()
    ffc_survey_df['Income'].hist(color='#A9C5D3', bins=30)
    plt.axvline(ffc_survey_df['Income'].quantile(), color='r', label='Binary line')
    plt.legend(fontsize=18, loc='best')
    ax.set_xlabel('Income', fontsize=12)
    ax.set_ylabel('Frequency', fontsize=12)
    ax.set_title('Income_hist', fontsize=12)
    plt.show()

    # 第三步:对收入的数据进行log变化
    ffc_survey_df['log_income'] = np.log(ffc_survey_df['Income'].values+1)
    print(ffc_survey_df[['Income', 'log_income']].head())

             log前后的数据

    # 第四步:对log变化后的数据画出直方图
    fig, ax = plt.subplots()
    ffc_survey_df['log_income'].hist(color='#A9C5D3', bins=30)
    plt.axvline(ffc_survey_df['log_income'].quantile(), color='r', label='Binary line')
    plt.legend(fontsize=18, loc='best')
    ax.set_xlabel('log_Income', fontsize=12)
    ax.set_ylabel('Frequency', fontsize=12)
    ax.set_title('Income_hist', fontsize=12)
    plt.show()

  • 相关阅读:
    [apue] FIFO:不是文件的文件
    [apue] 等待子进程的那些事儿
    [apue] popen/pclose 疑点解惑
    [apue] 使用 popen/pclose 的一点疑问
    [apue] 使用 poll 检测管道断开
    [apue] dup2的正确打开方式
    [apue] 管道原子写入量的一个疑问
    [apue] 测试管道容量的一些疑问
    【新阁教育】再也不用担心我的PLC通信不上了
    【新阁教育】三菱PLC的这个功能,真的很强大
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/10322080.html
Copyright © 2020-2023  润新知