机器学习—特征工程(三)

什么是特征工程

特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。

  • 意义︰会直接影响机器学习的效果

特征工程的位置与数据处理的比较

在这里插入图片描述

  • pandas:—个数据读取非常方便以及基本的处理格式的工具
  • sklearn:对于特征的处理提供了强大的接口

sklearn 特征工程
pandas 数据清洗、数据处理

特征工程包含内容

  • 特征抽取
  • 特征预处理
  • 特征降维

什么是特征抽取

例一:
在这里插入图片描述
机器学习算法——统计方法——数学公式
文本类型—>数值

例二:
在这里插入图片描述
类型——>数值

特征提取

将任意数据(如文本或图像)转换为可用于机器学习的数字特征

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

  • 字典特征提取(特征离散化)
  • 文本特征提取
  • 图像特征提取(深度学习将介绍)

特征提取API

sklearn.feature_extraction

字典特征提取

类别——>one-hot编码

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

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

vector 数学:向量 物理:矢量
矩阵 matrix 二维数组
向量 vector 一维数组
父类:transformer

1应用

[{i'city': '北京', ' temperature ' :100},
{ ' city ' : '上海', ' temperature ':60},
{ 'city ': '深圳', ' temperature ' :30}]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

sparse=True返回稀疏矩阵,元组表示非0值的位置
sparse=False范围二维数组
稀疏矩阵好处就是节省内存,提高加载效率

2流程分析

  • 实例化类DictVectorizer
  • 调用fit_transform方法输入数据并转换(注意返回格式)
from sklearn.feature_extraction import DictVectorizerdef dict_demo( ) :data = [{i'city': '北京', ' temperature ' :100},{ ' city ' : '上海', ' temperature ':60},{ 'city ': '深圳', ' temperature ' :30}]#1、实例化一个转换器类transfer = DictVectorizer(sparse=False)#2、调用fit_transformdata = transfer.fit_transform(data)print("返回的结果:\n",data)#打印特征名字print("特征名字: \n",transfer.get_feature_names( ))return None

注意观察没有加上sparse=False参数的结果

pandas中的离散化的时候,也实现了类似的效果。这个处理数据的技巧叫做”one-hot“编码:
在这里插入图片描述
在这里插入图片描述

3总结
对于特征当中存在共别信息的我们都会做one-hot编码处理

4应用场景

  • 数据集当中类别特征比较多
    • 将数据集的特征——>字典类型
    • bictVectorizer转换
  • 本身拿到的数据就是字典类型

文本特征提取

作用:对文本数据进行特征值化

  • sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
    • 返回词频矩阵
  • CountVectorizer.fit_transform(X) X:文本或者包含文本字符串的可迭代对象
    • 返回值:返回sparse矩阵
  • CountVectorizer.inverse_transform(X) X:array数组或者sparse矩阵
    • 返回值:转换之前数据格
  • CountVectorizer.get_feature_names()
    • 返回值:单词列表
  • sklearn.feature_extraction.text.TfidfVectorizer

1应用
我们对以下数据进行特征提取

["life is short,i like python" ,
"life is too long,i dislike python"]

在这里插入图片描述

在这里插入图片描述

没有sparse=True参数,用.toarray()
单词作为特征,统计每个样本特征词出现的个数

方法1: CountVectorizer

在这里插入图片描述
在这里插入图片描述

中文没有空格的分割
data =[“我 爱 北京 天安门”,“天安门 上 太阳 升"]
在这里插入图片描述

stop_words停用词
在这里插入图片描述在这里插入图片描述

2流程分析

  • 实例化类CountVectorizer
  • 调用fit_transform方法输入数据并转换(注意返回格式,利用toarray()进行sparse矩阵转换array数组)
from sklearn.feature_extraction.text import CountVectorizerdef text_count_demo():data = ["life is short,i like python" ,"life is too long,i dislike python"]#1、实例化一个转换器类# transfer = CountVectorizer(sparse=False)transfer = CountVectorizer( )#2、调用fit_transformdata = transfer.fit_transform(data)print("文本特征抽取的结果:\n", data.toarray())print("返回特征名字:\n",transfer.get_feature_names())return None

在这里插入图片描述
在这里插入图片描述

3jieba分词处理

  • jieba.cut()
    • 返回词语组成的生成器

需要安装下jieba库

pip3 install jieba

4案例分析
对以下三句话进行特征值化

今天很残酷,明天更残酷,后天很美好,
但绝对大部分是死在明天晚上,所以每个人不要放弃今天。我们看到的从很远星系来的光是在几百万年之前发出的,
这样当我们看到宇宙时,我们是在看它的过去。如果只用一种方式了解某样事物,你就不会真正了解它。
了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。
  • 分析
    • 准备句子,利用jieba.cut进行分词
    • 实例化CountVectorizer
    • 将分词结果变成字符串当作fit_transform的输入值
from sklearn.feature_extraction.text import Countvectorizer
import jiebadef cut_word (text):
#用结巴对中文字符串进行分词text = " ".join(list(jieba.cut(text)))return textdef text_chinese_count_demo2():data = ["今天很残酷,明天更残酷,后天很美好,
但绝对大部分是死在明天晚上,所以每个人不要放弃今天。","我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。","如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]#将原始数据转换成分好词的形式text_list = []for sent in data;text_list.append(cut_word(sent))print(text_list)#1、实例化一个转换器类#transfer = CountVectorizer(sparse=False)transfer = 	CountVectorizer()#2、调用fit_transformdata = transfer.fit_transform(text_list)print("文本特征抽取的结果:\n", data.toarray( ))print("返回特征名字:\n", transfer.get_feature_names())return None

在这里插入图片描述

关键词∶在某一个类别的文章中,出现的次数很多,但是在其他类别的文章当中出现很少

方法2:TfidfVectorizer

在这里插入图片描述
5 Tf-idf文本特征提取

  • TF-IDF的主要思想是︰如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
  • TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

TF-IDF—>重要程度 TF—>词频 IDF—>逆向文档频率
eg:
在这里插入图片描述

5.1公式

  • 词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率
  • 逆向文档频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取以10为底的对数得到。
    在这里插入图片描述

5.2 API

  • sklearn.feature_extraction.text.TfidfVectorizer(stop_words=None,…)
    • 返回词的权重矩阵
      • TfidfVectorizer.fit_transform(X)
        • X:文本或者包含文本字符串的可迭代对象
        • 返回值:返回sparse矩阵
      • TfidfVectorizer.inverse_transform(X)
        • X:array数组或者sparse矩阵
        • 返回值:转换之前数据格式
      • TfidfVectorizer.get_feature_names()
        • 返回值:单词列表

5.3 流程分析
在这里插入图片描述
在这里插入图片描述

6 Tf-idf的重要性
分类机器学习算法进行文章分类中前期数据处理方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/617452.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某网站sign签名参数与数据响应加密逆向分析

文章目录 1. 写在前面2. 接口分析3. 断点分析4. 扣代码 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力…

Nature Machine Intelligence 纽约大学团队提出基于深度学习和语音生成技术的脑电-语音解码

由于神经系统的缺陷导致的失语会导致严重的生活障碍,它可能会限制人们的职业和社交生活。近年来,深度学习和脑机接口(BCI)技术的飞速发展为开发能够帮助失语者沟通的神经语音假肢提供了可行性。开发神经-语音解码器的尝试大多数依…

大模型实战案例:8卡环境微调马斯克开源大模型 Grok-1

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

C语言 | Leetcode C语言题解之第19题删除链表的倒数第N个结点

题目: 题解: struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {struct ListNode* dummy malloc(sizeof(struct ListNode));dummy->val 0, dummy->next head;struct ListNode* first head;struct ListNode* second dummy;f…

项目之旅(前两周)

文章目录 学习总结input1.text 文本框2.password 密码框3.button 按钮4.file 文件还可定义上传类型 5.日期6.radio 单选框7. checkbox 复选框 项目总结生活总结 学习总结 input 本次写项目时才发现,input有很多种用法,这里列举几种 1.text 文本框 不…

【问题篇】activiti工作流流程图更新后旧数据问题

互相学习交流 当我们使用activiti开发工作流时,项目上线后可能修改需求导致修改流程图也是很常见的情况。但是activiti更新流程图后,以前的流程实例并不会也跟着更新,activiti会保存每一份的流程图版本,只有新发起的流程实例才会…

Redis(二十一)高性能设计:epoll和IO多路复用深度解析

文章目录 概览举例结论 I/O多路复用模型概述Redis的IO多路复用Unix网络编程IO模型同步异步、阻塞非阻塞案例同步异步、阻塞非阻塞总结 BIO、NIO、多路复用BIO演示accept演示read痛点 NIOIO多路复用Redis多路复用模型Reactor设计模式 select,pol, epol 都是I/O多路复用的具体的实…

2024mathorcup妈妈杯C题数学建模无水印高质量论文新鲜出炉

以下展示部分正文内容:完整内容见文末名片 添加图片注释,不超过 140 字(可选) 添加图片注释,不超过 140 字(可选) 添加图片注释,不超过 140 字(可选) 添加图片…

操作系统(Operating System)专题篇——同步与互斥1

目录 0.前言 1.同步与互斥问题总览 2.生产者-消费者问题 2.1 单生产者-单消费者-多资源 2.2 多生产者-多消费者-单资源 2.3 吸烟者问题(单生产者-多消费者-单资源) 2.4 和尚打水问题(多生产者-多消费者-多资源) 3.读写者问题 3.1 读者优先 3.2 写者优先 3.3 过桥问题…

【动态规划 区间dp 位运算】100259. 划分数组得到最小的值之和

本文涉及知识点 动态规划 区间dp 位运算 LeetCode100259. 划分数组得到最小的值之和 给你两个数组 nums 和 andValues,长度分别为 n 和 m。 数组的 值 等于该数组的 最后一个 元素。 你需要将 nums 划分为 m 个 不相交的连续 子数组,对于第 ith 个子数…

大语言模型:红蓝对抗的工作原理及作用

您是否对强大的生成式AI领域心生好奇,却又担心随之而来的潜在漏洞?您只需了解红蓝对抗就好了,它也称为破解或提示注入。AI开发的这一关键环节往往被忽视,但其在提高生成式AI模型的性能方面发挥的作用却至关重要。 大语言模型&…

01—JavaScript概述

一、初识Javascript JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML(标…