一.什么是机器学习及其目的
机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测。
目的:让机器学习程序替换手动的步骤,减少企业的成本也提高企业的效率。
二.数据集的构成
1.历史数据的格式
机器学习的数据:文件csv。
不存在Mysql:因为存在性能瓶颈(数据大的时候,读取速度受限),格式不太符合机器学习要求的数据格式。
Pandas(读取工具):处理计算速度非常快,numpy释放了GIL,真正的多线程。
2.数据集的结构
(1)可用的数据集
kaggle特点:大数据竞赛平台,80万科学家,真实数据,数据巨大。
UCI特点:收录了360个数据集,覆盖了科学、生活、经济等领域,数据量几十万。
scikit-learn:数据量小,方便学习。
(2)常用数据集数据的结构组成
结构:特征值+目标值
(3)数据中对于特征值的处理
pandas:一个数据读取非常方便以及基本的处理格式的工具。机器学习中不需要进行去重复值。
sklearn:对于特征处理提供了强大的接口。
三.特征工程
数据预处理——>特征工程——>机器学习——>模型评估
1.特征工程
特征工程:将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的预测准确性。
特征工程的意义:直接影响预测结果。
sklearn库:scikit-learn import sklearn 导入 skearn 包
2.特征抽取
(1)特征抽取
特征抽取对文本等数据进行特征值化。
sklearn特征抽取API:sklearn.feature_extraction。
字典特征抽取作用:对字典数据进行特征值化。
类:sklearn.feature_extraction.DictVectorizer
DictVectorizer 语法:
DictVectorizer(sparse = True,…)
DictVectorizer.fit_transform(x):x是字典或者包含字典的迭代器,返回sparse矩阵。
DictVectorizer.inverse_transform(x):x是array数组或者sparse矩阵,返回值为转换之前数据格式。
DictVectorizer.get_feature_names():返回类别名称。
DictVectorizer.transform(x):按照原先的标准转换。
from sklearn.feature_extraction import DictVectorizer
def dictver():
"""
字典数据抽取
return: None
"""
# 实例化
dict = DictVectorizer(sparse=False)
# 调用fit_transform方法
data = dict.fit_transform([{
'city': '北京', 'temperature': 70},
{
'city': '上海', 'temperature': 80},
{
'city': '成都', 'temperature': 60}])
# 特征值化后的数据
print(data)
# 转换为之前的数据格式
print(dict.inverse_transform(data))
# 获得类别名称
print(dict.get_feature_names())
return None
if __name__ == "__main__":
dictver()
运行结果如下图所示:
为每一个类别生成布尔列,这些列中只有一列可以为每个样本取值。
one-hot编码的布尔矩阵
Sample | Human | Penguin | Qctopus | Alien |
---|---|---|---|---|
1 | 1 | 0 | 0 | 0 |
2 | 1 | 0 | 0 | 0 |
3 | 0 | 1 | 0 | 0 |
4 | 0 | 0 | 1 | 0 |
5 | 0 | 0 | 0 | 1 |
6 | 0 | 0 | 1 | 0 |
7 | 0 | 0 | 0 | 1 |
(2)文本特征抽取
作用:对文本数据进行特征值化
类:sklearn.feature_extraction.text.CountVectorizer
CountVectorizer 语法:
CountVectorizer():返回词频矩阵
CountVectorizer.fit_transform(x):x是文本或者包含文本字符串的迭代器,返回sparse矩阵。
CountVectorizer.inverse_transform(x):x是array数组或者sparse矩阵,返回值为转换之前数据格式。
CountVectorizer.get_feature_names():返回单词列表。