数据质量:类别不平衡、归一化、缩放及加权处理
立即解锁
发布时间: 2025-09-07 01:56:09 阅读量: 10 订阅数: 44 AIGC 


数据清洗的艺术与实践
# 数据质量:类别不平衡、归一化、缩放及加权处理
## 1. 类别不平衡的识别与分析
在处理数据时,类别不平衡是一个常见的问题。需要明确区分独立变量和因变量,因为因变量的不平衡对分类模型的影响通常比独立变量的不平衡更为重要。
### 1.1 独立变量与因变量的不平衡影响
- **因变量不平衡**:若要根据请求的其他特征预测请求可能产生的状态码,可能需要使用采样技术来合成平衡数据集。
- **独立变量不平衡**:其对模型的影响因模型类型而异。例如,决策树家族的模型对独立变量的类别不平衡不太敏感;而K近邻算法家族则对参数空间中的实际距离较为敏感;神经网络在对独立变量的类别不平衡的敏感性方面处于中间位置。
### 1.2 示例说明
以HTTP请求方法为例,如果使用决策树模型,HEAD请求的稀有性对检测HEAD与500状态码的强关联影响不大;但如果使用K近邻算法,在对HTTP方法进行编码时,可能会低估这种强但稀有的特征。
## 2. 数据的归一化和缩放
### 2.1 归一化的概念和目的
归一化的目的是将数据集中使用的所有特征纳入可比较的数值范围。当不同特征使用截然不同的单位时,一些机器学习模型会过度利用数值范围较大的特征。特殊情况包括特征存在未去除的异常值,或者一个特征呈正态分布而另一个特征呈指数分布。
### 2.2 示例数据集
以下是一个合成数据集,包含两个特征和一个目标,均为连续变量:
```python
unscaled = make_unscaled_features()
unscaled
Feature_1 Feature_2 Target
——————————————————————————————————————————
0 0.112999 19247.756104 11.407035
1 0.204178 23432.270613 20.000000
2 0.173678 19179.445753 17.336683
3 0.161411 17579.625264 16.633166
... ... ... ...
196 0.137692 20934.654450 13.316583
197 0.184393 18855.241195 18.241206
198 0.177846 19760.314890 17.839196
199 0.145229 20497.722353 14.371859
200 rows × 3 columns
```
从数据中可以看出,Target值约为15,Feature_1约为0.1,Feature_2约为20000。
### 2.3 特征与目标的相关性分析
通过计算相关系数矩阵,可以分析特征与目标之间的相关性:
```python
unscaled.corr()
Feature_1 Feature_2 Target
—————————————————————————————————————————————
Feature_1 1.000000 -0.272963 0.992514
Feature_2 -0.272963 1.000000 -0.269406
Target 0.992514 -0.269406 1.000000
```
结果显示,Feature_1与Target有很强的正相关性,Feature_2与Target有中等程度的负相关性。
### 2.4 应用机器学习模型
使用K近邻回归器对原始数据进行建模,R平方得分很低:
```python
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsRegressor
X = unscaled.drop('Target', axis=1)
y = unscaled['Target']
X_train, X_test, y_train, y_test = (
train_test_split(X, y, random_state=1))
knn = KNeighborsRegressor()
knn.fit(X_train, y_train).score(X_test, y_test)
0.027756186064182953
```
而使用最小 - 最大缩放器对特征进行缩放
0
0
复制全文
相关推荐










