【机器学习】特征提取

article/2025/8/30 4:26:09

特征提取

目标

  • 应用DictVectorizer实现对类别特征进行数值化、离散化

  • 应用CountVectorizer实现对文本特征进行数值化

  • 应用TfidfVectorizer实现对文本特征进行数值化

  • 说出两种文本特征提取的方式区别

定义

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

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

  • 字典特征提取(特征离散化)

  • 文本特征提取

  • 图像特征提取(深度学习)

特征提取API

sklearn.feature_extraction

字典特征提取

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

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

应用

对以下数据进行特征提取

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

流程分析

  • 实例化类DictVectorizer

  • 调用fit_transform方法输入数据并转换(注意返回格式)

def dict_demo():"""字典特征值提取:return:"""data = [{'city': '北京', 'temperature': 100}, {'city': '上海', 'temperature': 60}, {'city': '深圳', 'temperature': 30}]# 1. 实例化一个转换器   默认返回 sparse矩阵  将非0值按位置表示出来 以节省内存 提高加载效率transfer = DictVectorizer(sparse=False)# 应用场景:数据集中类别特征值较多;将数据集的特征-》字典类型;DictVectorizer转换;本身拿到的就是字典# 2. 调用fit_transform()data_new = transfer.fit_transform(data)print("data_new:\n", data_new)print("特征名字:\n", transfer.get_feature_names())return None

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

这个结果并不是想要看到的,所以加上参数,得到想要的结果,在这里把这个处理数据的技巧用专业的称呼"one-hot"编码。

总结

对于特征当中存在类别信息的都会做one-hot编码处理

文本特征提取

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

  • 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

应用

对以下数据进行特征提取

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

流程分析

  • 实例化类CountVectorizer

  • 调用fit_transform方法输入数据并转换 (注意返回格式,利用toarray()进行sparse矩阵转换array数组)

def count_demo():"""文本特征值抽取:return:"""data = ["life is short, i like python", "life is too long i dislike python"]# 1、实例化一个转换器类transfer = CountVectorizer()# 演示停用词# transfer = CountVectorizer(stop_words=["is", "too"])data_new = transfer.fit_transform(data)print("data_new:\n", data_new.toarray())print("特征名字:\n", transfer.get_feature_names())# 2、调用fit_transformreturn None

问题:如果我们将数据替换成中文?

发现英文默认是以空格分开的。其实就达到了一个分词的效果,所以我们要对中文进行分词处理

下面代码需要提前把文本做好空格间隙

def count_chinese_demo():"""中文文本特征值抽取:return:"""data = ["我 爱 北京 天安门", "天安门 上 太阳 升"]data2 = ["我爱北京天安门", "天安门上太阳升"]# 1、实例化一个转换器类transfer = CountVectorizer()data_new = transfer.fit_transform(data)print("data_new:\n", data_new.toarray())print("特征名字:\n", transfer.get_feature_names())# 2、调用fit_transformreturn None

更好的处理方式见下方案

jieba分词处理

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

需要安装下jieba库

pip install jieba

案例分析

    data = ["在过去两个月里,我和60多位小伙伴进行了1对1的一小时沟通;","TA绝大多数是想要尝试副业变现的朋友。","从一线城市到三线城市,从宝妈到职场人,从职场到体制内。"]

分析

  • 准备句子,利用jieba.cut进行分词

  • 实例化CountVectorizer

  • 将分词结果变成字符串当作fit_transform的输入值

def count_word(text):"""进行中文分词 我爱北京天安门-》我 爱 北京 天安门:param text::return:"""a = " ".join(list(jieba.cut(text)))print(a)return adef count_chinese_demo2():"""中文文本特征值抽取 自动分词:return:"""data = ["在过去两个月里,我和60多位小伙伴进行了1对1的一小时沟通;","TA绝大多数是想要尝试副业变现的朋友。","从一线城市到三线城市,从宝妈到职场人,从职场到体制内。"]# 1、实例化一个转换器类transfer = CountVectorizer(stop_words=["从宝妈"])data_new = transfer.fit_transform(count_word(item) for item in data)print("data_new:\n", data_new.toarray())print("特征名字:\n", transfer.get_feature_names())# 2、调用fit_transformreturn None

问题:该如何处理某个词或短语在多篇文章中出现的次数高这种情况?

Tf-idf文本特征提取

TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

公式

词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率

逆向文档频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之
文件的数目,再将得到的商取以10为底的对数得到

最终得出结果可以理解为重要程度。

注:假如一篇文件的总词语数是100个,而词语"非常"出现了5次,那么"非常"一词在该文件中的词频就是5/100=0.05。而计算文件频率(IDF)的方法是以文件集的文件总数,除以出现"非常"一词的文件数。所以,如果"非常"一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是lg(10,000,000 / 1,0000)=3。最后"非常"对于这篇文档的tf-idf的分数为0.05 * 3=0.15

案例

def tfidf_demo():"""用TF-IDF方法进行文本特征值抽取:return:"""data = ["在过去两个月里,我和60多位小伙伴进行了1对1的一小时沟通;","TA绝大多数是想要尝试副业变现的朋友。","从一线城市到三线城市,从宝妈到职场人,从职场到体制内。"]transfer = TfidfVectorizer(stop_words=["从宝妈"])data_new = transfer.fit_transform(count_word(item) for item in data)print("data_new:\n", data_new.toarray())print("特征名字:\n", transfer.get_feature_names())return None

Tf-idf的重要性

分类机器学习算法进行文章分类中前期数据处理方式


http://chatgpt.dhexx.cn/article/KwUCJKlF.shtml

相关文章

特征选择与特征抽取

特征抽取和特征选择是DimensionalityReduction(降维)两种方法,但是这两个有相同点,也有不同点之处: 1. 概念: 特征抽取(Feature Extraction):Creatting a subset of new features by…

【特征提取】基于深度学习的特征提取和匹配方法介绍

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达本文转自 | AI深度学习视线精彩内容 计算机视觉需要图像预处理,比如特征提取,包括特征点,边缘和轮廓之类。以前做跟踪和3-D重建&#…

特征工程之特征提取

![ 什么是特征提取呢? 1 特征提取 1 将任意数据(如文本或图像)转换为可用于机器学习的数字特征 注:特征值化是为了计算机更好的去理解数据 字典特征提取(特征离散化) 文本特征提取 图像特征提取(深度学习将介绍&…

数据分析 | 特征提取

目录 特征提取 1 方差过滤(VarianceThreshold) 2 卡方过滤(chi2;SelectKBest) 3 F检验(f_classif;SelectKBest) 关注我【生物海洋计算机支线】,获得更多生物海洋学&…

特征提取的方法

机器学习系列:(三)特征提取与处理 特征提取与处理 上一章案例中的解释变量都是数值,比如匹萨的直接。而很多机器学习问题需要研究的对象可能是分类变量、文字甚至图像。本章,我们介绍提取这些变量特征的方法。这些技术是数据处理的前提——序…

图像特征提取(VGG和Resnet特征提取卷积过程详解)

图像特征提取(VGG和Resnet算法卷积过程详解) 第一章 图像特征提取认知 1.1常见算法原理和性能 众所周知,计算机不认识图像,只认识数字。为了使计算机能够“理解”图像,从而具有真正意义上的“视觉”,本章我们将研究…

特征提取方法

潜在语义索引 潜在语义索引(Latent Semantic Indexing,以下简称LSI),也叫Latent Semantic Analysis ,简称LSA。本文中称为LSI。LSI是一种主题模型,他是利用SVD奇异值分解方法来获得文本的主题的。奇异值分解详见点击打开链接。 …

特征提取方法简介

one-hot 表示一个词 bag-of-words 表示一段文本 tf-idf 用频率的手段来表征词语的重要性 text-rank 借鉴page-rank来表征词语的权重 从基于SVD纯数学分解词文档矩阵的LSA,到pLSA中用概率手段来表征文档形成过程并将词文档矩阵的求解结果赋予概率含义,再到…

特征选择和特征提取(一、概述)

特征选择和特征提取属于图像处理领域最基本的操作。 再这之前,我们先来了解一下卷积和滤波,像平时我们听到的CNN,就是使用卷积操进行图像的滤波操作,简单来说,滤波是图像处理的操作,而卷积是实现滤波的方法…

图像特征及提取

本文主要用于记录图像特征及其提取方法 文章目录 1.颜色特征1.1量化颜色直方图1.2聚类颜色直方图 2.几何特征2.1边缘特征2.2基于特征点的特征描述子2.2.1寻找特征点:Harris角点检测2.2.2另一种特征点:斑点2.2.3SFIT:斑点的特征描述子 1.颜色特…

机器学习中的特征提取

特征提取是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,特征提取是为了计算机更好的去理解数据。 特征提取大体上可以分为三大类: 字典特征提取(特征离散化)文本特征提取图像特征提取(深度学习&#xf…

图像特征提取

从本节开始, 我们将逐步从数字图像处理向图像识别过渡。 严格地说, 图像特征提取属于图像分析的范畴, 是数字图像处理的高级阶段, 同时也是图像识别的开始。 本文主要包括以下内容 常用的基本统计特征, 如周长、面积…

机器视觉中的特征提取【0】:什么是特征提取,特征提取有什么作用?

1.什么是特征提取? 特征提取的英文叫做feature extractor,它是将一些原始的输入的数据维度减少或者将原始的特征进行重新组合以便于后续的使用。简单来说有两个作用:减少数据维度,整理已有的数据特征。 这里我给一个例子来解释特…

c语言结构体学习整理(结构体初始化,结构体指针)

渣渣c的c语言学习之路 1.关于c语言的结构体: 首先我们为什么要用到结构体,我们都已经学了很多int char …等类型还学到了同类型元素构成的数组,以及取上述类型的指针,在一些小应用可以灵活使用,然而,在我们实际应用中…

C语言----初始结构体详解

此文是作者初次学习C语言的时候,写的笔记博文,如有错误请及时指正,谢谢!!! 目录 1,什么是结构体 2. 结构体的声明 2,1结构体声明 2,2结构体成员的类型 2,…

openVAS 介绍

含义及作用: OpenVAS是开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器。其核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。 OpenVAS 的功能包括非认证测试、认证测…

040 OpenVAS的下载与安装

文章目录 一:OpenVAS的下载二:OpenVAS的安装2.1:中文版本步骤2.2:英文版本步骤 一:OpenVAS的下载 OpenVAS是开源的网络漏洞扫描器,自从Nessus收费了之后,分支出来的免费的 官网:htt…

Linux 漏洞扫描 openvas

什么是OpenVAS OpenVAS是一款开源的漏洞扫描攻击,主要用来检测网络或主机的安全性。其强大的扫描能力来自于集成数万个漏洞测试程序,这些测试程序以插件的形式提供,可以从官方网站免费更新. 一套完整的OpenVAS系统如下图显示 ① 客户层组件 …

关于openvas

目录 一:什么是openvas 二:作者 三:系统简介 四:建立架构 五:openvas功能 六:OpenVAS的核心组件 七:OpenVAS部署 八:openvas的组件构成 一:什么是openvas OpenV…

openvas

目录 一、openvas的简介 1、简介 2、建立的构架 二、openvas的环境 三、openvas的组件构成 四、openvas安装及使用 一、openvas的简介 1、简介 OpenVAS是开放式漏洞评估系统,也可以说它是⼀个包含着相关⼯具的⽹络扫描器。其核⼼部件是⼀个服务器,包括…