首页 > 其他分享 >勇闯机器学习(第三关-特征工程)

勇闯机器学习(第三关-特征工程)

时间:2024-08-17 22:52:25浏览次数:13  
标签:机器 特征 数据 DictVectorizer 特征提取 第三关 勇闯 data 字典

以下内容皆为原创,制作不易,请帅锅、镁铝点点赞赞和关注吧❥(^_^)

一.提问环节

        机器学习是什么?

机器学习就是通过自动分析大量数据去建立模型,训练模型,预测数据。

这么好记的概念,你应该记住了吧??       

 机器学习的概念关:http://t.csdnimg.cn/arRtn

        机器学习的流程?

  1. 获取数据(有数据你才能得到模型啊,有数据你才能训练模型)
  2. 数据预处理(把那些无用的数据删掉,比如:空值,无意义的,乱码)
  3. 特征工程(对特征值进行处理)
  4. 机器学习算法训练--模型
  5. 模型评估(如果模型不行的话,从第二步开始重新看看,再优化一下,直到模型评估良好)
  6. 应用(模型好了,我们才能应用)

 没错,这就是第一关的重点,我们这关主要是搞特征工程。

二.特征工程

        1.定义:

                        特征工程是使用专业的背景知识和技巧处理数据,使得特征在机器学习算法中发挥更好的作用的过程。(其实就是更高尚的处理数据,开玩笑的啊)

        2.意义:

                        直接影响机器学习的效果。

       3.与数据预处理的区别:

                        特征工程的过程中,专门用sklearn对特征进行处理。

                        而数据预处理,主要对原数据,进行数据清洗,异常值、缺失值处理。

        4.特征工程的内容:

        每个数据都有自己的特征,包括文本类型,每个字都有属于自己的特征。那么我们可以用sklearn去将它们转为数值,转化后的数值就是它们的特征。

特征抽取:用机器学习算法(就是统计方法,统计方法就是数学公式)

特征预处理

特征降维  

                        

三.特征提取

                我们今天先讲特征提取,正所谓,慢活出细糠嘛。

                

        1.将任意数据(如文本和图像)转化为机器学习的数字特征

        注:特征值化是为了让计算机更好的去理解数据。

        内心独白:你想想,计算机只认识0和1,二进制。所以我们将数据转化为特征值,这样砸门计算机才能更加深刻的理解和分析。                        

特征提取分为三类
字典特征提取(特征离散化)
文本特征提取
图像特征提取

        这三类,当你遇到字典,那就字典特征提取。当你遇到文本类型数据,那就文本特征提取。遇到图像,那就图像特征提取。

        2.特征提取API

sklearn.feature_exrtaction

四.字典特征提取

        作用:对字典数据进行特征值化

        内心独白:这些方法很好记,都是英语单词,vector向量、矢量。extraction提取。

sklearn.feature_extraction.DictVectorizer(sparse=True)
    1.DictVectorizer.fit_transform(X)
            X是字典或者包含字典的迭代器返回值,返回sparse矩阵(稀疏矩阵)
    2.DictVectorizer.inverse_transform(X)
            X是array数组或者sparse矩阵,返回值:转换之前数据格式
    3.DictVectorizer.get_feature_names()
            返回类别名称

       应用:

                我们对以下数据(字典类型的,因为这章节讲的就是字典特征提取)进行特征提取

data = [{'city':'北京','temperature':100},

                        {'city':'上海', 'temperature':60},

                        {'city':'深圳', 'temperature':30}]

                这段代码是用于对字典数据进行特征提取,它会返回一个稀疏矩阵(记住这个,等下讲到)。每个特征都会对应一个向量。

from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
data = [{'city':'北京','temperature':100}, {'city':'上海', 'temperature':60}, {'city':'深圳', 'temperature':30}]
# 1.实例化一个转换器类
transfer = DictVectorizer()

# 2.调用fit_transform()
data_new = transfer.fit_transform(data)
print("data_new\n", data_new)

            

     解释时刻:

                请问返回的为什么不是一个二维数组?

        

因为这个函数方法返回的是稀疏矩阵啊,我也没办法,而且你看我们DictVectorizer()里面没有填参数,所以默认sparse=True并且返回稀疏矩阵    。所以我们要改一下参数,让sparse=False即可。            

废话不多说,开始弄。

from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
data = [{'city':'北京','temperature':100}, {'city':'上海', 'temperature':60}, {'city':'深圳', 'temperature':30}]
# 1.实例化一个转换器类
transfer = DictVectorizer(sparse=False)

# 2.调用fit_transform()
data_new = transfer.fit_transform(data)
print("data_new\n", data_new)
# 如果下面报错了,你就换最下面那个,可能是版本不同吧,方法名不一样
# print("特征名字\n", transfer.get_feature_names())
print("特征名字\n", transfer.get_feature_names_out())

 

五.总结

        

        你看这两个的区别,左边是稀疏矩阵,右边是二维数组。稀疏矩阵的六个坐标(只会将非零值按位置表现出来),分别对应右边非零值的位置。

        好,那么为什么要用非零值,而不用零值呢。将类别转为one-hot编码(独热编码),假如有1000个类别,那我转为one-hot编码,就会大大的占据空间和资源。所以为了节省空间和内存,稀疏矩阵只注重非零值,并提高效率。

 

六.应用场景

        (1)数据集中类别特征比较多

                        1.将数据集特征==》字典类型

                        2.DictVectorizer转换

        (2)本身拿到的数据就是字典类型

 OK,今天的分享就到这里,谢谢大家阅读,晚安2024.07.17   22:53

 

标签:机器,特征,数据,DictVectorizer,特征提取,第三关,勇闯,data,字典
From: https://blog.csdn.net/dhdjjfhdghh/article/details/141276492

相关文章

  • 数据平衡的艺术:解锁机器学习中的类别不平衡难题
    标题:数据平衡的艺术:解锁机器学习中的类别不平衡难题在机器学习的世界里,类别不平衡是一个常见且棘手的问题。它指的是在分类任务中,不同类别的样本数量存在显著差异。本文将深入探讨类别不平衡的成因、影响以及解决策略,并通过实际代码示例,展示如何在Python中应用这些策略。......
  • 误闯机器学习(第一关-概念和流程)
    以下内容,皆为原创,实属不易,请各位帅锅,镁铝点点赞赞和关注吧!好戏开场了。一.什么是机器学习        机器学习就是从数据中自动分析获取模型(总结出的数据),并训练模型,去预测数据。    内心独白:就好比我们人从日常生活中,归纳总结得出经验。利用总结的经验去得出......
  • 机器学习之ROC曲线
    机器学习之ROC曲线1.TPR与FPR计算2.TPR、FPR与分类阈值的关系3.生成ROC曲线4.AUC计算参考文献本博客主要参考了https://www.evidentlyai.com/classification-metrics/explain-roc-curve。1.TPR与FPR计算真阳率TPR(TruePositiverate),又称召回率recallrate......
  • 《机器学习》KNN算法搭配OpenCV训练模型、识别图片 No.2
    一、使用KNN算法识别数字1、明确目的:        有一张图片,其中有一份数据,其中共有0-9的不同写法的数字,共5000条,现在想要对这张图片中的数据进行训练,以完成当输入一张图片,图片内为手写的数字,能自动识别其数字的值为多少,从而完成训练。2、获取数据首先看下面一张图:它......
  • 《机器学习》——运用OpenCV库中的KNN算法进行图像识别
    文章目录KNN算法的简单介绍下载OpenCV库实验内容实验结果完整代码自己手写数字传入模型中测试KNN算法的简单介绍一、KNN算法的基本要素K值的选择:K值代表选择与新测试样本距离最近的前K个训练样本数,通常K是不大于20的整数。K值的选择对算法结果有重要影响,需要通过交......
  • 【机器学习】简析决策树
    决策树的直观理解决策树是一种常用的机器学习算法,用于分类和回归任务。为了让你理解决策树的原理,我将用一个形象的类比来解释。想象一下,你在参加一个问答游戏,目的是猜出某个人正在想的一种水果。这个人会依次回答你提出的各种问题,直到你猜到正确的水果。比如,你可能会问:......
  • legoEV3机器人场地赛如何按照规定路线运行(巡线)
    legoEV3机器人场地赛如何按照规定路线运行(巡线)在机器人场地赛中,巡线指让机器人按照固定线路(一般为白底黑线)运行的任务。而巡线也可以被称为“机器人场地赛的‘基本功’”,它既可以单独成为一类比赛项目也可以成为完成其他任务的“地基”。在这里我来给大家介绍两种颜色传感器巡线......
  • 《机器学习》 KNN算法、数据可视化 No.1
    一、了解机器学习1、什么是机器学习        机器学习是一种人工智能(AI)的分支,旨在让计算机通过数据自动学习和改进。机器学习算法被设计用于从数据中提取模式和规律,然后利用这些模式和规律来做出预测或做出决策,而无需明确的程序指令。        机器学习的基本......
  • AI 智能体 | 使用Coze搭建一个自己的机器人(一)
    本节将使用Coze搭建一个自己的机器人,第一阶段使用大模型+提示词。大模型+提示词进入扣子官网点击创建Bot,会出来一个弹窗在弹窗里面选择个人空间Bot名称的地方给你的bot起个名字Bot功能介绍,在这个地方输入你创建这个bot要实现什么功能图标的话你想替换的话可以通过本地上传图......
  • 奇异值分解在机器人学中的应用
    本文内容主要翻译自Maciejewski,A.A.andKlein,C.A.(1989)‘TheSingularValueDecomposition:ComputationandApplicationstoRobotics’,_TheInternationalJournalofRoboticsResearch_一文中的部分章节奇异值分解(SingularValueDecomposition,SVD)在机器人学......