数据预处理之数据标准化

接上文,下载iris数据集之后,需要对数据进行处理。这里只需要对数据进行标准化处理

min-max标准化

数据标准化处理是为了把数据分到一个特定区间,以便更好分析,这里不细说各方法的优缺点。min-max特别简单,但新加入值时可能会需要重新训练模型

# MinmaxScalar标准化
import numpy as np
from sklearn.preprocessing import MinMaxScaler
MinMaxScalar = MinMaxScaler()
x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("x:", x)
MinMaxScalar.fit(x)
y = MinMaxScalar.transform(x)
print("标准化之后的x值:", x)
print("标准化之后的y值:", y)

在这里插入图片描述
需要说明的是,min-max标准化是对每一列求得min和max以及平均值、方差等内容
fit对数据进行"拟合",以求得min、max等内容
transform再对每个数据进行求值
在这里插入图片描述
当然这里我们也可以直接用fit_transform把两个步骤合为一步,那为什么不全部都用这种方式呢?
实际上我们还有训练集、测试集之分,一般都是对训练集进行fit,然后得到的这个MinMaxScalar再去transform训练集,以及测试集


StandardScaler标准化
# StandardScaler标准化
import numpy as np
from sklearn.preprocessing import StandardScaler
StandardScaler = StandardScaler()
x = np.arange(9).reshape(3, 3)
print("x:", x)
y = StandardScaler.fit_transform(x)
print("标准化之后的x值:", x)
print("标准化之后的y值:", y)

在这里插入图片描述
这里直接使用的fit_transform,但实际使用时,最好fit和transform分开
使用了arange函数并且用reshape把数组分成3行3列


Normalizer
# Normalizer标准化
import numpy as np
from sklearn.preprocessing import Normalizer
Normalizer = Normalizer()
x = np.arange(9).reshape(3, 3)
print("x:", x)
y = Normalizer.fit_transform(x)
print("标准化之后的x值:", x)
print("标准化之后的y值:", y)

在这里插入图片描述


Binarizer
# Binarizer标准化
import numpy as np
from sklearn.preprocessing import Binarizer
Bz = Binarizer()
x = np.arange(9).reshape(3, 3)
print("x:", x)
y = Bz.fit_transform(x)
print("标准化之后的x值:", x)
print("标准化之后的y值:", y)

在这里插入图片描述
等等,这里结果和我们想象的不一样,标准化的结果好像不可控
其实,Binarizer是将所有数据都分成0或1,如果不指定阈值,那么默认为0.一般Binarizer是用于小数

加上threshold之后的结果

# Binarizer标准化
import numpy as np
from sklearn.preprocessing import Binarizer
Bz = Binarizer(threshold=3)
x = np.arange(9).reshape(3, 3)
print("x:", x)
y = Bz.fit_transform(x)
print("标准化之后的x值:", x)
print("标准化之后的y值:", y)

在这里插入图片描述


LabelEncoder标准化

对于不用的文本,使用LabelEncoder将其标准化,如将"中国", “美国”, “印度”, "非洲"进行标准化

# LabelEncoder标准化
import numpy as np
from sklearn.preprocessing import LabelEncoder
LE = LabelEncoder()
x = LE.fit_transform(["中国", "美国", "印度", "非洲"])
print("标准化之后的x值:", x)

在这里插入图片描述


OneHot标准化
# OneHot标准化
import numpy as np
from sklearn.preprocessing import OneHotEncoder
OE = OneHotEncoder()
y = ["中国", "美国", "印度", "非洲"]
print(np.array(y).reshape(-1, 1))
x = OE.fit_transform(np.array(y).reshape(-1, 1))
print("标准化之后的x值:", x)

在这里插入图片描述


小结,数据标准化方法都很类似,具体是要理解具体问题,然后在使用对应的数据标准化方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值