python常见的数据预处理的方法preprocessing模块

本文详细介绍使用Python进行数据预处理的多种方法,包括Z-Score标准化、Min-Max标准化、规范化、均值归一化、特征二值化、标签二值化、数值或字符标签化、独热编码和对数变换等,所有操作均基于sklearn库和自定义函数实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用python进行常见的数据预处理,主要是通过sklearn的preprocessing模块以及自写的方法来简单介绍下:

加载包及导入数据
# -*- coding:utf-8 -*-
import math
import numpy as np
from sklearn import datasets
from sklearn import preprocessing

iris = datasets.load_iris()
iris_X = iris.data[:4]
iris_y = iris.target[:4]
z-score标准化方法,均值为0,方差为1
# 方法1.sklearn下方法多列处理
def scale_encoder(iris_X):
    X = preprocessing.scale(iris_X)
    print(X[:4],'\n',np.mean(X),np.std(X))
    return X
f1 = scale_encoder(iris_X)
# 方法2.单列处理
def zscore_encoder(colvalue):
    average = float(sum(colvalue)) / len(colvalue)
    X = [(x - average) / np.std(colvalue) for x in colvalue]
    print(X[:4],'\n',np.mean(X),np.std(X))
    return X
f2 = zscore_encoder(iris_X[:,0])

在这里插入图片描述

min-max标准化(Min-Max Normalization)
# 方法1:处理多列
def min_max_scaler(iris_X):
    min_max_scaler = preprocessing.MinMaxScaler()
    X2 = min_max_scaler.fit_transform(iris_X)
    return X2
min_max_scaler(iris_X)
# 方法2:处理单列
def min_max_encoder(colvalue):
    new_value = [(x - min(colvalue))/(max(colvalue) - min(colvalue)) for x in colvalue]
    return new_value
min_max_encoder(iris_X[:,0])

在这里插入图片描述

规范化(Normalization),其中L2 norm:平方和为1;L1 norm:绝对值和为1
def normalize_encoder(iris_X):
    X3 = preprocessing.normalize(iris_X, norm='l2')
    X4 = preprocessing.normalize(iris_X, norm='l1')
    return X3
normalize_encoder(iris_X)

在这里插入图片描述

均值归一化方法[-1,1]
def average_max_min(data):
    average = float(sum(data)) / len(data)
    new_value = [(x - average) / (max(data) - min(data)) for x in data]
    return new_value
average_max_min(iris_X[:,0])

在这里插入图片描述

特征二值化(Binarization),以某个阈值作为分割点进行切分数据
def binary_encoder(iris_X):
    binarizer = preprocessing.Binarizer(threshold=2)	#本例以阈值2为例
    X5 = binarizer.transform(iris_X)
    return X5
binary_encoder(iris_X)

在这里插入图片描述

标签二值化(Label binarization)
def label_encoder(iris_y):
    lb = preprocessing.LabelBinarizer()
    y2 = lb.fit_transform(iris_y)
    return y2
label_encoder(iris_y)

在这里插入图片描述

数值或字符标签化
def label_encoder(data):
    le = preprocessing.LabelEncoder()
    le.fit(data)
    t = le.transform(data)
    return t
label_encoder(iris_X[:,0])

在这里插入图片描述

独热编码
def onehot_encoder(data):
    enc = preprocessing.OneHotEncoder(sparse = False,categories='auto')
    t = enc.fit_transform(data)
    return t
onehot_encoder(iris_X)

在这里插入图片描述

对数变换
def log_encoder(col,logn):
    if logn == 2:
        new_value = [math.log2(x) for x in col]
    elif logn == 10:
        new_value = [math.log10(x) for x in col]
    else:
        print('暂不支持')
    return new_value
log_encoder(iris_X[:,0],logn=10)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值