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

news/2024/10/18 14:23:47/

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

一.提问环节

        机器学习是什么?

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

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

 机器学习的概念关: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


http://www.ppmy.cn/news/1512351.html

相关文章

Emacs28.x版本之重要特性及用法实例(一百六十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…

Ansible可视化管理之web界面集成使用探究(未完待续)

一、前言 因某集成商管理的客户资源涉及4A接入管控要求,其中密码必须3个月更新一次,随着纳管主机的数量增多,手动去修改密码变得不现实,考虑无侵入性和资源耗用,便捷性等因素,首先选用Ansible作为此需求的…

每天一个数据分析题(四百九十二)- 主成分分析与因子分析

在因子分析中,因子载荷矩阵是用来表示( )。 A. 变量和因子之间的关系 B. 样本和因子之间的关系 C. 变量和样本之间的关系 D. 因子和因子之间的关系 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案…

Pytorch cat()与stack()函数详解

torch.cat() cat为concatenate的缩写,意思为拼接,torch.cat()函数一般是用于张量拼接使用的 cat(tensors: Union[Tuple[Tensor, ...], List[Tensor]], dim: _int 0, *, out: Optional[Tensor] None) -> Tensor: 可以看到cat()函数的参数&#xf…

掉头发特别厉害的日子要来了!用对这3个方法,让头发重新乌黑浓密起来!

最近天气转凉,马上就要迎来处暑,正式进入秋季! 很多人都有这样一个感受:进入秋天后,就特别容易掉头发,不管洗头、梳头还是睡觉,一抓头发总会掉几根甚至更多。 枕头上、沙发上、地板上.....头发遍…

微软运行库全集合:一站式解决兼容性问题

开发者在部署应用程序时经常遇到因缺少运行库而引发的兼容性问题。为了解决这一问题,电脑天空推荐微软常用运行库合集,一个集成了微软多个关键运行库组件的软件包。 📚 包含组件概览: Visual Basic Virtual Machine:…

【数据结构】线段树 需要pushdown

建树lrpushup单点修改lrpushup区间查询包一旦题目中pushdown就必须pushdown&#xff0c;否则也无需区间修改包pushuppushdown AcWing 243. 一个简单的整数问题2 - AcWing #include<iostream> using namespace std; #define ll long long struct Tree{int l,r;ll sum,ad…

收银系统源码-连锁店解决方案

千呼新零售2.0系统由零售行业连锁店一体化收银系统和多商户入驻平台商城两个板块组成&#xff0c;打造门店平台的本地生活即时零售模式。 其中连锁店收银系统包括线下收银私域商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。…