数据集中缺失的值可能会在构建估计器期间导致问题。Scikit Learn 提供了不同的方法来处理缺失数据,其中包括估算缺失值。插补涉及使用基于数据集中其他可用数据的估计值来填充缺失数据。
一些基本概念:
- Missing data:Missing data 是指数据集中缺少数据。发生这种情况的原因有多种,例如人为错误、技术错误或数据损坏。
- Imputation:Imputation 插补可以指根据可用数据使用帮助模式估计值填充缺失值的过程。
- Scikit Learn:Scikit Learn 是一个流行的 Python 语言机器学习库,提供各种机器学习工具,包括数据预处理、特征选择和模型构建。
- Estimator:在机器学习中,估计器是一种从数据中学习并用于对新数据进行预测的算法或模型。
所需步骤:
在 Scikit Learn 中构建估计器之前,需要执行以下步骤来估算缺失值:
- 导入所需的库: 首先需要导入所需的库,包括 Scikit Learn 和 NumPy。
- 加载数据集: 然后加载包含缺失值的数据集。
- 识别缺失值: 然后识别数据集中的缺失值。
- 估算缺失值: 我们使用 Scikit Learn 的估算器类来估算数据集中的缺失值。
- 构建估计器: 为了构建估计器,我们在这里使用线性回归算法。
例子
让我们考虑一个包含缺失值的数据集的示例。以下代码使用 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 类来估算数据集中的缺失值。最后,我们使用估算数据集构建了线性回归估计器。