机器学习概述:
1.1人工智能概述
达特茅斯会议—人工智能的起点
机器学习是人工智能的一个实现途径
深度学习是机器学习的一个方法发展而来
1.1.2 机器学习和深度学习能做什么
传统预测 图像识别 自然语言处理
1.2什么是机器学习
数据
模型
预测
从历史数据当中或得规律?这些历史数据是怎么的格式?
1.2.2 数据集构成
特征值+目标值
1.3机器学习的算法分类
监督学习
目标值:类别-分类问题
k-近邻算法,贝叶斯算法,决策树与随机森林,逻辑回归
目标值:连续型的数据-回归问题
线性回归,岭回归
目标值:无-无监督学习
聚类 K-means
1.预测明天的气温多少度? 回归
2.预测明天是阴天,晴天? 分类
3.人脸年龄识别? 回归/分类
1.4机器学习开发流程
1)获取数据
2)数据处理
3)特征工程
4)机器学习算法训练-模型
5)模型评估
6)应用
1.5学习框架和资料介绍
1)算法是核心,数据与计算是基础
2)找准定位
3)怎么做?
1,入门
2,实战类书籍
3,机器学习——“西瓜书”,周志华
统计学习方法——李航
深度学习——“花书”
- 机器学习库和框架
特征工程:
2.1数据集
2.1.1 可用数据集
公司内部 百度
数据接口 花钱
数据集
学习阶段可以用的数据集:
1)sklearn 2)kaggle 3)UCI
1.Scikit-learn工具介绍
2.1.2 sklearn数据集
sklearn.datasets
load-* 获取小规模的数据集
fetch-* 获取大规模的数据集
获取大规模数据集,需要网络上下载,函数的第一个参数是data-home,表示数据集下载的目录,默认是~/scikit-learn-data/
2 sklearn 小数据集
sklearn.datasets.load-iris()
加载并返回鸢尾花数据集
sklearn.datasets.load-boston()
加载并返回波士顿放假数据集
3 sklearn 大数据集
sklearn.datasets.fetch-20newsgroups(data-home=None,subset='train'
subset:'train'或者'test','all',可选,选择要加载的数据集
训练集的‘训练’,测试集的‘测试’,两者的‘全部’
4 数据集的返回值
datasets.base.Bunch(继承自字典)
dict["key"] = values
bunch.key = values
2.1.3 数据集的划分
训练数据:用于训练,构建模型
测试数据:在模型检验时使用,用于评估模型是否有效
测试集:20%--30%
训练集特征值,测试集特征值,训练集目标值,测试集目标值
x_train, x_test, y_train, y_test
2.2 特征工程介绍
算法, 特征工程
2.2.1 为什么需要特征工程
2.2.2 什么是特征工程
sklearn 特征工程
pandas :数据清晰,数据处理
2.3 特征提取
2.3.1.将任意数据(如文本或图像)转换为可用于机器学习的数字特征
注意:特征值化是为了计算机更好的去理解数据
字典特征提取(特征离散化)
文本特征提取
2.特征提取API
sklearn.feature_extraction
2.3.2 字典特征提取
字典特征提取——类别——数学公式
父类:转换器类
返回sparse矩阵
spares 稀疏:将非零值 按位置表示出来,可以节省内存,提高加载效率
应用场景:1)pclass ,sex 数据集当中类别特征比较多时
2)本身拿到的数据就是字典类型
2.3.3文本特征提取
注意:有新版本中更新的知识点
单词 作为 特征
句子,短语,单词,字母
特征:特征词
方法1:CountVectorizer :统计每个样本特征词出现的个数
stop_words 停用词
停用词表
停用词表(Stop Words List)是自然语言处理(NLP)和信息检索领域中的一个术语,指的是在文本处理过程中被排除在分析之外的词汇列表。这些词汇通常是那些在文本中非常常见,但对于文本的主题或情感分析没有太大意义的词,比如“的”、“是”、“在”等在中文中的常用词,以及英文中的“the”、“is”、“at”、“which”等。
停用词表的主要作用包括:
1. **减少数据维度**:去除停用词可以减少文本数据的维度,从而降低计算复杂度。
2. **提高分析质量**:去除停用词有助于提高文本分析的质量,因为停用词往往不会对文本的主题或情感产生显著影响。
3. **节省存储空间**:在存储文本数据时,去除停用词可以节省存储空间。
4. **避免噪音**:停用词可能会引入噪音,影响文本分析的准确性。
在不同的应用场景中,停用词表可能会有所不同,因为某些词在特定的上下文中可能具有重要意义。例如,在法律文本中,“合同”、“协议”等词可能就不是停用词。
在 `CountVectorizer` 中,可以通过 `stop_words` 参数来指定停用词表。如果不指定,`CountVectorizer` 会使用一个默认的停用词表,该表包含了一些常见的停用词。你也可以自定义停用词表,以适应特定的应用需求。例如:
```python
from sklearn.feature_extraction.text import CountVectorizer
# 定义停用词表
stop_words = set(['the', 'is', 'at', 'which', 'and', 'on', 'for'])
# 创建 CountVectorizer 实例,指定停用词表
vectorizer = CountVectorizer(stop_words=stop_words)
# 应用 fit_transform 方法
data_new = vectorizer.fit_transform(['This is the first document.', 'This document is the second document.'])
```
在这个例子中,我们定义了一个简单的停用词表,并将其传递给 `CountVectorizer` 实例。这样,在文本向量化过程中,这些停用词将被忽略。
中文文本特征提取:
需要使用jieba进行分词。
输出:
这一种并未达到理想效果.
关键词:在某一个类别的文章中,出现的次数很多,但是在其他类别的文章中出现次数很少
方法2:TfidfVectorizer :寻找关键词
Tf-idf 文本特征提取
其主要思想是:如果某个词或者短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来做分类。
TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
举例:(帮助更好理解TF-IDF)
对上面照片进行解释:
以下是文档中提到的 TfidfVectorizer
类的主要方法:
-
TfidfVectorizer.fit_transform(X):
X
: 文本数据,可以是字符串列表或者包含文本字符串的可迭代对象。- 这个方法会计算输入文本数据的 TF-IDF 权重,并将文本转换为稀疏矩阵格式。
- 返回值: 一个稀疏矩阵,其中每一行代表一个文档,每一列代表一个词汇,矩阵中的值表示该词汇在文档中的 TF-IDF 权重。
-
TfidfVectorizer.inverse_transform(X):
X
: 一个数组或者稀疏矩阵,通常是fit_transform
方法的输出。- 这个方法将 TF-IDF 权重矩阵转换回原始的文档格式。
- 返回值: 转换之前的文档数据格式。
-
TfidfVectorizer.get_feature_names():
- 这个方法返回
TfidfVectorizer
在fit_transform
过程中识别出的词汇列表。 - 返回值: 一个包含所有特征名称(即词汇)的列表。
- 这个方法返回
stop_words
参数是一个可选参数,用于指定在文本处理过程中要排除的停用词。如果设置为 None
,则使用 TfidfVectorizer
的默认停用词列表。你也可以提供一个自定义的停用词列表,以适应特定的文本分析需求。
这些方法使得 TfidfVectorizer
成为文本数据预处理和特征提取的有力工具,特别是在机器学习和自然语言处理领域。
案例演示:
TF-IDF重要性:分类机器学习算法进行文章分类中前期数据处理方式。