在机器学习模型的训练过程中,使用高质量的数据至关重要。然而,收集到的大量数据并不总是适合直接用于训练。因此,需要进行预处理步骤,以确保数据按照机器学习模型的预期进行处理。在数据清洗中,处理缺失值是一个至关重要的步骤,需要准确填充缺失数据,以便机器学习模型能够如预期般学习数据中的模式。
了解如何使用机器学习算法处理和填充缺失数据。熟悉数据填充过程中的步骤。本文是作为数据科学博客大赛的一部分发布的。
在处理缺失值时,最常见的几种方法包括:
由于本文侧重于预测缺失值而不是从数据集的分布中推断它们,因此下面汇总了上述三种处理/填充缺失值的方法的参考资料。这些资源可以帮助更好地理解何时何地使用每种方法。
“理解和处理缺失值”从基础开始,一直到处理最复杂的技术,并提供示例。此外,“Python中处理缺失值”讨论了处理缺失值的基础知识和重要概念。
从本质上讲,使用ML算法进行数据填充的问题大致分为两类:使用分类算法和回归算法。根据训练数据的类型,需要使用它来分类问题。本文将探讨如何使用分类算法,但使用回归算法是相同的(可以参考回归算法的示例)。为了使用ML算法解决数据集中的缺失值问题,数据需要经历包括预处理和建模在内的几个步骤。以下是使用ML算法填充缺失值的5个最常见分类步骤。
在高层次上,通过删除标签或y列,将数据集视为一个集合,并将其划分为两组,一个称为训练集,另一个称为测试集。这种划分是基于包含NULL值的行和不包含NULL值的行进行的。每个数据集进一步划分为X和y,以便有X_train、y_train、X_test和y_test。y_train和y_test是包含缺失值(待预测)的列。训练后,使用测试数据预测缺失值。下面的步骤将详细介绍这是如何工作的。
删除标签或y列后,数据集被划分为训练和测试。这种划分是参考数据集中每行的NULL值进行的。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import sklearn
# 使用pandas read_csv()函数读取CSV文件
df = pd.read_csv('/content/drive/MyDrive/TrainAndValid.csv/TrainAndValid.csv')
# 从Gdrive导入数据,也可以通过下载Kaggle或以下链接访问:
# https://drive.google.com/file/d/19B2HAK4Tlma-YhlJfXiXg-Wy1F68DSb8/view?usp=sharing
# 了解数据集
df.info()
# 查看df.describe()了解更多。
基于数据集中的NULL值划分数据集:
from sklearn.model_selection import train_test_split
X_test = df.drop('UsageBand', axis=1)
y_test = df['UsageBand']
df_train = df.dropna()
X_train = df_train.drop('UsageBand', axis=1)
y_train = df_train['UsageBand']
使用随机森林分类器模型进行建模以填充数据。
from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier()
# 拟合模型
rfc.fit(X_train, y_train)
使用训练好的随机森林分类器模型,填充/预测分类列的类别值。
# 预测值
y_filled = rfc.predict(X_test)
df['UsageBand'] = y_filled
# 继续使用数据集来建模实际问题!