勇闯机器学习(第四关-文本特征提取)

以下内容,皆为本人原创,制作不易,首先感谢各位阅读。

|-----------------|------------------------------------------------------------------------------------|
| 第一关:机器学习概念和流程 | http://t.csdnimg.cn/IuHh4 |
| 第二关:数据集的使用 | http://t.csdnimg.cn/2jsdi |
| 第三关:特征工程-字典特征提取 | http://t.csdnimg.cn/ZpMto |

一.文本特征提取

紧接上章节,这章节我们说如何将文本数据转为二维数组。方法如下:

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

sklearn.feature_extraction.text.CountVectorizer(stop_words=[]) 返回词频矩阵

CountVectorizer.fit_transform(X) X:文本或者包含文本字符串的可迭代对象

返回值:返回sparse矩阵

CountVectorizer.inverse_transform(X) X:array数组或者sparse矩阵

返回值:转换之前数据格

CountVectorizer.get_feature_names() 返回值:单词列表

可能直接列出方法,有点困难,直接看代码和运行结果。

python 复制代码
from sklearn.feature_extraction.text import CountVectorizer

def count_demo():
    # 文本数据
    data = ['life is short, i want to study python',
           'life is long, i dislike c++']
    # 文本特征提取CountVectorizer
    # 实例化一个转换器类
    transfer = CountVectorizer()

    # 调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new\n", data_new)
if __name__ == '__main__':
    count_demo()

我们可以看到这个data转换后的特征值不是特征数组,那我可以加一个toarray()方法。

观察第一个print里面,加了toarray()方法,就可以返回二维数组

python 复制代码
from sklearn.feature_extraction.text import CountVectorizer

def count_demo():
    # 文本数据
    data = ['life is short, i want to study python',
           'life is long, i dislike c++']
    # 文本特征提取CountVectorizer统计每个样本特征词出现的个数
    # 实例化一个转换器类
    transfer = CountVectorizer()

    # 调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new\n", data_new.toarray())
    print("feature_names\n", transfer.get_feature_names_out())
if __name__ == '__main__':
    count_demo()

总结:

可以看到返回的二维数组中,是一些单词,也就是特征值。那里面的0和1是什么意思呢?

**CountVectorizer统计每个样本特征值出现的个数。**我们可以看到二维列表,它里面的元素是一维列表。一维列表里面的元素跟特征值的数量都是一样的,都是9个。这个0和1表示的是对应的。0代表这一组列表里没有这个单词,1则代表有一个。比如说dislike不在我们data的第一句话里,所以返回的二维列表里第一个元素就是0,代表第一句话没有这个词。

二维列表里面的数字,是特征值出现的次数。

二.中文数据特征提取

有了上面的基础,那我们直接看代码和运行结果,变化的地方就是数据变成中文了。

python 复制代码
from sklearn.feature_extraction.text import CountVectorizer

def count_chinese_demo():
    #中文文本数据
    data = ['我喜欢你', '你喜欢我吗']

    # 实例化转换器类
    transfer = CountVectorizer()

    data_new = transfer.fit_transform(data)
    print("data_new\n", data_new)
    print("feature_name\n", transfer.get_feature_names_out())

if __name__ == "__main__":
    count_chinese_demo()
内心感想:
特征值为什么是一句话呢, 像我们之前的英文句子(是由一个个英语单词组成,并且单词之间有空格),所以很轻易的提取。而我们的中文都是在一起的。所以就把整个句子当做特征值了。

将中文句子中间加几个空格就可以了。将数据换成这个。

python 复制代码
    data = ['我 喜欢 你', '你 喜欢 我吗']

OK,这次特征值,就发生了变化。

感谢大家的观看,今天的分享就到这里。

相关推荐
IT古董19 分钟前
【深度学习】常见模型-Transformer模型
人工智能·深度学习·transformer
沐雪架构师1 小时前
AI大模型开发原理篇-2:语言模型雏形之词袋模型
人工智能·语言模型·自然语言处理
python算法(魔法师版)2 小时前
深度学习深度解析:从基础到前沿
人工智能·深度学习
kakaZhui2 小时前
【llm对话系统】大模型源码分析之 LLaMA 位置编码 RoPE
人工智能·深度学习·chatgpt·aigc·llama
struggle20253 小时前
一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI
人工智能·深度学习·目标检测·语言模型·自然语言处理·数据挖掘·集成学习
佛州小李哥3 小时前
通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
追求源于热爱!4 小时前
记5(一元逻辑回归+线性分类器+多元逻辑回归
算法·机器学习·逻辑回归
云空4 小时前
《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》
运维·人工智能·web安全·网络安全·开源·网络攻击模型·安全威胁分析
AIGC大时代4 小时前
对比DeepSeek、ChatGPT和Kimi的学术写作关键词提取能力
论文阅读·人工智能·chatgpt·数据分析·prompt
爱喝奶茶的企鹅5 小时前
构建一个研发助手Agent:提升开发效率的实践
机器学习