sklearn进行数据缩放与标准化

缩放数据: 


import numpy as np

np.random.seed(10)
x=np.matrix([np.random.randint(10,25)*1.0 for i in range(10)])
x=x.T

#MinMaxScaler缩放,移动数据使得所有特征都刚好位于0到1之间
from sklearn.preprocessing import MinMaxScaler
minmax=MinMaxScaler(feature_range=(0.0,1.0))
print(x)
x_t=minmax.fit_transform(x)
print(x_t)

#StandardScaler缩放,确保每个特征的平均值为0,方差为1,使得所有特征都位于同一量级,
from sklearn.preprocessing import StandardScaler
#导入数据集
from sklearn.datasets import load_breast_cancer
cancer=load_breast_cancer()
scaler=StandardScaler()
scaler.fit(cancer.data)
X_scaled=scaler.transform(cancer.data)
print(X_scaled)
#上面两句话可以合并为X_scaled=scaler.fit_transform(cancer.data)

#RobustScaler与上面是类似,也是确保每个特征的统计属性都位于同一范围,但是它使用的是中位数呵四分位数而不是平均值和方差
#这样的话,RobustScaler会忽略与其他点有很大不同的数据点,比如测量误差
from sklearn.preprocessing import RobustScaler
scaler1=RobustScaler()
X_scaled1=scaler1.fit_transform(cancer.data)
print(X_scaled1)

#Normalizer用到一种完全不同的缩放方法,他对每个数据点进行缩放,使得特征向量的欧式长度等于1,换句话说,他将一个数据点投射到
#半径为1的圆上,(对于高维度来说是球面),这意味着每个数据点的缩放比例都不相同(乘以长度的倒数),如果只是数据的方向是重要的
#而特征向量的长度无关紧要,那么通常会使用这种归一化
from sklearn.preprocessing import Normalizer
scaler2=Normalizer()
X_scaled2=scaler2.fit_transform(cancer.data)
print(X_scaled2)

标准化:

import numpy as np
from sklearn.preprocessing import scale

#生成输入数据
np.random.seed(10)#https://www.jianshu.com/p/b16b37f6b439  随机种子
x=[np.random.randint(10,25)*1.0 for i in range(10)]
print(x)
#x=list(np.random.randint(10,25,10)*1.0)等效上一句
#标准化操作
#只使用平均值进行缩放
x_centered=scale(x,with_mean=True,with_std=False)
#使用平均值和标准差来对数据进行标准化
x_standard=scale(x,with_mean=True,with_std=True)
#初始的x平均值为xxx,标准化之后为0.00,标准化差为1.00
print(x_centered)
print(x_standard)
发布了149 篇原创文章 · 获赞 111 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/qq_41076797/article/details/102710025