IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 快速入门python机器学习-3 -> 正文阅读

[人工智能]快速入门python机器学习-3

2.2 特征工程介绍

2.2.1 为什么需要特征工程

2.2.2 什么是特征工程

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

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

特征工程包含内容

特征抽取
	机器学习算法-统计方法-数学公式
	文本类型 -> 数值
	类别 -> 数值 
特征预处理
特征降维

2.3 特征抽取

2.3.1 特征抽取

1 将任意数据转换为机器学习的数字特征

字典特征抽取
文本特征抽取
图像特征抽取

2 特征提取API

sklearn.feature_extraction

2.3.2 字典特征抽取:类别 -> one-hot编码

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

1 应用

我们我们对一下数据进行特征特征抽取

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

2 流程分析

1、实例化转换器类:字典特征抽取
2、 调用fit_transform()

from sklearn.feature_extraction import DictVectorizer


# 字典特征抽取
def dict_demo():
    data = [{'city': '北京', 'temperature': 100},
            {'city': '上海', 'temperature': 60},
            {'city': '深圳', 'temperature': 30}
            ]
    # 1、实例化转换器类:字典特征抽取
    # 返回稀疏矩阵
    transfer = DictVectorizer(sparse=False)  # sparse=False,返回稀疏矩阵,默认是二维数组
    # 2 调用fit_transform()
    data_new = transfer.fit_transform(data)
    print('data_new\n', data_new, type(data_new))  # <class 'numpy.ndarray'>
    # 稀疏矩阵
    # [[  0.   1.   0. 100.]
    # [  1.   0.   0.  60.]
    # [  0.   0.   1.  30.]]

    # 1、实例化转换器类:字典特征抽取
    # 返回二维数组
    transfer = DictVectorizer(sparse=True)
    # 2 调用fit_transform()
    data_new = transfer.fit_transform(data)
    print('data_new\n', data_new, type(data_new))  # <class 'scipy.sparse.csr.csr_matrix'>
    # 二维数组
    # (0, 1)    1.0
    # (0, 3)	100.0
    # (1, 0)	1.0
    # (1, 3)	60.0
    # (2, 2)	1.0
    # (2, 3)	30.0

    print('特征名字\n', transfer.get_feature_names())
    # ['city=上海', 'city=北京', 'city=深圳', 'temperature']
    return None


if __name__ == '__main__':
    dict_demo()

2.3.3 文本特征抽取

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

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.TfidfVectorize

1 应用

我们我们对一下数据进行特征特征抽取

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

2 流程分析

from sklearn.feature_extraction.text import CountVectorizer


def text_demo():  # 英文文本抽取
    data = ['life is short, i like like python', 'life is too long, i dislike python']
    transfer = CountVectorizer(stop_words=["is", "too"])  # 为本特征抽取API 跳过词stop_words=[]
    data_new = transfer.fit_transform(data)

    print('data_new\n', data_new.toarray(), type(data_new))  # data_new.toarray()将稀疏矩阵变数组

    print('特征名字\n', transfer.get_feature_names())
    # ['dislike', 'life', 'like', 'long', 'python', 'short']
    return None
 
 
if __name__ == '__main__':
    text_demo()

3 jieba分词处理

jieba.cut() # 返回词语组成的生成器
#安装
pip install jieba
from sklearn.feature_extraction.text import CountVectorizer
import jieba  # 导入结巴分词


def cut_word(text):
    # 进行中文分词
    return ' '.join(list(jieba.cut(text)))


def ch_text_demo():  # 中文文本抽取
    data = ['今天很残酷,明天更残酷,后天很美好。',
            '我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看宇宙时,我们是在看它的过去。',
            '如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的其他事物相联系']
    data_new = []
    # 将data的句子分词后加入data_new列表
    for sent in data:
        data_new.append(cut_word(sent))

    # 1、实例化转换器类:字典特征抽取
    transfer = CountVectorizer(stop_words=[])
    '''
    CountVectorizer()函数只考虑每个单词出现的频率;然后构成一个特征矩阵,每一行表示一个训练文本的词频统计结果。其思想是,
    先根据所有训练文本,不考虑其出现顺序,只将训练文本中每个出现过的词汇单独视为一列特征,构成一个词汇表(vocabulary list),
    该方法又称为词袋法(Bag of Words)。
    '''

    # 2、调用方法
    data_final = transfer.fit_transform(data_new)

    print('data_new\n', data_final.toarray())
    '''
     [
         [0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 2 0 0 0 1 0 0 0]
         [0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 3 0 0 1 0 0 1 0 0 0 0 1 1]
         [1 1 0 4 3 0 0 1 0 0 1 1 0 1 1 1 0 1 1 0 0 1 0 0 2 1 0 1 0 0]
     ]
    '''
    print('特征名字\n', transfer.get_feature_names())
    # ['一种', '不会', '之前', '了解', '事物', '今天', '光是在', '其他', '几百万年', '发出', '取决于', '只用', '后天', '含义', '如何', '如果', '宇宙', '我们', '方式', '明天', '星系', '某样', '残酷', '看到', '真正', '秘密', '美好', '联系', '过去', '这样']
    return None


if __name__ == '__main__':
    text_demo()
    ch_text_demo()

5 Tf-idf文本特征提取

TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
5.1 公式
词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率
逆向文档频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取以10为底的对数得到

在这里插入图片描述

两个词:“经济”,“非常”
1000篇文章-语料库 
	100-“非常”
	10-“经济”
两篇文章
	文章A(100词):10次“经济” 
		tf=10/100=0.1
		idf=lg(1000/10)=2
	TF-IDF:tf*idf=0.2
	文章B(100词):10次 “非常” 
		tf=10/100=0.1
		idf=lg(1000/100)=1
	TF-IDF:tf*idf=0.1
5.2 API
sklearn.feature_extraction.text.TfidfVectorizer()#返回词的权重矩阵
	'''
	TfidfVectorizer.fit_transform(X) X:文本或者包含文本字符串的可迭代对象 返回值:返回sparse矩阵
	TfidfVectorizer.inverse_transform(X) X:array数组或者sparse矩阵 返回值:转换之前数据格
	TfidfVectorizer.get_feature_names() 返回值:单词列表
	'''
from sklearn.feature_extraction.text import TfidfVectorizer
import jieba


def cut_word(text):
    # 进行中文分词
    return ' '.join(list(jieba.cut(text)))


def tfidf_demo():
    data = ['今天很残酷,明天更残酷,后天很美好。',
            '我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看宇宙时,我们是在看它的过去。',
            '如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的其他事物相联系']
    data_new = []
    for sent in data:
        data_new.append(cut_word(sent))

    transfer = TfidfVectorizer()
    '''
    TfidfVectorizer()基于tf-idf算法。此算法包括两部分tf和idf,两者相乘得到tf-idf算法。tf算法统计某训练文本中,某个词的出现次数
    '''
    data_final = transfer.fit_transform(data_new)
    print('data_new\n', data_final.toarray())
    '''
    [
        [0.         0.         0.         0.         0.         0.35355339
        0.         0.         0.         0.         0.         0.
        0.35355339 0.         0.         0.         0.         0.
        0.         0.35355339 0.         0.         0.70710678 0.
        0.         0.         0.35355339 0.         0.         0.        ]
        [0.         0.         0.26532018 0.         0.         0.
        0.26532018 0.         0.26532018 0.26532018 0.         0.
        0.         0.         0.         0.         0.26532018 0.60534851
        0.         0.         0.26532018 0.         0.         0.26532018
        0.         0.         0.         0.         0.26532018 0.26532018]
        [0.15508369 0.15508369 0.         0.62033475 0.46525106 0.
        0.         0.15508369 0.         0.         0.15508369 0.15508369
        0.         0.15508369 0.15508369 0.15508369 0.         0.11794514
        0.15508369 0.         0.         0.15508369 0.         0.
        0.31016737 0.15508369 0.         0.15508369 0.         0.        ]
    ]
    '''
    print('特征名字\n', transfer.get_feature_names())
    # ['一种', '不会', '之前', '了解', '事物', '今天', '光是在', '其他', '几百万年', '发出', '取决于', '只用', '后天', '含义', '如何', '如果', '宇宙', '我们', '方式', '明天', '星系', '某样', '残酷', '看到', '真正', '秘密', '美好', '联系', '过去', '这样']
    return None


if __name__ == '__main__':
    tfidf_demo()

6 Tf-idf的重要性

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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:37:50  更:2021-08-06 09:38:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:28:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码