缩放和正则化是有一定的相似度的,把握一个基本点:
缩放:数据的数值按比例缩小或放大,但其分布不会变。
正则化:数据的分布变为正太分布(高斯分布)
缩放
# modules we'll use
import pandas as pd
import numpy as np# for Box-Cox Transformation
from scipy import stats# for min_max scaling
from mlxtend.preprocessing import minmax_scaling# plotting modules
import seaborn as sns
import matplotlib.pyplot as plt# read in all our data
kickstarters_2017 = pd.read_csv("../input/kickstarter-projects/ks-projects-201801.csv")# set seed for reproducibility
np.random.seed(0)
# select the usd_goal_real column
original_data = pd.DataFrame(kickstarters_2017.usd_goal_real)# scale the goals from 0 to 1
# from mlxtend.preprocessing import minmax_scaling
# 缩放到 0 —— 1 之间
scaled_data = minmax_scaling(original_data, columns=['usd_goal_real'])
正则化
# 获取所有正的数值的索引 (Box-Cox only takes positive values)
index_of_positive_pledges = kickstarters_2017.usd_pledged_real > 0# 根据索引获取所有正的众筹金额 (using their indexes)
positive_pledges = kickstarters_2017.usd_pledged_real.loc[index_of_positive_pledges]# normalize the pledges (w/ Box-Cox)
‘’‘
stats.boxcox(positive_pledges)[0] 对 positive_pledges 进行 Box-Cox 变换,
返回变换后的数值序列。Box-Cox 变换是一种正态化方法,适用于正值数据,能使数据分布更接近正态分布
将 Box-Cox 变换后的结果(一个数组)转换为 Pandas Series,指定 name='usd_pledged_real',将这一 Series 命名为 usd_pledged_real,并使用 positive_pledges 的原始索引来保留原数据的位置关系。
’‘’
normalized_pledges = pd.Series(stats.boxcox(positive_pledges)[0], name='usd_pledged_real',index=positive_pledges.index)
# plot normalized data
ax = sns.histplot(normalized_pledges, kde=True)
ax.set_title("Normalized data")
plt.show()