题目
特征扩展是一种数据预处理技术,包括特征缩放、特征标准化、特征归一化、特征正则化等。本题考察的是特征缩放和特征标准化。
特征缩放是一种将输入数据转换为统一尺度的方法,它通过将输入数据中的每个元素进行缩放,来使得输入数据中的每个元素的值统一在某个尺度之下。
特征标准化是将输入数据转换为均值为0,方差为1的分布。
本题中要求了标准化和最大最小归一化,对应的公式为:
x
s
t
a
n
d
a
r
d
i
z
e
d
=
x
−
μ
σ
x_{standardized} = \frac{x - \mu}{\sigma}
xstandardized=σx−μ
x
n
o
r
m
a
l
i
z
e
d
=
x
−
min
(
x
)
max
(
x
)
−
min
(
x
)
x_{normalized} = \frac{x - \min(x)}{\max(x) - \min(x)}
xnormalized=max(x)−min(x)x−min(x)
标准代码如下
def feature_scaling(data):
mean = np.mean(data, axis=0)
std = np.std(data, axis=0)
standardized_data = (data - mean) / std
min_val = np.min(data, axis=0)
max_val = np.max(data, axis=0)
normalized_data = (data - min_val) / (max_val - min_val)
return np.round(standardized_data,4).tolist(), np.round(normalized_data,4).tolist()
需要注意的是,scipy库中也有对应的特征缩放方法,这里给出一种实现方式
def feature_scaling(data):
from sklearn.preprocessing import StandardScaler, MinMaxScaler
scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)
scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)
return np.round(standardized_data,4).tolist(), np.round(normalized_data,4).tolist()