社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

终于能把机器学习的特征工程弄懂了!

人工智能学习指南 • 3 月前 • 132 次点击  

今天我们来聊聊在机器学习中扮演着至关重要的角色-特征工程(今天是特征工程的第一部分)



想象一下,你是一位探险家,想要探索一片未被完全探索的原始森林🌳🌲。

这片森林(即数据集)里蕴藏着无数的宝藏(即有价值的信息),但同时也被茂密的植被、曲折的小径和未知的陷阱所包围。

你的目标是找到通往宝藏的最佳路径,但直接穿越这片丛林非常困难且充满危险。

这个时候特征工程就像是你手中的一幅精密的地图和指南针🗺️🧭。

它不仅帮助你清理掉视线中的杂草(即清洗和预处理数据),还揭示出隐藏的密道(即构造新特征)和潜在的危险区域(即识别和处理异常值)。

通过精心绘制和解读这张“地图”,你能够更高效地规划出穿越丛林的路线,直抵宝藏所在。

在这个过程中,特征选择就像是你决定走哪条路的过程,你挑选出最有可能通向宝藏的路径(即最重要的特征),避免在不必要的路线上浪费时间。

而特征降维则像是将复杂的丛林地形简化为更易于导航的模型,帮助你更快地接近目标。

最终,当你凭借这张精心制作的“地图”找到宝藏时,你会发现这份努力是值得的。

因为通过特征工程,你不仅提高了找到宝藏的效率,还确保了宝藏的完整性和价值(即模型的准确性和泛化能力)。



大家想系统性学习 机器学习、深度学习 的,我为大家准备了一些查漏补缺的资料,可以帮大家更好的学习。

大家可以大家可以任意添加一位小助手获取(长按二维码图片添加既可),记得发送文章标题截图给小助手哦!


     


特征工程到底是什么?

“特征工程是从原始数据中提取有意义特征的过程”

我们可以根据自己的领域知识或对数据的理解来尝试不同的特征,在开始之前,我们需要先熟悉数据。

我们如何构建特征呢?有以下几种不同的方法:


  • 特征转换

  • 特征构造

  • 特征选择

  • 特征提取







特征转换






特征转换是让你的数据更受机器学习算法青睐的过程,这就像给你的数据化个妆,让它在约会时看起来最佳状态。

“特征转换是修改特征以使其更适合机器学习算法的过程”

这包括处理缺失值、将分类特征转换为数值特征、检测异常值以及将特征缩放到一个共同的范围内。


处理缺失值

接下来,我们来谈谈缺失值,它们就像是派对上的不速之客。

如果你不小心处理,它们可能会搞砸你的数据,破坏你的模型。

我们应该怎么解决它?主要有两种方法:

插补:这就像用估计值填补空白,你可以使用其他值的均值、中位数或众数,或者使用某种逻辑来填补空白。


df.fillna( 0 )



删除处理:这就像是把不请自来的客人请出,你可以移除包含缺失值的行或列。


df.dropna(inplace= True



哪种方法最好?这要取决于你的数据, 如果缺失值很多,你可以使用插补法。

但如果只有少量缺失值,你可以直接删除它们。


处理分类值

数据可以分为两大类:数值型和分类型。

分类数据又可以进一步分为名义型和序数型,根据数据的类型,有不同的方法将分类数据转换为数值数据,这个过程叫做编码。

“编码指的是将分类数据转换为数值格式的过程。”

名义型数据是没有顺序的分类数据,比如地名或部门(就像你的领域一样)。

可以使用独热编码(One-Hot Encoding)将其转换为数值数据,这是Python中的一个库,叫做OneHotEncoder()。



序数型数据是有顺序的数据,比如成绩等级(A+、A、B+、B、C)。

可以使用序数编码(Ordinal Encoding)来转换,对应的Python库是OrdinalEncoder()。



上述两种编码器通常用于解释变量(x),对于预测变量(y),我们应该使用标签编码(Label Encoding),即LabelEncoder(),标签编码是专门为输出变量设计的。



处理异常值

异常值与其他数据不同,可能会让你的模型表现不佳。

异常值是显著不同于数据集中其他数据点的数据,它们会影响我们模型的准确性。


使用IQR(四分位距)进行检测


处理异常值主要有两种方法:

修剪:你可以从数据集中移除异常值。

封顶(Capping):你可以将异常值替换为数据集中其他数据的范围内的值。

如果异常值数量较少,你可以修剪它们。

如果异常值数量较多,你可以使用Capping。

有许多方法可以用来检测和移除异常值,包括z分数、IQR(四分位距)、百分位数和Winsorization等。


特征缩放

在机器学习模型中,并非所有特征都是平等的。

一些特征的范围可能远大于其他特征,从而给它们带来不公平的优势。

特征缩放通过确保所有特征具有相同的尺度来帮助平衡这种差异。

“特征缩放是转换数据集中特征的过程,以便它们具有共同的尺度。”

这有助于防止某些特征在模型中占据主导地位。

特征缩放主要有两种类型:

标准化:标准化是从每个特征中减去均值,然后除以标准差的过程。

这确保了每个特征的均值为0,标准差为1,标准化通常用于符合高斯分布的数据,如线性回归和逻辑回归。

归一化:归一化是将特征重新缩放到某个特定范围(如0和1之间)的过程。

这通常用于不符合高斯分布的数据,如决策树和支持向量机。



特征缩放在机器学习过程中是一个重要步骤,通过缩放特征,你可以帮助提高模型性能,并确保所有特征都有平等的机会。







特征构造






特征构造就像装饰蛋糕,你从一个基本的蛋糕开始,可以通过添加各种装饰来使其更加美味和好看。

例如,你可以添加巧克力碎片、坚果或水果,但要小心不要过头!

过多的装饰会让蛋糕看起来杂乱无章且缺乏吸引力,特征构造也是如此。

如果你向数据集中添加了太多特征,它可能会变得难以解释和分析。

因此,在特征构造时,请记住蛋糕装饰的黄金法则:少即是多。

几个精心挑选的特征可以使你的数据集更加信息丰富和相关,而过多的特征则可能使其变得不那么有用。

“根据现有特征或我们的领域知识开发新特征的过程被称为特征构造。”

通过使特征更加信息丰富和与手头任务相关,这有助于机器学习模型表现更好。



构建特征的方法多种多样,但一些典型的技术包括:

重构现有特征:你可以将现有的特征以新的方式组合起来,创造出新颖有趣的东西。

从现有特征中组合、修改或创建新特征,例如,在泰坦尼克号数据集中,你可以将“sibsp”(兄弟姐妹/配偶数)和“parch”(父母与子女数)两个特征结合,创建出一个名为“家庭”的新特征。

利用领域知识:你可以根据对领域的理解,创造出对当前任务至关重要的新特征。

基于你对领域的了解,创建出对任务有益的新特征。

比如,如果你正在开发一个预测客户流失的模型,了解到久未购买商品的客户更可能流失,那么你可以添加一个新特征——“距上次购买月数”。

使用特征选择算法:这些算法能帮助你从数据集中确定最重要的特征,并基于这些特征构建新特征,它就像精选最佳属性来创造强大的新特征!







总结






特征工程是机器学习中至关重要的一步,涉及从原始数据中转换、构建、选择和提取有意义的特征。

就像烘焙美味的蛋糕一样,我们从优质食材(数据)开始,运用我们的专业知识创造新的、相关的特征,以提升机器学习模型的性能。

在本文的第一部分,我们探讨了特征转换的重要性、缺失值处理、类别数据编码、异常值处理以及特征缩放的意义。

同时,我们还讨论了特征构建的艺术,即创造性地结合现有特征和利用领域知识来构建信息丰富的属性。

记住,成功的特征工程的关键在于找到平衡点。

添加过多特征会使数据变得杂乱无章,而精心挑选的几个特征却能显著提升模型性能。

如果大家想更进一步学习机器学习、深度学习、神经网络技术的可以看看以下文章(文章中提到的资料都打包好了,都可以直接添加小助手获取)


<


 人工智能资料分享 



>








人工智能60天学习计划(点击图片即可跳转)











深度学习中文教程书(点击图片即可跳转)

LLM最全学习资料(点击图片即可跳转)



大家觉得这篇文章有帮助的话记得分享给你的死党闺蜜、同学、朋友、老师、敌蜜!




B站:AI秃秃学长小墨



关注小墨

获取最新AI技能+最肝AI干货

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/173329
 
132 次点击