機器學習入門-數值特征-對數據進行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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM