02_特征工程和文本特征提取

02 特征工程和文本特征提取

数据集的构成

数据存放形式

  1. CSV 文件
  2. mysql: 性能瓶颈,读取速度; 格式不符合机器学习的格式
  3. pandas:读取工具
  4. numpy为什么读取速度快:
  • 动态语言
  • 全局解释性锁 GIL : 释放了 (GIL数据安全),真正的多线程

可用的数据集

  1. Kaggle : 大数据竞赛平台、真实数据、数据量大
  2. UCI: 数据集覆盖科学、生活、经济等领域
  3. Scikit-learn: 数据量小,方便学习

数据集的结构组成

  • 结构: 特征值 + 目标值

特征工程的定义

特征工程是什么?

特征工程:将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提供了对未知数据的预测准确性。

  • 很大程度上影响最后模型的精度

数据中对特征的处理

  1. Pandas: 数据读取方便,基本的处理格式的工具
  • DataFrame - 缺失值,数据处理
  • 机器学习:重复值不需要进行处理
  1. Sklearn: 对特征进行处理提供强大的接口
  • Python机器学习工具,包含许多知名算法的实现
  • 丰富的API

数据的特征抽取

定义:

  • 特征抽取是对文本等数据进行特征值化
  • 特征值化:让计算机更好的了解数据

Sklearn 特征抽取API (Sklearn.feature_extraction)

字典特征抽取

  • sklearn.feature_extraction.DictVectorizer
  • 把字典中的一些类别数据,分别进行转换成特征;数值型(浮点型)不会进行转化。
  • 数组形式,有类别的这些特征,先要转换字典数据
  1. fit_transform (直接接收字典)
from sklearn.feature_extraction import DictVectorizer

def dictver():
    """
    字典数据抽取
    :return:None
    """
    # 实例化
    dict = DictVectorizer(sparse=False)
    # 调用fit_transform
    data = dict.fit_transform(
        [{'city': '北京', 'temperature': 100},
         {'city': '上海', 'temperature': 60},
         {'city': '深圳', 'temperature': 30}])

    print(dict.get_feature_names())
    print(dict.inverse_transform(data))
    print(data)
    return None

if __name__ == '__main__':
    dictver()

```

  1. sparse矩阵 - 方便节约内存
  • (0,1)- 行列坐标 ; 1.0 - 值
  1. One-hot 编码
  • 每个类别生成一个布尔列,这些列中只有一列可以为每个样本取值1,便于机器学习数值分析。
  • 避免对每个类别生成编码是,1,2,3这种的会存在大小关系。

文本的特征抽取(数量)

  • sklearn.feature_extraction.text.CountVectorizer
  • 文本分类,情感分析
  • 对于单个英文字母不统计:不反应主题,没有情感依据
  1. 英文文本特征抽取
def countvec():
    """
    对文本进行特征值化
    :return:None
    """
    cv = CountVectorizer()
    data = cv.fit_transform(['life is short, i like python','life is too long, i dislike python'])
    print(cv.get_feature_names())
    # print(cv.inverse_transform(data))
    print(data.toarray())
    return None

if __name__ == '__main__':
    countvec()

  • 统计所有文章当中所有的词,重复的只看做一次
  • 对每篇文章,在词的列表里面进行统计每个词出现的次数
  • 单个字母不统计
  1. 中文文本
  • 需要对中文进行分词才能详细的进行特征值化
  • 不支持单个中文字
  • 使用 jieba这个模块 - jieba.cut(‘我是一个好程序员‘)
import jieba
from sklearn.feature_extraction.text import CountVectorizer

def cutword():
    """
    中文字分割
    :return: c1, c2, c3
    """
    con1 = jieba.cut('今天很残酷,明天更残酷,后天很美好,'
                     '但绝对大多数是死在明天晚上,所以每个人不要放弃今天')
    con2 = jieba.cut('我们看到的从很远星系来的光是在几百万年前发出的,'
                     '这样当我们看到宇宙时,我们是在看它的过去')
    con3 = jieba.cut('如果只用一种方式了解某样事物,你就不会真正的了解它。'
                     '了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系')

    # 转换成列表
    content1 = list(con1)
    content2 = list(con2)
    content3 = list(con3)

    # 把列表转换成字符串
    # join(iterable) 以指定字符串作为分隔符,将content1中所有元素合并成一个新的字符串
    c1 = ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)

    return c1, c2, c3

def hanzivec():
    """
    中文特征值化
    :return: None
    """
    c1, c2, c3 = cutword()
    cv = CountVectorizer()  # 实例化
    data = cv.fit_transform([c1, c2, c3])
    print(cv.get_feature_names())
    print(data.toarray())

if __name__ == '__main__':
    hanzivec()

文本特征抽取(语义)

  1. tf - idf (tf * idf) 重要性程度
  • tf: term frequency (词的频率)
  • idf: inverse document frequency (逆文档频率) log(总文档数量/该词出现的文档数量)
  1. TF-IDF: 如果某个词或者短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或短语具有很好的类别区分能力,适合用来分类。
  2. sklearn.feature_extraction.text.TfidfVectorizer
import jieba
from sklearn.feature_extraction.text import TfidfVectorizer

def cutword():
    """
    中文字分割
    :return: c1, c2, c3
    """
    con1 = jieba.cut('今天很残酷,明天更残酷,后天很美好,'
                     '但绝对大多数是死在明天晚上,所以每个人不要放弃今天')
    con2 = jieba.cut('我们看到的从很远星系来的光是在几百万年前发出的,'
                     '这样当我们看到宇宙时,我们是在看它的过去')
    con3 = jieba.cut('如果只用一种方式了解某样事物,你就不会真正的了解它。'
                     '了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系')

    # 转换成列表
    content1 = list(con1)
    content2 = list(con2)
    content3 = list(con3)

    # 把列表转换成字符串
    # join(iterable) 以指定字符串作为分隔符,将content1中所有元素合并成一个新的字符串
    c1 = ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)

    return c1, c2, c3

def hanzivec():
    """
    中文特征值化
    :return: None
    """
    c1, c2, c3 = cutword()
    tf = TfidfVectorizer()  # 实例化
    data = tf.fit_transform([c1, c2, c3])
    print(tf.get_feature_names())
    print(data.toarray())

if __name__ == '__main__':
    hanzivec()

原文地址:https://www.cnblogs.com/hp-lake/p/11825920.html

时间: 2024-08-15 18:24:17

02_特征工程和文本特征提取的相关文章

人工智能_1_初识_机器学习介绍_特征工程和文本特征提取

# 人工智能:预测,分类 # 人工智能: # 自动的工作 # 机器学习(包含深度学习) # 以前的限制因素:计算能力,数据,算法发展 # 用途: # 图像识别 # 识别图片中不同的地方(医学CT) 不用人工识别 # 图片艺术化(可以替代ps) # 无人驾驶 # 人脸识别 # 自然语言处理 # 语音识别 # 自动写报告 # 传统预测 # 性能评估 # NLP # 推荐系统 # 机器学习的数据:文件格式,csv(逗号分隔值) # 不使用数据库: # 1,性能瓶颈,数量过多,2,3GB 读取慢 # 2

特征工程 vs. 特征提取

“特征工程”这个华丽的术语,它以尽可能容易地使模型达到良好性能的方式,来确保你的预测因子被编码到模型中.例如,如果你有一个日期字段作为一个预测因子,并且它在周末与平日的响应上有着很大的不同,那么以这种方式编码日期,它更容易取得好的效果. 但是,这取决于许多方面. 首先,它是依赖模型的.例如,如果类边界是一个对角线,那么树可能会在分类数据集上遇到麻烦,因为分类边界使用的是数据的正交分解(斜树除外). 其次,预测编码过程从问题的特定学科知识中受益最大.在我刚才列举的例子中,你需要了解数据模式,然后改

【特征工程】特征工程技术与方法

引言 在之前学习机器学习技术中,很少关注特征工程(Feature Engineering),然而,单纯学习机器学习的算法流程,可能仍然不会使用这些算法,尤其是应用到实际问题的时候,常常不知道怎么提取特征来建模. 特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的. 特征工程的重要意义 数据特征会直接影响你使用的预测模型和实现的预测结果.准备和选择的特征越好,则实现的结果越好. 影响预测结果好坏的因素:模型的选择.可用的数据.特征的提取. 优质的特征往往描述了数据的固有结构. 大多数模型都可

特征工程基本流程

前言 特征是数据中抽取出来的对结果预测有用的信息,可以是文本或者数据.特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程.过程包含了特征提取.特征构建.特征选择等模块. 特征工程的目的是筛选出更好的特征,获取更好的训练数据.因为好的特征具有更强的灵活性,可以用简单的模型做训练,更可以得到优秀的结果."工欲善其事,必先利其器",特征工程可以理解为利其器的过程.互联网公司里大部分复杂的模型都是极少数的数据科学家在做,大多数工程师们做的事情基本是在数据仓

1. 特征工程之特征预处理

1. 前言 "数据决定了机器学习的上限,而算法只是尽可能逼近这个上限",这里的数据指的就是经过特征工程得到的数据.特征工程指的是把原始数据转变为模型的训练数据的过程,它的目的就是获取更好的训练数据特征,使得机器学习模型逼近这个上限.特征工程能使得模型的性能得到提升,有时甚至在简单的模型上也能取得不错的效果.特征工程在机器学习中占有非常重要的作用,主要包括数据与特征预处理.特征选择和数据的降维三部分.接下去会通过3篇文章对这三方面进行介绍.今天首先讲讲数据与特征的预处理. 2. 数据与特

AI学习---特征工程(Feature Engineering)

为什么需要特征工程(Feature Engineering) 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已 什么是特征工程 帮助我们使得算法性能更好发挥性能而已 sklearn主要用于特征工程pandas主要用于数据清洗.数据处理 特征工程包含如下3个内容: 1.特征抽取/特征提取 |__>字典特征抽取 |__>文本特征抽取 |__>图像特征抽取(深度学习) 2.特征预处理 3.特征降维 特征抽取/特征提取 我们常说的机器学习算法实际上就是我们统计学上的统计方法也就是

机器学习:数据准备和特征工程

对于数据挖掘,数据准备阶段主要就是进行特征工程. 数据和特征决定了模型预测的上限,而算法只是逼近了这个上限. 好的特征要少而精,这会使模型更简单.更精准. 一.特征构造 1.’常见提取方式 文本数据的特征提取 词袋向量的方式:统计频率 图像数据的特征提取 像素点RGB 用户行为特征提取 特征提取总结: 特征设计时需要与目标高度相关: 这个特征对预测目标是否有用 如果有用,这个特征的重要程度如何 这个特征的信息是否在其他特征重体现过 特征需要专业领域知识.直觉和一定的数学知识 初始提取的特征后续还

网络挖掘技术——微博文本特征提取

文本特征向量 经典的向量空间模型(VSM: Vector Space Model)由Salton等人于60年代提出,并成功地应用于著名的SMART文本检索系统.VSM概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂.当文档被表示为文档空间的向量,就可以通过计算向量之间的相似性来度量文档间的相似性.文本处理中最常用的相似性度量方式是余弦距离.文本挖掘系统采用向量空间模型,用特征词条(T1 ,T2 ,-Tn) 及其权值Wi 代表目标信息,在进行

机器学习:特征工程

特征选择直接影响模型灵活性.性能及是否简洁. 好特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易理解和维护. 特征选择 四个过程:产生过程,评价函数,停止准则,验证过程. 目的:过滤特征集合中不重要特征,挑选一组最具统计意义的特征子集,从而达到降维的效果. 选择标准:特征项和类别项之间的相关性(特征重要性). - - -搜索特征子空间的产生过程- - - 搜索的算法分为完全搜索(Complete),启发式搜索(Heuristic), 随机搜索(Random) 3大类. 完全