Redian新闻
>
机器学习:处理缺失值方法总结

机器学习:处理缺失值方法总结

科技

你好,我是你们的老朋友,zhenguo!

处理缺失值是在进行机器学习时非常重要的一个步骤。

缺失值会影响机器学习模型的准确度,因此在训练模型之前,通常需要先处理掉缺失值。

这篇文章,总结一些常见的缺失值处理方法。

常见处理方法

机器学习常见处理方法包括:

  1. 删除带有缺失值的行:这种方法适用于数据集中缺失值较少的情况。但是,如果删除的行数过多,会导致数据集的样本量过少,不利于模型的训练。

  2. 用平均值、中位数或众数来填补缺失值:这种方法适用于数值型的特征。例如,对于一个有缺失值的数值型特征,可以用这个特征的平均值来填补缺失值。

  3. 使用模型预测缺失值:对于缺失值较多的数据集,可以考虑先训练一个机器学习模型,然后用这个模型来预测缺失值。

  4. 使用热门值来填补缺失值:如果缺失值的特征有很多类别,可以考虑使用这个特征的热门值来填补缺失值。

  5. 使用近似值来填补缺失值:对于连续型的特征,可以使用与该特征最相似的其他特征的值来填补缺失值。

缺失值处理实战:处理方法1和2

下面是使用 Python 中的 Pandas 库来处理缺失值的代码示例。

首先,我们导入所需的库:

import pandas as pd

然后,我们创建一个简单的数据集,其中包含一些缺失值:

data = {'A': [1, 2, 3, 4, 5],
        'B': [6, 7, 8, None, 10],
        'C': [11, 12, 13, 14, 15],
        'D': [16, 17, None, 19, 20]}
df = pd.DataFrame(data)
print(df)

输出的数据集如下:

   A     B   C     D
0  1   6.0  11  16.0
1  2   7.0  12  17.0
2  3   8.0  13   NaN
3  4   NaN  14  19.0
4  5  10.0  15  20.0

接下来,我们可以使用 Pandas 库中的 dropna() 函数来删除带有缺失值的行:

df_without_missing_values = df.dropna()
print(df_without_missing_values)

输出的结果如下:

   A     B   C     D
0  1   6.0  11  16.0
1  2   7.0  12  17.0
4  5  10.0  15  20.0

然后,我们可以使用 Pandas 库中的 fillna() 函数来用平均值填补缺失值:

mean_value = df['B'].mean()
df['B'] = df['B'].fillna(mean_value)

mean_value = df['D'].mean()
df['D'] = df['D'].fillna(mean_value)

print(df)

输出的数据集如下:

   A      B   C     D
0  1   6.00  11  16.0
1  2   7.00  12  17.0
2  3   8.00  13  18.0
3  4   7.75  14  19.0
4  5  10.00  15  20.0

另外,我们还可以使用 Pandas 库中的 interpolate() 函数来用插值法填补缺失值:

df_interpolated = df.interpolate()
print(df_interpolated)

缺失值处理实战:处理方法3(使用模型预测缺失值)

我们还可以使用机器学习算法来预测缺失值。下面是使用 Scikit-learn 库中的线性回归模型来预测缺失值的代码示例:

from sklearn.linear_model import LinearRegression

# 选择用来预测的特征
X = df[['A''C']]

# 选择要预测的目标特征
y = df['B']

# 将缺失值用平均值填补
mean_value = y.mean()
y = y.fillna(mean_value)

# 创建线性回归模型
reg = LinearRegression().fit(X, y)

# 预测缺失值
predictions = reg.predict(X)

# 将预测结果填入数据集
df['B'] = predictions
print(df)

B列填充后,输出的结果如下:

   A          B   C     D
0  1   6.666667  11  16.0
1  2   7.333333  12  17.0
2  3   8.000000  13   NaN
3  4   8.666667  14  19.0
4  5  10.000000  15  20.0

还可以使用分类和回归树 (CART) 算法来预测缺失值。下面是使用 Scikit-learn 库中的决策树模型来预测缺失值的代码示例:

from sklearn.tree import DecisionTreeRegressor

# 创建决策树模型
reg = DecisionTreeRegressor().fit(X, y)

# 预测缺失值
predictions = reg.predict(X)

# 将预测结果填入数据集
df['B'] = predictions
print(df)

最后,缺失值填充要根据数据集的特点和需求,选择合适的方法来处理缺失值。

大家一起加油💪🏻!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
博士申请 | 香港科技大学谢知遥老师课题组招收机器学习方向全奖博士生博士生申请 | 马里兰大学助理教授陈一征招收机器学习及计算机安全方向博士生 | 2023 秋季【借鉴】新加坡白皮书发布:诚实总结3年抗疫表现:8优6缺失2008年,江泽民同志发表论文指出:发展智能化、机器学习会大有作为好课回归|从0到1,全面掌握编程基础、数据处理包及机器学习,逆袭大数据人才!江泽民2008年论文指出:发展智能化、机器学习会大有作为【123期】分享你的学习:PBL项目渔歌子:风土人情如画屏冬日絮语(1):入冬「简报」铭记受托人 Geln de Vries,为生命庆祝;机器学习模型课预测多发性硬化症患者在居家期间的健康状况​无需账号,免费在GPU上跑机器学习模型超越核方法的量子机器学习,量子学习模型的统一框架阿里巴巴20年流量方法总结:我们是如何做增长的?最后机会|从0到1,全面掌握编程基础、数据处理包及机器学习,逆袭大数据人才!预测 2022 年 FIFA 世界杯冠军大概率是荷兰!自制机器学习预测模型技术原理详解光子密码:处理加密数据的更佳方式?博士后申请 | 西湖大学张岳课题组招收基础自然语言处理、机器翻译、机器学习等方向的博士后CV发论文的机会来了!南洋理工项目招生(仅限深度学习,AI,机器学习,迁移学习方向)一文梳理缺陷检测的深度学习和传统方法马里兰大学助理教授陈一征招收机器学习及计算机安全方向博士生 | 2023 秋季渔歌子(2):飞瀑奇观腾水烟机器学习中的新数学,加速AI训练离不开数字表示方式和基本计算的变革UIUC信息学院汪浩瀚老师课题组招收全奖博士生及合作者,计算生物学和可信机器学习方向梳理机器学习常用算法(含深度学习)机器学习穷途末路?裁员潮下大厂员工艰难「求生」,知名教授:建议考公抹黑中国既抹黑华人也破坏加拿大民主政治对人工智能、机器学习感兴趣?不如先来实践一下!老师推荐的GCSE复习参考书及学习方法总结探索自然本源!谷歌2022年终总结第七弹:「生化环材」如何吃上机器学习红利?统计机器学习方法 for NLP:基于HMM的词性标注博士申请 | 帝国理工学院Stefan Vlask教授招收机器学习方向全奖博士生重思贝叶斯学习:稀疏建模中先验与推断的艺术机器学习:单或双变量常用分析技巧小日子这样过,也挺好春日宜学习:给Flag加个扶梯,让上楼成为可能 | 管理充电桩
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。