1.机器学习概述
1)机器学习简介
机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测;
2.数据的特征工程
机器学习的数据集主要来源于文件格式例如:csv;mysql等相关库对于机器学习具有相对的瓶颈1.读取的速度较慢;2.文件数据的格式不太符合机器学习的具体要求;
1)数据集的组成
- scikit-learn:1、数据量较小;2、方便于学习
- kaggle:1、大数据竞赛平台;2、用户水平较高;3、数据真实;4、数据量巨大
- uci:1、收录了360个数据集;2、覆盖科学、生活、经济等领域
数据的结构: 特征值 + 目标值(房子面积等称之为特征值,而对应的数值则是目标值)
3.特征工程的定义
特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性。
特征工程是很重要的一个步骤,在相同算法和数据的情况下经过较好的特征工程处理的数据得到的分析结果会更好。
1)数据中对于特征的处理
pandas:一个数据读取非常方便以及基本的处理格式的工具;
sklearn:对于特征的处理提供了强大的接口;
sklearn介绍:1、Python语言的机器学习工具2、Scikit-learn包括许多知名的机器学习算法的实现3、Scikit-learn文档完善,容易上手,丰富的API,使其在学术界颇受欢迎。目前稳定版本0.18
4、数据的特征抽取
文本等数据转化成数值型数据即特征值化;
sklearn.feature_extraction是sklearn特征抽取的api其中蕴含大量的包以供使用;其中import DictVectorizer是通过sklearn.feature_extraction调用的一个包创建一个类。
1)字典特征抽取
sklearn.featurn_extraction.DictVectorizer.fit_transform(X) ,X:字典或者包含字典的迭代器返回值,返回sparse矩阵。
参数sparse是表示是否转化成节约内存的存储类型,当设置为Ture时显示则为以下所示内容:
此类型的数据称之为sparse矩阵一般都具有toarra有()的方法。
其中get_feature_names()是帮助理解fit_transform转化的数据类型:
字典数据抽取:把字典中的一些类别的数据分别转换成特征。再使用的数据是存在的数组形式有类别的这些特征的时候我们可以先转换成字典数据。
-
one-hot编码(在机器学习当中)
意义:把类别特征转换成如下的形式利于数据的分析操作:
2)文本特征的抽取
对文本数据进行特征值化操作:在sklearn.feature_extraction.text中import CountVectorizer;
由于在CountVectorizer()当中没有sparse参数所以使用".toarray()"的方法使得sparse数据转换成数组形式;
利用get_feature_names()方法来获得数据结构的解释:1、统计文章中的所有词,但是重复的词语只统计一次,形成词语的列表;2、对每篇文章在次的列表里面寻找出现的次数。(单个字母不统计)
在这里我们还需要对中文字符进行尝试如下是所选中文字段(我们在这里需要下载jieba分词工具包“pip install jieba”):
经过分词之后呈现上图的分词结果,经过字符串操作之后如下所示:
3)TF-IDF(重要性程度计算tf*idf ,是机器学习分类算法的重要依据)
TF: term frequency(词的频率); 与count一样同样需要统计所有词列表
IDF:inverse document frequency(逆文档频率) log(总文档数量/该词出现的文档数量)
TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,
并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分
能力,适合用来分类。
- 同样来自与sklearn.feature_extraction.text中import tfidfvectorizer进行文本数据的分析: