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

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

# 数据集
#   kaggle ,大数据竞赛平台
#   UCI,覆盖面广
#   scikit-learn,数据量小,方便学习

# 常用数据集的结构组成:特征值+目标值
# dataFrame:行锁引,列索引
""" 身高 体重 肤色,头发长度   (特征值)               目标值
1                                                 男  女
2
有些数据集可以没有目标值
dataFrame:缺失值,数据转换
机器学习:重复值 不需要去重
"""
# 特征工程
#   是什么:将原始数据转换为更好的代表预测模型的潜在问题特征的过程,提高预测效果
#   意义:直接影响预测结果
#   scikit-learn库介绍:包含许多机器学习算法实现
#       pip install scikit-learn即可 需要先安装 numpy,pandas等库
#   数据特征的提取
# 特征值化  ---> 转化为数字
# ===========================================================================================
# 对字典进行特征抽取
from sklearn.feature_extraction import DictVectorizer
def dictvec():
    """
    字典数据抽取
    :return: None
    """
    # 实例化
    dict = DictVectorizer(sparse=False)
    data = dict.fit_transform([
        {"city": "北京", "templature": 100},
        {"city": "天津", "templature": 30},
        {"city": "上海", "templature": 60},
                        ])
    print(dict.get_feature_names()) # [‘city=上海‘, ‘city=北京‘, ‘city=天津‘, ‘templature‘]
    print(data)  # 矩阵

"""
  (0, 1)    1.0
  (0, 3)    100.0
  (1, 2)    1.0
  (1, 3)    30.0
  (2, 0)    1.0
  (2, 3)    60.0
[‘city=上海‘, ‘city=北京‘, ‘city=天津‘, ‘templature‘] feature_names
[[  0.   1.   0. 100.] One-hot编码  对于每条数据,若属于摸个特征标记为1,否则为0
 [  0.   0.   1.  30.]
 [  1.   0.   0.  60.]]
"""
# 注意:把字典中一些类别的一些数据转化为特征,对于数字类型不进行转换
#       对于数组类型,若有特征值,需要转换为字典  (切转化时选择有效的特征值)
# DictVectorizer(Sparse=True,....) 默认转化为矩阵,改为false变为数组
#   DictVectorizer.fit_transform(X) X 为字典或迭代器  返回一个sparse矩阵
#   DictVectorizer.inverse_transform(X) X 数组或sparse  返回一个之前的格式
#   DictVectorizer.get_feature_names() 返回类别类型
#   DictVectorizer.trasnsform(X) 按照原先的标准转换
# ===========================================================================================
# 对文本进行抽取
from sklearn.feature_extraction.text import CountVectorizer
import jieba
def countvec():
    cv = CountVectorizer()  # 里边没有参数
    res = cv.fit_transform([
        "life is short,I like python,life is too long",# 每个看做短文章
        "a is the first of alphabet",
        " ".join(list(jieba.cut("下载jieba-0.39.zip然后解压。记住路径。cmd进入命令输入界面,首先cd到我们刚刚解压文件的路径。%这一步有问题就百度cd完以后,python setup.py install然后就会出现安装进度条,结束。确定有没有安装成功,进入任意一个prompt输入import jieba,看看有没有提示报错。如果没有,就是安装成功了。"))),
    ])
    print(cv.get_feature_names())
    print(res.toarray())
"""
[‘39‘, ‘alphabet‘, ‘cd‘, ‘cmd‘, ‘first‘, ‘import‘, ‘install‘, ‘is‘, ‘jieba‘, ‘life‘, ‘like‘, ‘long‘, ‘of‘, ‘prompt‘, ‘py‘, ‘python‘, ‘setup‘, ‘short‘, ‘the‘, ‘too‘, ‘zip‘, ‘一个‘, ‘一步‘, ‘下载‘, ‘以后‘, ‘任意‘, ‘出现‘, ‘刚刚‘, ‘命令‘, ‘如果‘, ‘安装‘, ‘就是‘, ‘成功‘, ‘我们‘, ‘报错‘, ‘提示‘, ‘文件‘, ‘有没有‘, ‘没有‘, ‘然后‘, ‘界面‘, ‘百度‘, ‘看看‘, ‘确定‘, ‘结束‘, ‘解压‘, ‘记住‘, ‘路径‘, ‘输入‘, ‘进入‘, ‘进度条‘, ‘问题‘, ‘首先‘]
[[0 0 0 0 0 0 0 2 0 2 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [1 0 2 1 0 1 1 0 2 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 3 1 2 1 1 1
  1 2 1 2 1 1 1 1 1 2 1 2 2 2 1 1 1]]
统计每个词在文章中出现的次数
"""
# 文本特征抽取:Count    文本分类(词的不同) 情感分析
# 单个字母,汉字,符号不统计  英文他们没有具体的代表性,因此 汉字 需要分词 pip install jieba
# import jieba jieba.cut("xxxxxx") 返回值是词语生成器 list(ret)转换为list   " ".join(list)转为空格隔开的字符串

# 对于一些常用的词语 ‘我们‘ 等 不能很好地区分 ----------->tf idf (朴素贝叶斯也要使用)
# tf:term frequency 词的频率   出现的次数
# idf:逆文档的频率inverse document frequecy log(总文档数量/该词出现的文档数量)
# tf*idf ---->重要性 得出改次在该文档中的重要性
# 每篇文档每个词都有重要性,不同文章的同一个词重要性不同
# 如果一个文章中的 一个词在文章中重要性高,没其文章中低------>改词可用于区分分类
# 语法
# TfidfVectorizer(stop_words=None,.....)
#   返回权重矩阵
#   TfidfVectorizer.fit_transform(X) 可迭代对象,返回sparse矩阵
#   TfidfVectorizer.inverse_transform(X) 反向
#   TfidfVectorizer.get_feature_names() 单词列表
from sklearn.feature_extraction.text import TfidfVectorizer
def tfidfvec():
    tfidf = TfidfVectorizer()
    data = tfidf.fit_transform([
        "life is short,I like python,life is too long",# 每个看做短文章
        "a is the first of alphabet",
        " ".join(list(jieba.cut("下载jieba-0.39.zip然后解压。记住路径。cmd进入命令输入界面,首先cd到我们刚刚解压文件的路径。%这一步有问题就百度cd完以后,python setup.py install然后就会出现安装进度条,结束。确定有没有安装成功,进入任意一个prompt输入import jieba,看看有没有提示报错。如果没有,就是安装成功了。"))),
    ])
    print(tfidf.get_feature_names())
    print(data.toarray())
"""
[‘39‘, ‘alphabet‘, ‘cd‘, ‘cmd‘, ‘first‘, ‘import‘, ‘install‘, ‘is‘, ‘jieba‘, ‘life‘, ‘like‘, ‘long‘, ‘of‘, ‘prompt‘, ‘py‘, ‘python‘, ‘setup‘, ‘short‘, ‘the‘, ‘too‘, ‘zip‘, ‘一个‘, ‘一步‘, ‘下载‘, ‘以后‘, ‘任意‘, ‘出现‘, ‘刚刚‘, ‘命令‘, ‘如果‘, ‘安装‘, ‘就是‘, ‘成功‘, ‘我们‘, ‘报错‘, ‘提示‘, ‘文件‘, ‘有没有‘, ‘没有‘, ‘然后‘, ‘界面‘, ‘百度‘, ‘看看‘, ‘确定‘, ‘结束‘, ‘解压‘, ‘记住‘, ‘路径‘, ‘输入‘, ‘进入‘, ‘进度条‘, ‘问题‘, ‘首先‘]
# 返回权重矩阵,显示每个文章的特征值,是否存在,若存在显示为重要性,不存在为0
[[0.         0.         0.         0.         0.         0.
  0.         0.46088245 0.         0.60600504 0.30300252 0.30300252
  0.         0.         0.         0.23044123 0.         0.30300252
  0.         0.30300252 0.         0.         0.         0.
  0.         0.         0.         0.         0.         0.
  0.         0.         0.         0.         0.         0.
  0.         0.         0.         0.         0.         0.
  0.         0.         0.         0.         0.         0.
  0.         0.         0.         0.         0.        ]
 [0.         0.46735098 0.         0.         0.46735098 0.
  0.         0.35543247 0.         0.         0.         0.
  0.46735098 0.         0.         0.         0.         0.
  0.46735098 0.         0.         0.         0.         0.
  0.         0.         0.         0.         0.         0.
  0.         0.         0.         0.         0.         0.
  0.         0.         0.         0.         0.         0.
  0.         0.         0.         0.         0.         0.
  0.         0.         0.         0.         0.        ]
 [0.11353496 0.         0.22706991 0.11353496 0.         0.11353496
  0.11353496 0.         0.22706991 0.         0.         0.
  0.         0.11353496 0.11353496 0.08634626 0.11353496 0.
  0.         0.         0.11353496 0.11353496 0.11353496 0.11353496
  0.11353496 0.11353496 0.11353496 0.11353496 0.11353496 0.11353496
  0.34060487 0.11353496 0.22706991 0.11353496 0.11353496 0.11353496
  0.11353496 0.22706991 0.11353496 0.22706991 0.11353496 0.11353496
  0.11353496 0.11353496 0.11353496 0.22706991 0.11353496 0.22706991
  0.22706991 0.22706991 0.11353496 0.11353496 0.11353496]]
"""
# =============================================================================================
if __name__=="__main__":
#   dictvec()
#     countvec()
    tfidfvec()
    pass

原文地址:https://www.cnblogs.com/Dean0731/p/11595105.html

时间: 2024-11-11 02:45:29

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

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

02 特征工程和文本特征提取 数据集的构成 数据存放形式 CSV 文件 mysql: 性能瓶颈,读取速度: 格式不符合机器学习的格式 pandas:读取工具 numpy为什么读取速度快: 动态语言 全局解释性锁 GIL : 释放了 (GIL数据安全),真正的多线程 可用的数据集 Kaggle : 大数据竞赛平台.真实数据.数据量大 UCI: 数据集覆盖科学.生活.经济等领域 Scikit-learn: 数据量小,方便学习 数据集的结构组成 结构: 特征值 + 目标值 特征工程的定义 特征工程是什

(七)机器学习里的特征工程

不管是工业界还是学术界,机器学习都是一个炙手可热的方向,但是学术界和工业界对机器学习的研究各有侧重,学术界侧重于对机器学习理论的研究,工业界侧重于如何用机器学习来解决实际问题.我们结合美团在机器学习上的实践,进行一个实战系列的介绍,介绍机器学习在解决工业界问题的实战中所需的基本技术.经验和技巧.本文主要结合实际问题,概要地介绍机器学习解决实际问题的整个流程,包括对问题建模.准备训练数据.抽取特征.训练模型和优化模型等关键环节:另外几篇则会对这些关键环节进行更深入地介绍. 下文分为: 1)机器学习

机器学习_深度学习_入门经典(永久免费报名学习)

机器学习_深度学习_入门经典(博主永久免费教学视频系列) https://study.163.com/course/courseMain.htm?courseId=1006390023&share=2&shareId=400000000398149 作者座右铭---- 与其被人工智能代替,不如主动设计机器为我们服务. 长期以来机器学习很多教材描述晦涩难懂,大量专业术语和数学公式让学生望而止步.生活中机器学习就在我们身边,谷歌,百度,Facebook,今日头条都运用大量机器学习算法,实现智能

中间件_百科介绍

中间件 编辑 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源.中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯.是连接两个独立应用程序或独立系统的软件.相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息.执行中间件的一个关键途径是信息传递.通过中间件,应用程序可以工作于多平台或 OS 环境. 目录 1基本概念 2相关概念 3基本特点 ? 特长? 局限 4发展沿革 ? CICS? 服务器? 发展现状 5分类 ? 远程过

人工智能_4_k近邻_贝叶斯_模型评估

机器学习常用算法 k近邻算法 求出未知点 与周围最近的 k个点的距离 查看这k个点中大多数是哪一类 根号((x已知-x未知)^2+(y已知-y未知)^2) 即平面间2点距离公式 收异常点影响较大,因此需要做标准化处理 API:sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm="auto") algorithm:{"auto","ball_tree","kd_tr

机器学习-特征工程-Feature generation 和 Feature selection

概述:上节咱们说了特征工程是机器学习的一个核心内容.然后咱们已经学习了特征工程中的基础内容,分别是missing value handling和categorical data encoding的一些方法技巧.但是光会前面的一些内容,还不足以应付实际的工作中的很多情况,例如如果咱们的原始数据的features太多,咱们应该选择那些features作为咱们训练的features?或者咱们的features太少了,咱们能不能利用现有的features再创造出一些新的与咱们的target有更加紧密联系

最通俗的机器学习介绍

最通俗的机器学习介绍 https://zhuanlan.zhihu.com/p/43612979 摘要:在本文中,我将描述数据分析是如何与机器学习相关的,还将揭开机器学习中的一些荒唐和错误的说法,并解释机器学习的过程和类型. 如果你不是一个人工智能专家,不要担心,我不会提及线性回归和k-均值聚类. 数据分析和机器学习 如果你认为大数据仅仅是关于SQL语句查询和海量的数据的话,那么别人也会理解你的,但是大数据真正的目的是通过对数据的推断,从数据中获取价值.从数据中发现有用的东西.例如,"如果我降低

机器学习 特征工程之特征选择

概念 首先看一下维基百科中关于特征选择的介绍: 在机器学习和统计学中,特征选择 也被称为变量选择.属性选择 或变量子集选择 .它是指:为了构建模型而选择相关特征(即属性.指标)子集的过程. 在机器学习中,每个特征对于目标类别的影响并不相同,所以需要从特征集中挑选出一组最具统计意义的特征子集,把其他无用数据删掉,达到降维的目的. 特征选择的目标是寻找最优特征子集.特征选择能剔除不相关(irrelevant)或冗余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目

机器学习:特征工程

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