机器学习(三) -- 特征工程(1)

系列文章目录

机器学习(一) -- 概述

机器学习(二) -- 数据预处理(1-3)

机器学习(三) -- 特征工程(1-2)

未完待续……


目录

系列文章目录

前言

一、特征工程简介

1、特征工程定义:

2、特征工程包含内容:

二、特征提取

1、定义

2、字典特征提取

3、文本特征提取

3.1、 英文文本分词

3.1.1、停用词方法

3.2、中文文本分词

3.2.1、普通方法

3.2.2、jieba实现自动分词

3.2.3、Tf-idf文本特征提取


机器学习(三) -- 特征工程(2)


前言

tips:这里只是总结,不是教程哈。

“***”开头的是给好奇心重的宝宝看的,其实不太重要可以跳过。

此处以下所有内容均为暂定,因为我还没找到一个好的,让小白(我自己)也能容易理解(更系统、嗯应该是宏观)的讲解顺序与方式。

第一文主要简述了一下机器学习大致有哪些东西(当然远远不止这些),对大体框架有了一定了解。接着我们根据机器学习的流程一步步来学习吧,掐掉其他不太用得上我们的步骤,精练起来就4步(数据预处理,特征工程,训练模型,模型评估),其中训练模型则是我们的重头戏,基本上所有算法也都是这一步,so,这个最后写,先把其他三个讲了,然后,在结合这三步来进行算法的学习,兴许会好点(个人拙见)。


一、特征工程简介

其实数据预处理和特征工程,两者并无明显的界限,都是为了更好的探索数据集的结构,获得更多的信息,将数据送入模型中之前进行整理。可以说数据预处理是初级的特征处理,特征工程是高级的数据预处理,也可以说这里的预处理过程是广义的,包含所有的建模前的数据预处理过程。

(简单理解,就是数据预处理是数据本身的问题,如数据缺失;特征工程是为了更好的让数据进行机器学习,如进行降维)

为什么需要特征工程?

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。

所以需要在特征上下功夫。

1、特征工程定义:

特征工程是使用一定技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。会直接影响机器学习的效果。

2、特征工程包含内容:

特征提取(特征抽取)、特征预处理、特征降维

(基本上==特征构建、特征变换(特征缩放)、特征选择)

二、特征提取

1、定义

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

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

主要分为字典特征提取(特征离散化)、文本特征提取、图像特征提取(深度学习再介绍)

特征提取API是

sklearn.feature_extraction

2、字典特征提取

字典特征提取API

sklearn.feature_extraction.DictVectorizer导入:
from sklearn.feature_extraction import DictVectorizer
# 创建数据集
data = [{'name':'薰悟空', 'age':1160}, {'name':'朱八姐', 'age':235}, {'name':'傻无能', 'age':9000}]

# 提取特征值,转化为稀疏矩阵
# 1、实例化转换器类
transfer = DictVectorizer()# 2、提取特征值
feature_data = transfer.fit_transform(data)print('稀疏矩阵特征值\n', feature_data)
print('特征名字:', transfer.get_feature_names())

 DictVectorizer()使用默认参数会返回一个稀疏矩阵(sparse矩阵)。其实就是一个和下面的操作出现的一样的矩阵,只是采用三元组的格式保存,能减少存储空间的开销。

三元组:(行号,列号,元素值)

上面稀疏矩阵特征值换为矩阵为:

0(age)1(name=傻无能)2(name=朱八姐)3(name=薰悟空)
01160001
1235010
29000100

 然后特征名称对应的就是分别的列号,即0为‘age’,1为‘name=傻无能’,2为‘name=朱八姐’,3为‘name=薰悟空’。

DictVectorizer(sparse=False)返回一个One-hot编码矩阵。

# 提取特征值,转化为二维矩阵
# 1、实例化转换器类
transfer = DictVectorizer(sparse=False)# 2、提取特征值
feature_data = transfer.fit_transform(data)print('二维矩阵特征值:\n', feature_data)
print('特征名字:', transfer.get_feature_names())

一般这样使用。

3、文本特征提取

文本特征提取API

sklearn.feature_extraction.text.CountVectorizer
导入:
from sklearn.feature_extraction.text import CountVectorizer

3.1、 英文文本分词

# 1、实例化一个转换器类
transfer = CountVectorizer()# 2、调用fit_transform
data_new = transfer.fit_transform(data)print("data_new:\n", data_new.toarray())  # toarray转换为二维数组
print("特征名字:\n", transfer.get_feature_names())

一样把特征名字和列名对应上去

0(dislike)1(is)2(life)3(like)4(long)5(python)6(short)7(too)
001120110
211101101
3.1.1、停用词方法

给转换器传入停用词的列表,stop_words=['is', 'too'],其中的词不会被提取。

transfer = CountVectorizer(stop_words=['is', 'too'])

3.2、中文文本分词

3.2.1、普通方法

这种实现只能通过给中文加空格才行。

# 1、实例化一个转换器类
transfer = CountVectorizer()# 2、调用fit_transform
data_new = transfer.fit_transform(data)print("data_new:\n", data_new.toarray())  # toarray转换为二维数组
print("特征名字:\n", transfer.get_feature_names())

3.2.2、jieba实现自动分词

需要先下载jieba哟

pip install jieba

def cut_word(text):return ' '.join(jieba.cut(text))def count_chinese_demo2():for sent in data:data_new.append(cut_word(sent))print(data_new)# 1、实例化一个转换器类transfer = CountVectorizer()# 2、调用fit_transformdata_final = transfer.fit_transform(data_new)print("data_final:\n", data_final.toarray())print("特征名字:\n", transfer.get_feature_names())return Nonecount_chinese_demo2()

3.2.3、Tf-idf文本特征提取

Tf-idf文本特征提取API:

sklearn.feature_extraction.text.TfidfVectorizer
导入:
from sklearn.feature_extraction.text import TfidfVectorizer

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

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

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

    ,其得出结果可以理解为重要程度

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

def cut_word(text):return ' '.join(jieba.cut(text))def tfidf_demo():for sent in data:data_new.append(cut_word(sent))print(data_new)# 1、实例化一个转换器类transfer = TfidfVectorizer()# 2、调用fit_transformdata_final = transfer.fit_transform(data_new)print("data_final:\n", data_final.toarray())print("特征名字:\n", transfer.get_feature_names())return Nonetfidf_demo()

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

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

相关文章

初识Java并发,一问读懂Java并发知识文集(4)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

外包干了3个多月,技术退步明显。。。。。

先说一下自己的情况,本科生生,19年通过校招进入广州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

FBL刷写

刷写 1、刷写需求的理解2、刷写流程2.1、预编程阶段:保证在编程阶段的动作能够正常操作,控制器给响应。整车功能不会出现问题 刷写某一控制器时,避免其他控制器集DTC,85控制DTC; 28 通信控制.保证总线负载率不要过高(下…

爬虫实战3-js逆向入门:以黑猫投诉平台为例

目录 引言 逆向过程 步骤一:找到参数对应js代码位置 步骤二:分析参数值的生成逻辑 步骤三:确定函数u的具体内容 步骤四:使用python实现请求参数的生成 投诉信息爬取 引言 下面是一张主流网页加密方法的思维导图&#xff0c…

1-并发编程线程基础

什么是线程 在讨论什么是线程前有必要先说下什么是进程,因为线程是进程中的一个实体,线程本身是不会独立存在的。 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径&#…

Javaweb之Mybatis的基础操作之新增和更新操作的详细解析

1.4 新增 功能:新增员工信息 1.4.1 基本新增 员工表结构: SQL语句: insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time) values (songyuanqiao,宋远桥,1,1.jpg,2,2012-10-09,2,2022-10-…

js——json对象相互转化——js基础积累

js——json对象相互转化——js基础积累 需求场景解决步骤1:定义一个变量接收此字段,方便处理解决步骤2: { 外面的双引号要去掉解决步骤3:使用正则去除参数中的\\解决步骤4:如果此参数必须以{开头,以}结尾解…

【Python学习】Python学习2

目录 【Python学习】Python学习2 1.前言2.基本语法2.1标识符2.2保留字2.3行和缩进2.4多行语句2.5 Python 引号2.6 Python注释2.7 Python空行2.8 等待用户输入2.9 print 输出2.10 多个语句构成代码组2.11 命令行参数 参考 文章所属专区 Python学习 1.前言 主要是Python基本语…

如何使用CapSolver解决Web爬虫中遇到的CAPTCHA问题

Web爬取是一种强大的技术,用于从网站中提取数据,但经常会遇到一个常见障碍,即CAPTCHA。CAPTCHA是“Completely Automated Public Turing test to tell Computers and Humans Apart”的缩写,旨在防止自动机器人访问网站。然而&…

AI小冰入驻淘宝 将提供虚拟人陪伴服务

AI小冰正式入驻淘宝! 据悉,小冰在淘宝开出了“小冰旗舰店”、以及手淘小程序“X Eva 克隆人的平行世界”,为消费者提供基于KOL虚拟人带来的陪伴服务体验。用户搜索“小冰旗舰店”就可以直达店铺进行选购。 ​小冰旗舰店的首批商品包括冰花直充…

毛戈平公司上市终止:产品依赖代工,研发投入低,毛戈平夫妇套现

时隔一年,毛戈平化妆品股份有限公司(下称“毛戈平”或“毛戈平公司”)在A股的上市之旅再次宣告终止。 据贝多财经了解,毛戈平公司最早于2016年12月预披露招股书,准备在上海证券交易所上市,原计划募资5.12亿…

基于闪电搜索算法优化的Elman神经网络数据预测 - 附代码

基于闪电搜索算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于闪电搜索算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于闪电搜索优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…