目录
- 一、人工智能概述
- 1、概念
- 2、应用领域
- 二、机器学习
- 1、概念
- 2、数据集的构成
- 3、算法分类
- a、监督学习
- b、无监督学习
- 4、开发流程
- 5、可用数据集总结
- 三、Scikit-learn
- 1、介绍
- 2、安装
- 3、数据集API介绍
- 4、数据集返回值介绍
- 5、数据集的划分
- 6、数据集划分的API介绍
- 7、案例
- a、获取鸢尾花数据集
- b、对数据集进行划分
一、人工智能概述
1、概念
- 人工智能分为两个流派,联结主义和符号主义
- 联结主义:让机器模仿人的神经网络,从而产生智能的效果
- 符号主义:让机器还原人的思考过程,从而实现智能的效果
- 机器学习是人工智能的一个实现途径
- 深度学习是机器学习的一个方法发展而来
2、应用领域
- 挖掘预测:广告推荐、企业客户分类
- 图像识别:接到交通标志检测、人脸识别
- 自然语言处理:文本分类、情感分析、自动聊天
二、机器学习
1、概念
机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测
- 比如:从大量猫狗照片中自动分析获得辨别猫狗规律的模型,使得机器拥有了辨别猫狗的能力
- 比如:从房屋的数据中自动分析获得判断房屋价格规律的模型,从而使得机器拥有预测房屋价格的能力
那么需要思考下,我们是从哪里获得规律呢?
一般情况下我们都是从历史数据获得某个事情的规律,那么这些历史数据集是怎么个格式呢?
2、数据集的构成
- 结构:特征值 + 目标值
- 例子:
数据 | 房子面积 | 房子位置 | 房子朝向 | 目标值 |
---|---|---|---|---|
数据一 | 80 | 9 | 0 | 80 |
数据二 | 100 | 9 | 5 | 120 |
数据三 | 80 | 10 | 3 | 100 |
则对于上面的例子,房子面积、房子位置、房子朝向就是房子的特征值,目标值就是房子的目标值
每一行的数据称为样本
目标值可以为空,此时,我们会将特征值类似的各个样本聚类成一起
3、算法分类
a、监督学习
输入数据是由输入特征值和目标值所组成,函数的输出可以是一个连续的值(称为回归),或是输出有限个离散值(称为分类)
- 分类问题:比如特征值为猫和狗的照片,目标值为猫狗类别,将不同的图片进行分类。比如k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归
- 回归问题:比如特征值是房屋的各个属性信息,目标值为房屋的价格这种连续性的数据。比如线性回归、岭回归
b、无监督学习
输入数据是由输入特征值所组成
- 无监督学习:比如特征值是人物的各个属性特征信息,目标值为空。比如k-means
4、开发流程
- 获取数据
- 数据处理:进行数据过滤
- 特征工程:将数据处理成能被算法使用的数据
- 机器学习:使用机器学习算法进行训练,得出一个模型
- 模型评估:如果评估模型有问题,则从第二步开始检查问题
- 应用:将模型部署使用
5、可用数据集总结
- sklearn:数据量较小、方便学习【网站地址】
- kaggle:大数据竞赛平台、都是真实数据、数据量巨大【网站地址】
- UCI:覆盖科学、生活、经济等领域、数据量达几十万【网站地址】
三、Scikit-learn
1、介绍
- Scikit-learn是python语言的机器学习工具,包括许多知名的机器学习算法的实现,文档完善,容易上手,有丰富的API
- 包含分类、聚类、回归、特征工程、 模型选择、调优
2、安装
安装Scikit-learn需要先安装Numpy,Scipy等库
分别按顺序执行下面命令
pip install Numpy
pip install Scipy
pip install scikit-learn
具体不懂安装过程的可以看 此篇文章 6.安装第三方python包
3、数据集API介绍
sklearn.datasets:加载获取流行数据集都是以此为前缀,后面可接下面两种情况
- datasets.load_*()
- 获取小规模的数据集,数据包含在datasets里面
- 比如:sklearn.datasets.load_iris()就是加载并返回鸢尾花数据集
- 比如:sklearn.datasets.load_boston()就是加载并返回波士顿房价数据集
- datasets.fetch_*(data_home=None , subset=‘all’)
- 获取大规模的数据集,需要从网络上下载
- 参数data_home,表示网络上的数据集下载的目录,默认是~/scikit_learn_data/
- 参数subset,表示选择要加载的数据集,可以选择’train’、‘test’或者’all’
- 比如:sklearn.dataset.fetch_20newsgroups(data_home=None,subset=‘train’) 就是加载20个新闻组数据集
4、数据集返回值介绍
datasets.base.Bunch(继承自字典格式):字典格式的key和value值介绍如下
- data:特征数据数组,是[n_samples * n_features]的二维numpy.ndarray数组
- target:标签数组,是n_samples的一维numpy.ndarray数组
- DESCR:数据描述
- feature_names:特征名,新闻数据、手写数字、回归数据集没有
- target_name:标签名
5、数据集的划分
机器学习一般的数据集分为两个部分
- 训练数据:用于训练,构建模型
- 测试数据:在模型检验时使用,用于评估模型是否有效
划分比例:一般控制在20% ~ 30%
6、数据集划分的API介绍
sklearn.model_selection.train_test_split(arrays,*options)
- x 数据集的特征值
- y 数据集的标签值
- test_size测试集的大小,一般数据类型为float
- random_state随机数种子,不同的种子会造成不同的随机采样结果,相同的种子采样结果相同
- return 训练集特征值,测试集特征值,训练集目标值,测试机目标值
7、案例
a、获取鸢尾花数据集
from sklearn.datasets import load_iris
def demo():# 获取鸢尾花数据集iris = load_iris()print(iris.data) #有两种获取数据的方式,可以直接 对象.keyprint(iris["DESCR"]) #也可以 对象[key]if __name__ == '__main__':demo()
结果为:
b、对数据集进行划分
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
def demo():# 获取鸢尾花数据集iris = load_iris()#数据集划分x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.2,random_state=22)print("训练集的特征值:\n",x_train)if __name__ == '__main__':demo()
结果为: