目录
一、基础理论
1、定义
特征预处理:通过一些转换函数,将特征数据转换成更加适合计算的算法模型。
2、特征数据的无量纲化
归一化、标准化
3、归一化、标准化分析
归一化
归一化要用到最大值、最小值对数据处理,那如果最大、最小值出了问题,归一化结果很容易受到影响。 (鲁棒性(健壮性)较差)
标准化
标准化要用到均值、标准差对数据处理,有较强的鲁棒性(健壮性)
缺点显而易见,所以,标准化更常用。(标准化更适合嘈杂的大数据场景)
二、归一化
1、归一化基本原理
对原始数据进行变换,把数据映射到(0,1)之间。
(max、min分别为某一特征最大、最小值)(默认值:mx为1,mi为0)
例:
过程:
1、读取待处理数据
读取数据:
# 1、读取待归一化的数据
data = pd.read_csv('dating.txt')
print(data)
保留待归一化的数据(忽略掉不需要归一化的部分):
# 保留需要归一化的数据(前三列)
data = data.iloc[:, :3]
print(data)
2、创建归一化转换器
# 2、创建归一化转换器
transfer = MinMaxScaler()
3、归一化处理(调用fit_transform)
# 3、归一化处理(调用fit_transform)
new_data = transfer.fit_transform(data)
print(new_data)
归一化缺陷:由于本身是根据最大、最小值求出来的,那如果最大、最小值出了问题,归一化结果很容易受到影响。 (鲁棒性较差)
代码
# 归一化处理
def Normalize():
# 1、读取待归一化的数据
data = pd.read_csv('dating.txt')
# print(data)
# 保留需要归一化的数据(前三列)
data = data.iloc[:, :3]
print(data)
# 2、创建归一化转换器
transfer = MinMaxScaler()
# 3、归一化处理(调用fit_transform)
new_data = transfer.fit_transform(data)
print(new_data)
三、标准化
1、标准化基本原理
定义:
通过对原始数据进行变换,把数据变换到均值为0,标准差为1的范围。
公式:
(即:result = (x-均值)/标准差)
标准化优势:
便于处理异常点。(少量异常点对均值和标准差影响不大)
2、API
sklearn.preprocessing.StandardScaler
过程:
1、读取待处理数据
和上面一样
# 1、读取待归一化的数据
data = pd.read_csv('dating.txt')
# print(data)
# 保留需要标准化的数据(前三列)
data = data.iloc[:, :3]
print(data)
2、创建标准化转换器
# 2、创建标准化转换器
transfer = StandardScaler()
3、标准化处理
# 3、标准化处理(调用fit_transform)
new_data = transfer.fit_transform(data)
print(new_data)
代码
# 标准化处理
def Standardize():
# 1、读取待归一化的数据
data = pd.read_csv('dating.txt')
# print(data)
# 保留需要标准化的数据(前三列)
data = data.iloc[:, :3]
print(data)
# 2、创建标准化转换器
transfer = StandardScaler()
# 3、标准化处理(调用fit_transform)
new_data = transfer.fit_transform(data)
print(new_data)
总代码
# 数据预处理 -- 归一化和标准化
from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler
# 数据集
data = ['我虽然是一只小菜鸡', '目前比较菜', '但是在不断干饭', '努力成为战斗鸡']
# 归一化处理
def Normalize():
# 1、读取待归一化的数据
data = pd.read_csv('dating.txt')
# print(data)
# 保留需要归一化的数据(前三列)
data = data.iloc[:, :3]
print(data)
# 2、创建归一化转换器
transfer = MinMaxScaler()
# 3、归一化处理(调用fit_transform)
new_data = transfer.fit_transform(data)
print(new_data)
# 标准化处理
def Standardize():
# 1、读取待归一化的数据
data = pd.read_csv('dating.txt')
# print(data)
# 保留需要标准化的数据(前三列)
data = data.iloc[:, :3]
print(data)
# 2、创建标准化转换器
transfer = StandardScaler()
# 3、标准化处理(调用fit_transform)
new_data = transfer.fit_transform(data)
print(new_data)
if __name__ == '__main__':
# 归一化处理
# Normalize()
# 标准化处理
Standardize()