机器学习:特征工程字典特征和文本特征抽取

简介: 机器学习:特征工程字典特征和文本特征抽取

1、数据集

mysql 性能瓶颈,读取速度

pandas 读取工具

numpy释放GIL

cpython 协程

sklearn

2、数据集结构

特征值 + 目标值

3、机器学习

重复值 不需要进行去重

缺失值 特殊处理

4、特征工程定义

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

5、词汇

classification 分类

regression 回归

clustering 聚类

dimensionality reduction 降维

model selection 模型选择

preprocessing 特征工程

6、特征抽取

特征值化,让计算机更好的理解数据

文本 -> 数字

安装用到的库

pip install jieba scikit-learn numpy

6.1、字典特征抽取

把文本转换为数值

sparse矩阵,节约内存

ndarray 数组

One-hot编码 布尔值标记特征

代码示例

import numpy as np
from sklearn.feature_extraction import DictVectorizer
# 字典特征抽取
data = [
    {"city": "北京", "price": 2000},
    {"city": "上海", "price": 1500},
    {"city": "深圳", "price": 1000},
]
dict_vectorizer = DictVectorizer(dtype=np.int32, sparse=False)
result = dict_vectorizer.fit_transform(data)
print(dict_vectorizer.get_feature_names())
print(dict_vectorizer.inverse_transform(result))
print(result)
"""
['city=上海', 'city=北京', 'city=深圳', 'price']
[
    {'city=北京': 1, 'price': 2000}, 
    {'city=上海': 1, 'price': 1500}, 
    {'city=深圳': 1, 'price': 1000}
]
sparse = True 
(0, 1)  1.0
(0, 3)  2000.0
(1, 0)  1.0
(1, 3)  1500.0
(2, 2)  1.0
(2, 3)  1000.0
sparse = False    
[
    [   0    1    0 2000]
    [   1    0    0 1500]
    [   0    0    1 1000]
]
"""

6.2、文本特征抽取

Count 单词列表+出现次数统计

文本分类,情感分析

对单个字母不统计

代码示例

import logging
import jieba
from sklearn.feature_extraction.text import CountVectorizer
jieba.setLogLevel(logging.INFO)
def count_vector():
    """
    文本特征提取
    """
    words = [
        "今天的天气很好",
        "明天我要去逛街",
        "后天天气好我还去好天气逛街"
    ]
    data = []
    for word in words:
        word_cut = jieba.cut(word)
        data.append(" ".join(word_cut))
    print(data)
    cv = CountVectorizer()
    result = cv.fit_transform(data)
    print(cv.get_feature_names())
    print(result.toarray())
    """
    [
        '今天 的 天气 很 好', 
        '明天 我要 去 逛街', 
        '后天 天气 好 我 还 去 好 天气 逛街'
    ]
    ['今天', '后天', '天气', '我要', '明天', '逛街']
    [[1 0 1 0 0 0]
     [0 0 0 1 1 1]
     [0 1 2 0 0 1]]
    """

6.3、TF-IDF(词频-逆文档频率)

评估词的重要程度

思想:

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

tf: term frequency 词的频率 出现次数

idf: inverse document frequency 逆文档频率

image.png

说明:

n 文档中某个词的个数

N 文档总次数

D 文档总数

d 包含某个词的文档数

参考:https://baike.baidu.com/item/tf-idf/8816134?fr=aladdin

log(总文档数量N/该词出现的文档数量n)

log输入的值越小,输出值也越小

朴素贝叶斯

N >= n > 0

=> N/n >= 1

=> log定义域[1, 无穷)

=> 映射log值域[0, 1)

=> N固定 n 越大 -> N/n越小 -> log(N/n)越小


=> 单个文档中词频越高 tf越大

=> 出现文档越多 idf越小

=> 单个文档出现次数越多,出现文档数越少,重要程度越大

举例

# -*- coding: utf-8 -*-
from sklearn.feature_extraction.text import TfidfVectorizer
data = [
    "今天 天气 逛街",
    "明天 天气 逛街",
    "后天 天气 吃饭"
]
tf = TfidfVectorizer()
result = tf.fit_transform(data)
print(tf.get_feature_names())
print(result.toarray())
"""
    ['今天', '吃饭', '后天', '天气', '明天', '逛街']
[
    [0.72033345 0.         0.         0.42544054 0.         0.54783215]
    [0.         0.         0.         0.42544054 0.72033345 0.54783215]
    [0.         0.65249088 0.65249088 0.38537163 0.         0.        ]
]
"""

可以看到:

 "今天 天气 逛街", 今天 tf-idf值最大 0.72033345
 "明天 天气 逛街", 明天 tf-idf值最大 0.72033345
 "后天 天气 吃饭"  后天 和 吃饭 tf-idf值最大 0.65249088

代码示例

import logging
import jieba
from sklearn.feature_extraction.text import TfidfVectorizer
jieba.setLogLevel(logging.INFO)
def tfidf_vector():
    words = [
        "今天的天气很好",
        "明天我要去逛街",
        "后天天气好我还去好天气逛街"
    ]
    data = []
    for word in words:
        word_cut = jieba.cut(word)
        data.append(" ".join(word_cut))
    print(data)
    tf = TfidfVectorizer()
    result = tf.fit_transform(data)
    print(tf.get_feature_names())
    print(result.toarray())
    """
    去除单个字的词
    [
        '今天 天气', 
        '明天 我要 逛街', 
        '后天 天气 天气 逛街'
    ]
    ['今天', '后天', '天气', '我要', '明天', '逛街']
    [
        [0.79596054 0.         0.60534851 0.         0.         0.        ]
        [0.         0.         0.         0.62276601 0.62276601 0.4736296 ]
        [0.         0.50689001 0.77100584 0.         0.         0.38550292]
    ]
    """


相关文章
|
7月前
|
机器学习/深度学习 算法 Python
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
278 7
|
9月前
|
机器学习/深度学习 存储 设计模式
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
356 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
|
4月前
|
存储 分布式计算 API
基于PAI-FeatureStore的LLM embedding功能,结合通义千问大模型,可通过以下链路实现对物品标题、内容字段的离线和在线特征管理。
本文介绍了基于PAI-FeatureStore和通义千问大模型的LLM embedding功能,实现物品标题、内容字段的离线与在线特征管理。核心内容包括:1) 离线特征生产(MaxCompute批处理),通过API生成Embedding并存储;2) 在线特征同步,实时接入数据并更新Embedding至在线存储;3) Python SDK代码示例解析;4) 关键步骤说明,如客户端初始化、参数配置等;5) 最佳实践,涵盖性能优化、数据一致性及异常处理;6) 应用场景示例,如推荐系统和搜索排序。该方案支持端到端文本特征管理,满足多种语义理解需求。
145 1
|
机器学习/深度学习 算法 数据可视化
机器学习模型中特征贡献度分析:预测贡献与错误贡献
本文将探讨特征重要性与特征有效性之间的关系,并引入两个关键概念:预测贡献度和错误贡献度。
955 3
|
7月前
|
存储 机器学习/深度学习 缓存
特征平台PAI-FeatureStore的功能列表
本内容介绍了阿里云PAI FeatureStore的功能与使用方法,涵盖离线和在线特征管理、实时特征视图、行为序列特征视图、FeatureStore SDK的多语言支持(如Go、Java、Python)、特征生产简化方案、FeatureDB存储特性(高性能、低成本、及时性)、训练样本导出以及自动化特征工程(如AutoFE)。同时提供了相关文档链接和技术细节,帮助用户高效构建和管理特征工程。适用于推荐系统、模型训练等场景。
167 2
|
7月前
PAI-Rec推荐平台对于实时特征有三个层次
PAI-Rec推荐平台针对实时特征有三个处理层次:1) 离线模拟反推历史请求时刻的实时特征;2) FeatureStore记录增量更新的实时特征,模型特征导出样本准确性达99%;3) 通过callback回调接口记录请求时刻的特征。各层次确保了实时特征的准确性和时效性。
169 0
|
9月前
|
存储 分布式计算 MaxCompute
使用PAI-FeatureStore管理风控应用中的特征
PAI-FeatureStore 是阿里云提供的特征管理平台,适用于风控应用中的离线和实时特征管理。通过MaxCompute定义和设计特征表,利用PAI-FeatureStore SDK进行数据摄取与预处理,并通过定时任务批量计算离线特征,同步至在线存储系统如FeatureDB或Hologres。对于实时特征,借助Flink等流处理引擎即时分析并写入在线存储,确保特征时效性。模型推理方面,支持EasyRec Processor和PAI-EAS推理服务,实现高效且灵活的风险控制特征管理,促进系统迭代优化。
196 6
|
8月前
|
机器学习/深度学习 算法 搜索推荐
机器学习“捷径”:自动特征工程全面解析
​ 在机器学习项目中,特征工程是影响模型性能的关键步骤。它通过从原始数据中提取出更有用的特征,帮助模型更好地捕捉数据中的模式。然而,传统的特征工程过程往往需要大量的领域知识和实验调整,是一项耗时费力的工作。 近年来,自动特征工程(Automated Feature Engineering)技术的兴起,为这一问题提供了新的解决方案。它旨在通过自动化方法从数据中生成和选择最优特征,使得特征工程过程更加高效。本文将详细介绍自动特征工程的基本概念、常用技术、工具,并通过代码示例展示其实际应用。
|
机器学习/深度学习 数据采集 数据挖掘
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
因果推断方法为特征工程提供了一个更深层次的框架,使我们能够区分真正的因果关系和简单的统计相关性。这种方法在需要理解干预效果的领域尤为重要,如经济学、医学和市场营销。
370 1
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
|
机器学习/深度学习 数据采集 自然语言处理
利用机器学习进行文本情感分析
【10月更文挑战第4天】本文将介绍如何使用机器学习技术对文本进行情感分析,包括预处理、特征提取、模型训练和结果评估等步骤。我们将使用Python编程语言和scikit-learn库来实现一个简单的情感分析模型,并对模型的性能进行评估。

热门文章

最新文章