1. 数据标准化/归一化:
目的:将特征缩放到相似的尺度,有助于提高算法的准确性
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)
2.独热编码(One-Hot Encoding):
将类别型变量转换为能够提供给机器学习算法的格式。
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
data_onehot = encoder.fit_transform(data).toarray()
3.填充缺失值:
目的:为缺失的值提供默认值,以便算法可以处理这些数据。
import numpy as np
# 用0填充所有缺失值
data_filled = np.where(data == None, 0, data)
4.特征选择:
目的:选择与目标变量最相关的特征,提高模型的性能。
from sklearn.feature_selection import SelectKBest, f_classif
# 选择K个最佳特征
skb = SelectKBest(f_classif, k=10)
X_new = skb.fit_transform(X, y)
5.特征提取:
目的:从原始特征中创建新的特征,以帮助模型更好地理解数据。
from sklearn.decomposition import PCA
pca = PCA(n_components=2) # 选择前2个主成分
X_new = pca.fit_transform(X)
6.数据分箱:
目的:将连续型特征划分为几个区间,然后为每个区间创建一个新特征。
import pandas as pd
bins = pd.cut(data['feature'], 4).codes.astype(str) # 分成4个箱子
7.类别特征编码:
目的:对于类别型特征,可以使用标签编码或独热编码。
data_dummies = pd.get_dummies(data[['feature1', 'feature2']])`
8.特征缩放:
对于一些机器学习算法,如KNN、SVM等,特征缩放变得非常重要。常见的缩放技术包括最大最小缩放、标准化、归一化等。可以使用scikit-learn中的StandardScaler、MinMaxScaler等工具进行特征缩放。