数据预处理之数据标准化

wuchangjian2021-11-03 16:42:34编程学习

接上文,下载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)

在这里插入图片描述


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

相关文章

新冠奥密克戎病毒持续变异,对老年人和基础病人群威胁仍较大

2022-08-19 22:47:49 近期国内部分地区新冠肺炎感染者...

抽象封装大概

1、构造函数 它的方法名和类名一样 有两类,分别为有参构造和无参构造...

重庆巴南:3700余人正全力扑救山火,目前火势可控

2022-08-22 15:32:49 8月21日,重庆市巴南区界石镇...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。