机器学习-基本概念
一.机器学习
人工智能之父——图灵引入了“图灵测试”:如果一台机器与人对话,人不能分辨这是机器还是人,这台机器就通过了图灵测试。
人工智能、机器学习、深度学习的关系如下图:
随着时代的发展,人工智能遇到了瓶颈,第一个瓶颈是算力瓶颈,第二个瓶颈是数据瓶颈(没有足够的数据),第三个瓶颈是算法瓶颈(算法效率不高)。
做人工智能的库和框架如下图所示:
1.什么是机器学习
机器学习是从数据中自动获得规律(模型),并利用规律对未知数据进行预测。
2.为什么需要机器学习
①解放生产力——智能客服,24小时持续工作
②解决专业问题——机器看CT片,分析病情
③提供社会便利——智能城市、城市大脑
3.机器学习对各领域带来的便利
让程序替代人手工的操作,提高企业效率减少企业成本
二.数据集
1.格式
机器学习的数据为csv格式
2.可用的数据集
①scikit-learn自带的数据集,特点:数据量小,适合学习
②kaggle中的数据集,特点:真实,数据量大,
③UCI数据集,特点:收录360个数据集,包括科学、生活、经济领域,数据量几十万
3.数据集构成
特征值+目标值
三.特征工程
定义:特征工程是将原始数据转化为更好的代表预测模型潜在问题特征的过程,从而提高对未知数据的预测准确性。
四.sklearn库的简单使用
1.使用sklearn对字典数据处理
#导入库
from sklearn.feature_extraction import DictVectorizer
#实例化
Vocter=DictVectorizer(sparse=False)
#调用fit_transformer输入并转换数据
res=Vocter.fit_transform([{"city":"北京","temperature":100},{"city":"上海","temperature":60},{"city":"深圳","temperature":80}])
print(Vocter.get_feature_names())
print(res)
最终城市名称转化为了one-hot编码。
2.使用sklearn处理文字数据
#导入库
from sklearn.feature_extraction.text import CountVectorizer
#实例化
Vocter=CountVectorizer()
#调用fit_transformer输入并转换数据
res=Vocter.fit_transform(["life is short,i like python","life is too long,i dislike python"])
print(Vocter.get_feature_names())
print(res.toarray())
二维列表中的[0 1 1 1 0 1 1 0]中的第一个“0”代表“dislike”在第一句话中出现了0次,第二位数“1”代表“is”出现在第一句话中1次,第三位数“1”在第一句话出现了1次,依次类推。
3.使用jieba处理中文
#导入库
import jieba
from sklearn.feature_extraction.text import CountVectorizer
#jieba分词
c1=jieba.cut("ABAQUS 是一套功能强大的工程模拟的有限元软件,其解决问题的范围从相对简单的线性分析到许多复杂的非线性问题。 ABAQUS 包括一个丰富的、可模拟任意几何形状的单元库。并拥有各种类型的材料模型库,可以模拟典型工程材料的性能。")
c2=jieba.cut("其中包括金属、橡胶、高分子材料、复合材料、钢筋混凝土、可压缩超弹性泡沫材料以及土壤和岩石等地质材料,作为通用的模拟工具。")
c3=jieba.cut("ABAQUS 被广泛地认为是功能最强的有限元软件,可以分析复杂的固体力学结构力学系统,特别是能够驾驭非常庞大复杂的问题和模拟高度非线性问题。")
#转成列表
list1=list(c1)
list2=list(c2)
list3=list(c3)
#列表转化为字符串
cont1=" ".join(list1)
cont2=" ".join(list2)
cont3=" ".join(list3)
print(cont1,cont2,cont3)
#实例化
Vocter=CountVectorizer()
#调用fit_transformer输入并转换数据
res=Vocter.fit_transform([cont1,cont2,cont3])
print(Vocter.get_feature_names())
print(res.toarray())
4.使用tf-idf处理文本
其中tf:term frenquency (词的频率),一篇文档中本次出现的次数
idf:inverse document frenquency(逆文档频率),log(总文档数量/出现该词的文档数量)
接上一节:
有:
#导入库
from sklearn.feature_extraction.text import TfidfVectorizer
import jieba
#实例化
Vocter=TfidfVectorizer()
#调用fit_transformer输入并转换数据
res=Vocter.fit_transform([cont1,cont2,cont3])
print(Vocter.get_feature_names())
print(res.toarray())
这些数字代表了该词的重要性程度。
五.特征预处理(归一化和标准化)
特征处理的含义:通过特定的统计方式(数学方法)将数据处理成算法需要的形式。
sklearn中特征处理API在sklearn.processing中
1.归一化
通过对原始数据处理将数据映射到0-1(默认)之间
如果几个特征是这样的,那么模型在计算的时候会对特征1赋予更加大的权重,特征4赋予大的权重,但是可能特征2对最终的结果可能有更大的影响,但是在模型中对最终的结果影响最小,所以这样的模型是不合格的,需要对模型进行归一化和标准化。对梯度下降也有好处。归一化后为这样。
缺点:归一化对异常值特别敏感,如果大多数数据分布在50-100之间,最大为100,最小为50,但是有一个异常值为1,那么加入异常值后最小值为1,对最终的计算结果有巨大的影响,模型会偏重与处理异常值。对预测结果不友好。
2.标准化
适合现代嘈杂的大样本数据。