携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情
也是暑假自学python的第40天
今天继续昨天的学习:
对于数字型数据的学习,主要进行标准缩放,具体有两个方法:1.归一化2.标准化
归一化
归一化学习
特点:通过对原始数据进行变化把数据映射到[0,1]之间
公式:
所对应的区间为[0,1]
将区间变为[-1,1]
归一化代码:
def mm():
"""
归一化处理
:return: NOne
"""
# 归一化缺点 容易受极值的影响
#feature_range代表特征值范围,一般设置为[0,1],或者[-1,1],默认是[0,1]
mm = MinMaxScaler(feature_range=(-1, 1))
data = mm.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
print(data)
return None
mm()
输出的结果如下:
归一化更加容易通过梯度下降找到最优解,但是算法性能一般。
标准化
标准化学习:
特点:通过对原始数据进行变化把数据变化到均值为0,标准差为1的范围内。
公式:
mean为平均值,σ为标准差
算法:
def stand():
"""
标准化缩放,不是标准正太分布,只均值为0,方差为1的分布
:return:
"""
std = StandardScaler()
data = std.fit_transform([[1., -1., 3.], [2., 4., 2.], [4., 6., -1.]])
print(data)
print('-' * 50)
print(std.mean_)
print('-' * 50)
print(std.var_)
print(std.n_samples_seen_) # 样本数
print('-' * 50)
data1 = std.fit_transform([[-1.06904497, -1.35873244, 0.98058068],
[-0.26726124, 0.33968311, 0.39223227],
[1.33630621, 1.01904933, -1.37281295]])
# print(data1) #这个并不是我们想看的,没意义
# 均值
print(std.mean_)
# 方差
print(std.var_)
# 样本数
print(std.n_samples_seen_)
return None
stand()
输出的结果如下:
缺失值处理
缺失值首先填补为nan,然后调用接口:
将nan值填补为中值:im = SimpleImputer(missing_values=np.nan, strategy='median')
也可以填补为平均值:im = SimpleImputer(missing_values=np.nan, strategy='mean')
def im():
"""
缺失值处理
:return:NOne
"""
# NaN, nan,缺失值必须是这种形式,如果是?号(或者其他符号),就要replace换成这种
im = SimpleImputer(missing_values=np.nan, strategy='median')
data = im.fit_transform([[1, 2], [np.nan, 3], [7, 6], [3, 2]])
print(data)
return None
im()
输出的结果如下: