这3个Scikit-learn的特征选择技术,能够有效的提高你的数据预处理能力

简介: 这3个Scikit-learn的特征选择技术,能够有效的提高你的数据预处理能力

Scikit-learn是一个广泛使用的python机器学习库。它以现成的机器学习算法而闻名,在scikit-learn中也为数据预处理提供了很多有用的工具。

640.jpg

数据预处理是机器学习的重要环节。我们不能仅仅将原始数据转储到模型中。我们需要清理数据,并应用一些预处理技术,以能够创建一个健壮和准确的机器学习模型。

特征选择仅仅意味着使用更有价值的特征。这里的价值是信息。我们希望使用对目标变量有更多信息的特性。在一个有监督的学习任务中,我们通常有许多特征(自变量),其中一些可能对目标(因变量)只有很少或没有价值的见解。另一方面,有些特性非常关键,它们解释了目标的大部分差异。特征选择就是找到那些提供信息的特征。特征选择的另一个应用是降维,即利用已有的特征来获得新的特征,从而减少特征的数量。当我们有高维(大量特征)数据时,降维特别有用。

在这篇文章中,我们将介绍scikiti -learn提供的3种特征选择技术。

方差的阈值过滤VarianceThreshold

VarianceThreshold将删除方差小于指定阈值的特性。在考虑一个特性时,它对数据集中的所有观察值(行)都采用相同的值。它不会给模型增加任何信息能力。使用此特性还会增加不必要的计算负担。因此,我们应该将它从数据集中删除。同样,方差很小的特征也可以省略。

让我们用不同的方差值创建三个特性。

import numpy as np
import pandas as pd
col_a = pd.Series(np.ones(50))
col_b = pd.Series(np.ones(50))
col_b[:5] = 0
col_c = pd.Series(np.random.randint(20,30, size=50))
features = pd.concat([col_a,col_b,col_c], axis=1)

640.png

特征的方差:

640.png

我们可以创建VarianceThreshold的选择器实例,并使用它只选择方差大于0.1的特性。

from sklearn.feature_selection
import VarianceThreshold
selector = VarianceThreshold(threshold=(0.1))
selector.fit_transform(features)

640.png

递归特性消除 Recursive Feature Elimination

顾名思义,递归特性消除(RFE)的工作原理是递归地消除特性。消除是基于一个估计器的输出来完成的,该估计器会给特征赋某种权重。例如,权重可以是线性回归的系数或决策树的特征重要性。

这个过程从在整个数据集上训练估计器开始。然后,最不重要的特征被修剪。然后,用剩余的特征对估计器进行训练,再对最不重要的特征进行剪枝。重复这个过程,直到达到所需的特征数量为止。

让我们使用一个样本房价数据集。该数据集可在kaggle上使用。我将只使用其中的一些特性。

https://www.kaggle.com/c/house-prices-advanced-regression-techniques

df = pd.read_csv("/content/train_houseprices.csv")
X = df[['LotArea','YearBuilt','GrLivArea','TotRmsAbvGrd',
'OverallQual','OverallCond','TotalBsmtSF']]y = df['SalePrice']

我们有7个特征和一个目标变量。下面的代码将使用RFE来选择最好的4个特性。

from sklearn.linear_model import LinearRegression
from sklearn.feature_selection import RFE
lr = LinearRegression()
rfe = RFE(estimator=lr, n_features_to_select=4, step=1)
rfe.fit(X, y)

640.png

我们使用线性回归作为估计量。通过n_features_to_select参数确定所需的特性数量。RFE为每个特性分配一个等级。赋值为1的特征是选中的特征。

rfe.ranking_
array([4, 1, 2, 1, 1, 1, 3])

根据重要性选择 SelectFromModel

就像RFE一样,SelectFromModel与具有coef或feature_importantances属性的估计器一起使用。根据特征的权重选择较重要的特征。

让我们使用与上一节中使用的相同的特性子集。我们将使用岭回归作为估计量。作为选择特征的阈值,我们使用“mean”关键字。

from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import Ridge
ridge = Ridge().fit(X, y)
model = SelectFromModel(ridge, prefit=True, threshold='mean')
X_transformed = model.transform(X)

640.png

我们从7个功能中选择了2个。所选择的特征是“OverallQual”和“OverallCond”,这是有意义的,因为这是决定房价的关键因素。它们还与使用递归特征消除技术选择的特征匹配。

在这种情况下,我们可以在某种程度上凭直觉确定重要的特征。然而,现实生活中的案例更加复杂,可能包含很多特征。特征选择技术在这些情况下会派上用场。

Scikit-learn提供了许多特征选择和数据预处理工具,具体可以查看sklearn文档获取更详细的介绍 。


目录
相关文章
|
7月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
9月前
|
JSON API 开发者
天猫商品详情API接口技术解析与Python实现
天猫商品详情API(tmall.item_get)通过商品ID获取商品标题、价格、库存、图片、SKU及评价等详细信息,支持HTTP请求与JSON格式返回,适用于电商数据分析与运营。本文提供Python调用示例,实现快速接入与数据解析。
|
6月前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
7月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
953 19
|
10月前
|
监控 大数据 API
Python 技术员实践指南:从项目落地到技术优化
本内容涵盖Python开发的实战项目、技术攻关与工程化实践,包括自动化脚本(日志分析系统)和Web后端(轻量化API服务)两大项目类型。通过使用正则表达式、Flask框架等技术,解决日志分析效率低与API服务性能优化等问题。同时深入探讨内存泄漏排查、CPU瓶颈优化,并提供团队协作规范与代码审查流程。延伸至AI、大数据及DevOps领域,如商品推荐系统、PySpark数据处理和Airflow任务编排,助力开发者全面提升从编码到架构的能力,积累高并发与大数据场景下的实战经验。
Python 技术员实践指南:从项目落地到技术优化
|
10月前
|
数据采集 机器学习/深度学习 编解码
从零复现Google Veo 3:从数据预处理到视频生成的完整Python代码实现指南
本文详细介绍了一个简化版 Veo 3 文本到视频生成模型的构建过程。首先进行了数据预处理,涵盖了去重、不安全内容过滤、质量合规性检查以及数据标注等环节。
626 5
从零复现Google Veo 3:从数据预处理到视频生成的完整Python代码实现指南
|
9月前
|
机器学习/深度学习 数据安全/隐私保护 计算机视觉
过三色刷脸技术,过三色刷脸技术教程,插件过人脸python分享学习
三色刷脸技术是基于RGB三通道分离的人脸特征提取方法,通过分析人脸在不同颜色通道的特征差异
|
8月前
|
数据采集 机器学习/深度学习 数据可视化
Python量化交易:结合爬虫与TA-Lib技术指标分析
Python量化交易:结合爬虫与TA-Lib技术指标分析
|
9月前
|
机器学习/深度学习 算法 API
淘宝图片搜索接口技术解析与Python实现
淘宝图片搜索接口(拍立淘)基于图像识别技术,允许用户上传商品图片查找相似或相同商品。自2014年上线以来,已服务数千万日活用户,显著提升购物体验。接口通过CNN、ANN等技术实现图像预处理、特征提取与相似度匹配,支持多种调用方式与参数设置。本文提供Python调用示例,便于开发者快速集成。
|
11月前
|
机器学习/深度学习 人工智能 算法
Scikit-learn:Python机器学习的瑞士军刀
想要快速入门机器学习但被复杂算法吓退?本文详解Scikit-learn如何让您无需深厚数学背景也能构建强大AI模型。从数据预处理到模型评估,从垃圾邮件过滤到信用风险评估,通过实用案例和直观图表,带您掌握这把Python机器学习的'瑞士军刀'。无论您是AI新手还是经验丰富的数据科学家,都能从中获取将理论转化为实际应用的关键技巧。了解Scikit-learn与大语言模型的最新集成方式,抢先掌握机器学习的未来发展方向!
1239 12
Scikit-learn:Python机器学习的瑞士军刀