一、人工智能概述1.人工智能主要分支1.1计算机视觉人脸识别1.2自然语言处理语音识别语义识别1.3机器人2.人工智能必备三要素2.1数据2.2算法2.3计算力二、机器学习概述1.什么是机器学习机器学习是从数据中自动分析获得模型并利用模型对未知数据进行预测2.机器学习工作流程获取数据---数据基本处理--特征工程--机器学习模型训练--模型评估3.数据集3.1数据集专有名词样本特征目标值标签值特征值3.2在数据集中一般一行数据为一个样本一列数据为一个特征有些数据有目标值标签值有些数据没有目标值3.3数据类型构成数据类型一特征值目标值目标值是连续和离散的数据类型二只有特征值没有目标值3.4数据分割机器学习一般的数据集会划分为两个部分训练数据用于训练构建模型测试数据在模型检验时使用用于评估模型是否有效划分比例训练集70% 80% 75%测试集30% 20% 25%3.5数据基本处理对数进行缺失值、去除异常值等处理4.特征工程数据和特征决定了机器学习的上限而模型和算法只是逼近这个上限4.1特征提取4.2特征预处理通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程4.3特征降维指在某些限定条件下降低随机变量特征个数得到一组不相关主变量的过程5.模型评估三、机器学习算法分类1.监督学习输入数据是由输入特征值和目标值组成函数的输出可以是一个连续的值称为回归或是输出是有限个离散值称为分类2.无监督学习输入数据是由输入特征值组成输入数据没有被标记也没有确定的结果。样本数据类别未知需要根据样本间的相似性对样本集进行分类试图使类内差距最小化类间差距最大化3.监督学习和无监督学习的对比4.半监督学习训练集同时包含有标记样本数据和未标记样本数据5.强化学习动态过程上一步数据的输出是下一步数据的输入目的长期利益最大化、回报函数只会提示你是否在朝着目标方向前进的延迟反映四要素agent、action、environment、reward四、模型评估1.分类模型评估准确率预测正确的数占样本总数的比例精确率正确预测为正占全部预测为正的比例召回率正确预测为正占全部正样本的比例F1-score主要用于评估模型的稳健性AUC指标主要用于评估样本不均衡的情况2.回归模型评估2.1均方根误差RMSERMSE是一个衡量回归模型误差率的常用公式但它只能比较误差是相同单位的模型a真实值 p预测值2.2相对平方误差RSE与RMSE不同RSE可以比较误差是不同单位的模型2.3平均绝对误差MAEMAE与原始数据单位相同它只能比较误差是相同单位的模型。量级近似于RMSE但是误差值相对小一些2.4相对绝对误差RAE与RSE不同RAE可以比较误差是不同单位的模型2.5决定系数决定系数R²回归模型汇总了回归模型的解释度由平方和术语计算而得R²描述了回归模型所解释的因变量方差在总方差中的比例。R²很大即自变量和因变量之间存在线性关系。如果回归模型是完美的SSE为零则R²为1。R²很小则自变量和因变量之间存在线性关系的证据不令人信服。如果回归模型完全失败则SSE等于SST没有防擦很可悲回归解释则R²为零3.拟合模型评估用于评价训练好的模型的表现效果其表现效果大致可以分为两类过拟合、欠拟合3.1欠拟合学习的特征太少了导致分类不明确3.2过拟合所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越导致在验证数据集以及测试数据集中表现不佳五、深度学习简介1.深度学习——神经网络简介增加层数通过更抽象的概念识别物体、器官层、分子层、原子层增加节点数增加同一层物质的种类六、机器学习基础环境安装与使用1.库的安装打开终端命令 conda create -n ai python版本号 conda init 重启终端命令 conda activate ai conda env export 目的路径\environment.yml2.Jupyter Notebook使用day_01篇使用的编辑平台即为Jupyter打开终端命令 conda activate ai cd /d D:\major\myjupyter\MachineLearning //切换到项目文件地址 jupyter botebook新建Python 3文件 输入print(Hello World) ctrlEnter运行代码输出3.jupyter快捷键七、Matplotlib1.构图2.三层结构2.1容器层canvasfigureaxes2.2辅助显示层添加x轴、y轴描述2.3图像层绘制什么图像的声明3.折线图plot和基础绘图功能3.1设置画布属性与图片保存figsize:指定图的长度dpi图像的清晰度plt.savefig(路径)保存图片到指定路径注意plt.show()会释放figure资源 如果在显示图像之后保存图片将只能保存空图片3.2完善原始折线图1.案例显示温度变化状况需求画出某城市11点到12点1小时内每分钟的温度变化折线图 温度范围在15-18度效果2.准备数据并画出初始折线图3.3添加自定义x,y刻度plt.xticks(x,**kwargs) x要显示的刻度值plt.yticks(y,**kwargs) y要显示的刻度值注意第一个参数必须是数字 如果不是数字 需要进行值替换3.4添加网格显示plt.grid(True,linestyle-,alpha0.5)True添加 linestyle绘制网格的方式虚线或实线 alpha透明度3.5添加xy轴描述3.6完善原始折线图需求再添加一个城市的温度变化#画出温度变化图 #0.准备x,y坐标的数据 x range(60) y_shanghai [random.uniform(15,18) for i in x] y_beijing [random.uniform(15,25) for i in x] #1.创建画布 plt.figure(figsize(20,8),dpi80) #2.绘制折线图 plt.plot(x,y_shanghai,label上海) plt.plot(x,y_beijing,label北京) #2.1添加x,y轴刻度 x_ticks_labels [11点{}分.format(i) for i in x] plt.xticks(x[::5],x_ticks_labels[::5]) #必须最开始传进去的是数字x_ticks_labels是字符串 y_ticks range(40) plt.yticks(y_ticks[::5]) #2.2添加网格线 plt.grid(True,linestyle-,alpha0.5) #2.3添加描述需要声明plot里面的具体值 plt.xlabel(时间,fontsize20) plt.ylabel(温度,fontsize20) plt.title(一小时温度变化图,fontsize20) #2.4显示图例 plt.legend() #3.显示图像 plt.show()3.7多个坐标系显示-plt.subplots面向对象的画图方法#画出温度变化图 #0.准备x,y坐标的数据 x range(60) y_shanghai [random.uniform(15,18) for i in x] y_beijing [random.uniform(15,25) for i in x] #1.创建画布 fig, axes plt.subplots(nrows1,ncols2,figsize(20,8),dpi100) #2.绘制折线图 axes[0].plot(x,y_shanghai,label上海) axes[1].plot(x,y_beijing,label北京) #2.1添加x,y轴刻度 y_yicks range(40) x_ticks_labels [11点{}分.format(i) for i in x] axes[0].set_xticks(x[::5]) axes[0].set_yticks(y_ticks[::5]) axes[0].set_xticklabels(x_ticks_labels[::5]) axes[1].set_xticks(x[::5]) axes[1].set_yticks(y_ticks[::5]) axes[1].set_xticklabels(x_ticks_labels[::5]) #2.2添加网格线 axes[0].grid(True,linestyle--,alpha0.7) axes[1].grid(True,linestyle--,alpha0.7) #2.3添加描述 axes[0].set_xlabel(时间) axes[0].set_ylabel(温度) axes[0].set_title(上海一小时温度变化图,fontsize20) axes[1].set_xlabel(时间) axes[1].set_ylabel(温度) axes[1].set_title(北京一小时温度变化图,fontsize20) #2.4显示图例 axes[0].legend() axes[1].legend() #3.显示图像 plt.show()3.8折线图的应用场景呈现公司产品不同区域每天活跃用户数呈现app每天下载数量呈现产品新功能上线后用户点击次数随时间的变化拓展画各种函数图像3.9常见图形绘制3.9.1折线图折线图以折线的上升或下降来表示统计数量的增减变化的统计图特点能够显示数据的变化趋势反映事物的变化情况apiplt.plot(x,y)3.9.2散点图散点图用两组数据构成多个坐标点考察坐标点的分布判断两变量之间是否存在某种关联或总结做坐标点的分布模式特点判断变量之间是否存在数量关联趋势展示离群点分布规律apiplt.scatter(x,y)#0.数据准备 x [255.98, 247.07, 253.17, 457.68, 241.53, 301.22, 20.67, 288.45, 163.25, 120.07, 207.48, 342.15, 147.64, 53.06, 224.53, 29.17, 21.49, 483.51, 245.4, 399.62, 343.18] y [196.55, 203.15, 210.56, 372.49, 202.15, 247.16, 24.97, 239.34, 140.26, 104.13, 176.53, 288.64, 128.97, 49.68, 191.78, 33.1, 30.74, 400.02, 205.03, 330.30, 283.94] #1.创建画布 plt.figure(figsize(20,8),dpi100) #2.图像绘制 plt.scatter(x,y) #3.图像显示 plt.show()3.9.3柱状图柱状图排列在工作表的列或行中的数据可以绘制到柱状图中特带你回执联离散的数据能够一眼看出各个数据的大小比较数据之间的差别apiplt.bar(x,width,aligncenter,**kwargs)x具体的值 width柱状图的宽度 aligen每个柱状图的位置对齐方式#0.准备数据 movie_name [雷神3,正义联盟,东方快车谋杀案,寻梦环游记,全球风暴,降魔传,追捕,七十七天,密战,狂兽,其它] x range(len(movie_name)) y [73853,57767,22345,15969,14873,8725,8716,8318,7916,6764,52222] #1.创建画布 plt.figure(figsize(20,8), dpi100) #2.绘制 plt.bar(x, y, color[b,r,g,y,c,m,y,k,c,g,b],width0.5) #2.1 x轴 plt.xticks(x,movie_name,fontsize15) #2.2网格 plt.grid() #2.3标题 plt.title(某月电影票房统计) #3.显示 plt.show()3.9.4直方图直方图有一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表述数据纵轴表示分布情况特点绘制连续性的数据詹氏一族或者多组数据的分布状况apimatplotlib.pyplot.hist(x, binsNone)x具体的值 bins组距3.9.5饼图饼图用于表示不同分类的占比情况 通过弧度大小来对比各种分类特点分类数据的占比情况apiplt.pie(x, labels,autopct,colors)x数量 labels每部分的名称 autopct占比显示指定%1.2f%% colors每部分颜色