SCIKIT-LEARN数据预处理API

以下是使用 scikit-learn 对数据进行常见预处理的代码示例:

from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder
from sklearn.model_selection import train_test_split

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# 数据标准化
scaler = StandardScaler()
X_standardized = scaler.fit_transform(X)

# 数据归一化
min_max_scaler = MinMaxScaler()
X_normalized = min_max_scaler.fit_transform(X)

# 处理缺失值(假设数据中有缺失值)
imputer = SimpleImputer(strategy='mean')
X_with_missing_values = [[1, 2, None], [4, None, 6], [7, 8, 9]]  # 示例数据,包含缺失值
X_imputed = imputer.fit_transform(X_with_missing_values)

# 编码分类变量
encoder = OneHotEncoder()
categorical_data = [[0], [1], [2], [0]]  # 示例分类数据
X_encoded = encoder.fit_transform(categorical_data).toarray()

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

划分数据集结果:

训练集特征:
[[3 4]
 [7 8]
 [1 2]
 [9 10]]
测试集特征:
[[5 6]]
训练集标签:
[1 1 0 0]
测试集标签:
[0]

在 scikit-learn 中,用于数据标准化的主要 API 有:

StandardScaler :它通过移除均值并缩放到单位方差来标准化特征。

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
标准化后的数据集:
[[-1.22474487 -1.22474487]
 [ 0.          0.        ]
 [ 1.22474487  1.22474487]]

RobustScaler :这个缩放器对异常值更具鲁棒性,它使用中位数和四分位数范围进行缩放。

from sklearn.preprocessing import RobustScaler

robust_scaler = RobustScaler()
X_robust_scaled = robust_scaler.fit_transform(X)

在 scikit-learn 中,用于数据归一化的常见 API 有:

MinMaxScaler :将特征值缩放到给定的范围(通常是 0 到 1 之间)。

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
X_normalized = scaler.fit_transform(X)
归一化后的数据集:
[[0.   0.  ]
 [0.5  0.5 ]
 [1.   1.  ]]

MaxAbsScaler :将每个特征值除以其绝对值的最大值,使特征值范围在 -1 到 1 之间。

from sklearn.preprocessing import MaxAbsScaler

scaler = MaxAbsScaler()
X_scaled = scaler.fit_transform(X)

在 scikit-learn 中,用于处理缺失值的主要 API 是 SimpleImputer 

from sklearn.impute import SimpleImputer
import numpy as np

# 示例数据,包含缺失值
X = np.array([[1, 2, np.nan],
              [4, np.nan, 6],
              [7, 8, 9]])

# 创建 SimpleImputer 对象
imputer = SimpleImputer(strategy='mean')  # 可以选择'mean'(均值)、'median'(中位数)、'most_frequent'(众数)等策略

# 填充缺失值
X_imputed = imputer.fit_transform(X)
print(X_imputed)
填充缺失值后的数据集:
[[1.  2.  5.]
 [4.  5.  6.]
 [7.  8.  9.]]

在上述示例中,通过指定 strategy 参数来选择填充缺失值的策略,比如使用均值、中位数或众数来填充。

在 scikit-learn 中,用于编码分类变量的常见 API 有:

OneHotEncoder :将分类变量转换为独热编码(One-Hot Encoding)。

from sklearn.preprocessing import OneHotEncoder
import numpy as np

# 示例分类数据
categorical_data = np.array([['red'], ['blue'], ['green'], ['red']])

encoder = OneHotEncoder(sparse=False)  # 设置 sparse=False 以获取密集数组
encoded_data = encoder.fit_transform(categorical_data)
print(encoded_data)
独热编码后的数据集:
[[0. 0. 1.]
 [0. 1. 0.]
 [1. 0. 0.]
 [0. 0. 1.]]

LabelEncoder :将分类标签编码为 0 到 n_classes-1 之间的整数。

from sklearn.preprocessing import LabelEncoder

label_encoder = LabelEncoder()
labels = ['cat', 'dog', 'cat', 'bird']
encoded_labels = label_encoder.fit_transform(labels)
print(encoded_labels)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值