在 Scikit Learn 中构建估算器之前估算缺失值

84 阅读2分钟

数据集中缺失的值可能会在构建估计器期间导致问题。Scikit Learn 提供了不同的方法来处理缺失数据,其中包括估算缺失值。插补涉及使用基于数据集中其他可用数据的估计值来填充缺失数据。

一些基本概念:

  • Missing data:Missing data 是指数据集中缺少数据。发生这种情况的原因有多种,例如人为错误、技术错误或数据损坏。
  • Imputation:Imputation 插补可以指根据可用数据使用帮助模式估计值填充缺失值的过程。
  • Scikit Learn:Scikit Learn 是一个流行的 Python 语言机器学习库,提供各种机器学习工具,包括数据预处理、特征选择和模型构建。
  • Estimator:在机器学习中,估计器是一种从数据中学习并用于对新数据进行预测的算法或模型。

所需步骤:

在 Scikit Learn 中构建估计器之前,需要执行以下步骤来估算缺失值:

  1. 导入所需的库: 首先需要导入所需的库,包括 Scikit Learn 和 NumPy。
  2. 加载数据集: 然后加载包含缺失值的数据集。
  3. 识别缺失值: 然后识别数据集中的缺失值。
  4. 估算缺失值: 我们使用 Scikit Learn 的估算器类来估算数据集中的缺失值。
  5. 构建估计器: 为了构建估计器,我们在这里使用线性回归算法。

例子 

让我们考虑一个包含缺失值的数据集的示例。以下代码使用 Scikit Learn 的 SimpleImputer 类估算数据集中的缺失值:

# 导入所需的库
from sklearn.impute import SimpleImputer
import numpy as np

# 加载数据集
X = np.array([[1, 2, np.nan],
			[3, np.nan, 4],
			[5, 6, np.nan],
			[7, 8, 9]])
Y = np.array([14, 20, 29, 40])

# 识别缺失的值
print('检查Null值 \n',np.isnan(X))

# 输入缺失值
imputer = SimpleImputer(strategy='mean')
X_imputed = imputer.fit_transform(X)

# 构建估计器
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_imputed, Y)

print('\n系数 :',regressor.coef_)
print('拦截 :',regressor.intercept_)

# 预测
Y_pred = X_imputed @ regressor.coef_ + regressor.intercept_
print("预测 :",Y_pred )

输出

检查Null值
 [[False False  True]
 [False  True False]
 [False False  True]
 [False False False]]

系数 : [2.25 1.5  1.4 ]
拦截 : -0.3499999999999943
预测 : [14. 20. 29. 40.]

在上面的示例中,我们首先加载包含缺失值的数据集。然后,我们使用 NumPy 库识别了以下数据集中的缺失值。然后,我们使用 Scikit Learn 的 SimpleImputer 类来估算数据集中的缺失值。最后,我们使用估算数据集构建了线性回归估计器。