下面我来详细讲解 Scikit-learn 的sklearn.impute.KNNImputer 函数的作用与使用方法的完整攻略。
KNNImputer 介绍
KNNImputer 是 Scikit-learn 的一个函数,用来对缺失值进行填充。它使用 KNN 算法来找出最接近的 k 个样本来估计缺失值。这种方法的优点是快速、精确,可以处理数据中的多个缺失值。
KNNImputer 参数说明
KNNImputer 函数有如下重要的参数:
- n_neighbors:设定用来查找最接近样本的个数,一般建议取一个适中的数值,例如 5。
- weights:设定用来计算缺失值的加权方法。默认是 uniform,即所有最近的样本都使用同等权重。另外还有 distance 和 callable 两种方法。
- metric:设定用来计算样本之间距离的方法。默认是欧几里得距离。
- missing_values:设定输入数据中的缺失值标记。默认是 NaN。
- add_indicator:设定是否添加一个新的特征(二值化矩阵)来标记每一行哪些数据是缺失的。默认是 False。
KNNImputer 使用方法
以下是 KNNImputer 的使用方法:
- 导入模块:
from sklearn.impute import KNNImputer
- 创建 KNNImputer 对象:
imputer = KNNImputer(n_neighbors=5, weights='uniform', metric='nan_euclidean')
- 对数据进行填充:
X = [[1, 2, np.nan], [3, np.nan, 4], [np.nan, 5, 6]]
X_imputed = imputer.fit_transform(X)
使用 fit_transform() 函数完成填充,返回的是填充后的新矩阵。
- 如果 add_indicator 设置为 True,新矩阵会添加一个二值化矩阵:
imputer = KNNImputer(n_neighbors=5, weights='uniform', add_indicator=True)
填充后的新矩阵为:
[[1. 2. 5. 0. 0. 1.]
[3. 3.5 4. 0. 1. 0.]
[2. 5. 6. 1. 0. 0.]]
两个使用实例
以下是两个使用实例,希望能够帮助理解 KNNImputer 的使用方法:
实例 1
对二维数组进行填充:
import numpy as np
from sklearn.impute import KNNImputer
# 构建二维数组
X = np.array([[1, 2, np.nan], [3, np.nan, 4], [np.nan, 5, 6]])
# 创建 KNNImputer 对象并进行填充
imputer = KNNImputer(n_neighbors=5, weights='uniform', metric='nan_euclidean')
X_imputed = imputer.fit_transform(X)
# 输出填充后的数组
print(X_imputed)
输出结果:
[[1. 2. 5. ]
[3. 3.5 4. ]
[2. 5. 6. ]]
实例 2
对 Pandas 数据框进行填充:
import pandas as pd
from sklearn.impute import KNNImputer
# 构建数据框
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [np.nan, 5, 6]}).to_numpy()
# 创建 KNNImputer 对象并进行填充
imputer = KNNImputer(n_neighbors=5, weights='uniform', metric='nan_euclidean')
df_imputed = imputer.fit_transform(df)
# 输出填充后的数据框
print(df_imputed)
输出结果:
[[1. 5. ]
[2. 5. ]
[1.5 6. ]]
总结
本文介绍了 Scikit-learn 的 KNNImputer 函数的作用与使用方法,包括了 KNNImputer 的参数说明和两个使用实例。KNNImputer 是一种快速、精确的处理缺失值的方法,可以在数据挖掘和机器学习中发挥重要作用。