数据归一化处理和常用标签编码,独热编码

使用机器学习时,会存在不同的特征类型:连续型特征和离散型特征
拿到获取的原始特征,必须对每一特征分别进行归一化,比如,特征A的取值范围是[-1000,1000],特征B的取值范围是[-1,1].如果使用logistic回归,w1x1+w2x2,因为x1的取值太大了,所以x2基本起不了作用。所以,必须进行特征的归一化,每个特征都单独进行归一化。

对于连续性特征:
Rescale bounded continuous features: x = (2x - max - min)/(max - min).
线性放缩到[-1,1]

Standardize all continuous features:x = (x - u)/s.
放缩到均值为0,方差为1


对于离散性特征:
Binarize categorical/discrete features:对于离散的特征基本就是按照one-hot(独热)编码,该离散特征有多少取值,就用多少维来表示该特征。


1.标签编码
LabelEncoder():
将[1,11,111,1111]->[0,1,2,3]

from sklearn.preprocessing import LabelEncoder
s1 = [1,11,111,1111]
le = LabelEncoder()
le.fit(s1)
print(le.transform([111,1111,1,1]))
>>>
[2 3 0 0]

2.独热编码
OneHotEncoder():

from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder()
ohe.fit([[1],[2],[3],[4]])
ohe_r = ohe.transform([[4],[3],[1],[4]]).toarray()
ohe_r
>>>
array([[0., 0., 0., 1.],
       [0., 0., 1., 0.],
       [1., 0., 0., 0.],
       [0., 0., 0., 1.]])
### 数据处理的其他常见方法 #### 1. 缺失值处理 缺失值处理数据处理中的关键步骤,旨在解决数据集中存在的空值或缺失数据问题。常见的方法包括删除缺失值、用均值、中位数或众数填充缺失值,以及使用插值法或模型预测来填补缺失值。例如,使用 `SimpleImputer` 类可以轻松实现用均值或中位数填充缺失值 [^1]。 ```python from sklearn.impute import SimpleImputer imputer = SimpleImputer(strategy='mean') X_imputed = imputer.fit_transform(X) ``` #### 2. 特征编码 特征编码用于将分类变量转换为数值形式,以便机器学习模型能够处理。常见的方法包括独热编码(One-Hot Encoding)标签编码(Label Encoding)。独热编码通过将分类变量转换为二进制特征向量来避免引入类别间的虚假顺序关系 [^1]。 ```python from sklearn.preprocessing import OneHotEncoder encoder = OneHotEncoder() X_encoded = encoder.fit_transform(X_categorical) ``` #### 3. 特征选择 特征选择旨在从原始数据中挑选出最具代表性的特征,以减少计算复杂度并提高模型性能。常见的方法包括基于统计指标的特征选择(如方差选择法、卡方检验)基于模型的特征选择(如L1正则化、递归特征消除) [^1]。 ```python from sklearn.feature_selection import SelectKBest, chi2 selector = SelectKBest(score_func=chi2, k=5) X_selected = selector.fit_transform(X, y) ``` #### 4. 数据变换 数据变换用于改善数据分布或消除非线性关系,常见的方法包括对数变换Box-Cox变换。对数变换适用于右偏分布的数据,而Box-Cox变换则适用于需要满足正态分布假设的数据 [^1]。 ```python import numpy as np X_log = np.log1p(X) ``` #### 5. 异常值检测与处理 异常值检测旨在识别并处理数据中的极端值,这些值可能会对模型训练产生负面影响。常见的方法包括基于统计的方法(如Z-score法、IQR法)基于机器学习的方法(如孤立森林) [^1]。 ```python from sklearn.ensemble import IsolationForest outlier_detector = IsolationForest(contamination=0.1) outliers = outlier_detector.fit_predict(X) ``` #### 6. 分箱(Binning) 分箱是将连续变量划分为离散区间的技术,旨在减少噪声的影响并提高模型的鲁棒性。常见的方法包括等宽分箱等频分箱 [^1]。 ```python binned = pd.cut(X, bins=5) ``` #### 7. 数据平衡 数据平衡用于解决类别分布不均衡的问题,尤其是在分类任务中。常见的方法包括过采样(如SMOTE)欠采样 [^1]。 ```python from imblearn.over_sampling import SMOTE smote = SMOTE() X_resampled, y_resampled = smote.fit_resample(X, y) ``` #### 8. 特征缩放(补充) 除了标准化归一化,还有其他特征缩放方法,如最大绝对值缩放(MaxAbs Scaling)鲁棒缩放(Robust Scaling)。鲁棒缩放通过使用中位数四分位距来减少异常值的影响 [^1]。 ```python from sklearn.preprocessing import RobustScaler scaler = RobustScaler() X_robust = scaler.fit_transform(X) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值