文章目录
1.机器学习工作流程2.数据集的介绍2.1数据简介2.2数据类型构成:3.数据处理3.1数据划分3.2数据基本处理4.特征工程4.1特征提取4.2特征预处理4.3特征降维5.模型训练6.模型评估6.1分类模型评估6.2回归模型评估6.3拟合7.Jupyter Notebook使用7.1jupyter定义7.2jupyter和pycharm对比7.3如何使用7.4cell7.5快捷键7.6markdown语法8.Matplotlib8.1绘图流程8.2matplotlib三层结构8.3折线图(plot)与基础绘图功能8.4多个坐标系图像显示8.5折线图的应用场景8.6常见图形的绘制1.机器学习工作流程
1.获取数据
2.数据处理
3.特征工程
4.模型训练
5.模型评估
2.数据集的介绍
2.1数据简介
在数据集中:
一行数据我们成为一个样本一列数据我们称为一个特征有些数据有label值,有些数据没有label值
2.2数据类型构成:
数据类型一:特征值+目标值(目标值是连续的和离散的)数据类型二:只有特征值,没有目标值,目标值也叫label值由数据类型构成判断机器学习算法分类
1.监督学习–有特征值、label值
label值连续–回归
label值离散–分类
2.无监督学习–仅有特征值
3.半监督学习–部分数据有特征值部分数据没有特征值
4.强化学习–动态过程,上一步输出是下一步的输入
四要素:agent、action、environment、reward
3.数据处理
3.1数据划分
训练数据
验证数据
测试数据
3.2数据基本处理
对数据进行缺失值异常值进行处理
4.特征工程
特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程
简而言之就是将数据转化为计算机更好处理的数据的过程
意义:会直接影响机器学习的效果数据和特征决定了机器学习的上限,而模型和算法知识逼近这个上限而已
4.1特征提取
将任意数据(文本或图像)转换为可用于机器学习的数字特征(转换为计算机方便识别的语言二进制之类的)
4.2特征预处理
无量纲化处理,将数据转化为同一量纲
4.3特征降维
指定某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程
5.模型训练
选择合适的算法对模型进行训练
6.模型评估
对训练好的模型进行评估
6.1分类模型评估
精确率查准率查全率召回率F1-scoreAUC6.2回归模型评估
均方根误差相对平方误差平均绝对误差相对绝对误差决定系数6.3拟合
过拟合:模型在训练样本中展现的过优,导致在验证集、测试集中数据表现不佳欠拟合:样本量过少,训练效果不好7.Jupyter Notebook使用
7.1jupyter定义
开源的科学计算平台,类比ipython,可以运行代码可以做笔记,文件后缀:.ipynb
7.2jupyter和pycharm对比
jupyter适合做探索性的数据分析,一边分析、一边运行pycharm适合做逻辑性强的操作(web)7.3如何使用
从anaconda终端输入jupyter notebook到指定文件夹路径输入cmd按enter进入终端再输入jupyter notebook7.4cell
一对inout被视为一个代码单元,称为cell
7.5快捷键
shift+enter,执行本单元代码,并跳转到下一个单元ctrl+enter,执行本单元代码,留在本单元Y,cell切换到code模式M,cell切换到Markdown模式A,在当前cell的上面添加cellB,在当前cell的下面添加cell双击D删除当前cell7.6markdown语法
8.Matplotlib
用于开发2D/3D图表,数据分析,基于分析,进行展示
8.1绘图流程
1.创建画布
plt.figure(figsize=(20,8),dpi=100)#figsize为画布长宽#dpi为像素
2.绘制图像
x=[1,2,3]y=[5,8,6]plt.plot(x,y)
3.显示图像
plt.show()
import matplotlib.pyplot as pltplt.figure(figsize=(20,8),dpi=100)x=[1,2,3]y=[5,8,6]plt.plot(x,y)plt.show()
8.2matplotlib三层结构
容器层 canvasfigureaxes 辅助显示层 添加x轴,y轴,标题 图像层 绘制什么图像的声明8.3折线图(plot)与基础绘图功能
1.图像保存
plt.savefig("路径")
2.添加x轴,y轴刻度
plt.xticksplt.yticks
3.添加网格
plt.grid(linestyle=“--”,alpha=1)# linestyle=“--” 网格方式为--# alpha=1 透明度
4.添加描述信息
plt.xlabel(“时间”)plt.ylabel("温度")plt.title("一小时温度变化图",fontsize=20)
5.多次plot(多条折线图)
定义y1,y2值再进行plt.plot()绘制
6.显示图例
plt.legend(loc=0) #loc即选一个最好位置的参数,一般选择为0,0是最好的位置参数0就是best
注意:需要在显示之前,声明plot里面的具体值
图像基本绘制完整代码:
#1.生成数据x=range(60)y_beijing=[random.uniform(10,20) for i in x]y_shanghai=[random.uniform(15,25) for i in x]#2.创建画布plt.figure(figsize=(20,8),dpi=100)#3.图形绘制plt.plot(x,y_beijing,label="北京",color="y",linestyle="-.")plt.plot(x,y_shanghai,label="上海")##3.1定义x,y轴刻度x_ticks_labels=["11点{}分".format(i) for i in x] #如果是字符串要注意进行转换y_ticks=range(30) ##3.2添加x,y轴刻度plt.xticks(x[::5],x_ticks_labels[::5])plt.yticks(y_ticks[::5])#3.3添加网格plt.grid(linestyle="--",alpha=1)#3.4添加描述plt.xlabel("时间",fontsize=10)plt.ylabel("温度",fontsize=10)plt.title("一小时温度变化图",fontsize=20)#3.5显示图例plt.legend(loc="best")#4.图形展示plt.show()
生成图像:
8.4多个坐标系图像显示
#创建画布fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)
nrows–表示几行
ncols–表示几列
注意:有些方法需要添加set_
#3.图形绘制axes[0].plot(x,y_beijing,label="北京",color="y",linestyle="-.")axes[1].plot(x,y_shanghai,label="上海")
注意前边加上axes[0]./[1].就可以
#3.2添加x,y轴刻度#plt.xticks(x[::5],x_ticks_labels[::5])#plt.yticks(y_ticks[::5])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])
注意变为axes[0].set_xticks
带有字符串的进行两次标签设置此种就是x轴
#3.3添加网格#plt.grid(linestyle="--",alpha=1)axes[0].grid(linestyle="--",alpha=1)axes[1].grid(linestyle="--",alpha=1)
直接换为axes[0].
#3.4添加描述#plt.xlabel("时间",fontsize=10)#plt.ylabel("温度",fontsize=10)#plt.title("一小时温度变化图",fontsize=20)axes[0].set_xlabel("时间",fontsize=10)axes[0].set_ylabel("温度",fontsize=10)axes[0].set_title("北京一小时温度变化图",fontsize=20)axes[1].set_xlabel("时间",fontsize=10)axes[1].set_ylabel("温度",fontsize=10)axes[1].set_title("上海一小时温度变化图",fontsize=20)
这里需要换为axes[0].set_
#3.5显示图例#plt.legend(loc="best")axes[0].legend(loc="best")axes[1].legend(loc="best")
换为axes[0].
#4.图形展示plt.show()
这里不变
总结:
对于要添加的一般前边要换位axes[0].set_对于只是显示那仅需要把plt.改为axes[0].
完整代码显示
#1.生成数据x=range(60)y_beijing=[random.uniform(10,20) for i in x]y_shanghai=[random.uniform(15,25) for i in x]#2.创建画布#plt.figure(figsize=(20,8),dpi=100)fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)#3.图形绘制#plt.plot(x,y_beijing,label="北京",color="y",linestyle="-.")#plt.plot(x,y_shanghai,label="上海")axes[0].plot(x,y_beijing,label="北京",color="y",linestyle="-.")axes[1].plot(x,y_shanghai,label="上海")##3.1定义x,y轴刻度x_ticks_labels=["11点{}分".format(i) for i in x] #如果是字符串要注意进行转换y_ticks=range(30) ##3.2添加x,y轴刻度#plt.xticks(x[::5],x_ticks_labels[::5])#plt.yticks(y_ticks[::5])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])#3.3添加网格#plt.grid(linestyle="--",alpha=1)axes[0].grid(linestyle="--",alpha=1)axes[1].grid(linestyle="--",alpha=1)#3.4添加描述#plt.xlabel("时间",fontsize=10)#plt.ylabel("温度",fontsize=10)#plt.title("一小时温度变化图",fontsize=20)axes[0].set_xlabel("时间",fontsize=10)axes[0].set_ylabel("温度",fontsize=10)axes[0].set_title("北京一小时温度变化图",fontsize=20)axes[1].set_xlabel("时间",fontsize=10)axes[1].set_ylabel("温度",fontsize=10)axes[1].set_title("上海一小时温度变化图",fontsize=20)#3.5显示图例#plt.legend(loc="best")axes[0].legend(loc="best")axes[1].legend(loc="best")#4.图形展示plt.show()
生成图像:
8.5折线图的应用场景
1.表述数据变化
2.绘制一些数学图像
import numpy as npimport matplotlib.pyplot as pltx=np.linspace(0,20,1000)y=np.sin(x)plt.figure(figsize=(10,4),dpi=100)plt.plot(x,y)x_ticks=range(20)y_ticks=range(1)plt.xticks=(x_ticks[::2])plt.yticks=(y_ticks[::1])plt.show()
生成图像:
8.6常见图形的绘制
1.折线图 --plt.plot()
变化
2.散点图–plt.sactter()
分布规律
from turtle import colorimport matplotlib.pyplot as pltimport numpy as np# 10个点N = 10x1 = np.random.rand(N)y1 = np.random.rand(N)x2 = np.random.rand(N)y2 = np.random.rand(N)plt.scatter(x1, y1, marker='o',color="r")plt.scatter(x2, y2, marker='^',color="g")plt.show()
3.柱状图–plt.bar()
统计、对比
import matplotlib.pyplot as pltimport numpy as npfrom matplotlib.font_manager import FontPropertiesplt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号names = ['哪吒之魔童降世', '流浪地球', '复仇者联盟4:终局之战', '我和我的祖国', '疯狂的外星人', '中国机长', '飞驰人生', '烈火英雄', '速度与激情:特别行动', '蜘蛛侠:英雄远征','扫毒2天地对决', '大黄蜂', '惊奇队长', '比悲伤更悲伤的故事', '哥斯拉2:怪兽之王', '阿丽塔:战斗天使', '攀登者', '银河补习班', '狮子王', '反贪风暴4 '] # 单位(亿)box_office = [49.26, 46.18, 42.05, 23.36, 21.83, 21.23, 17.03, 16.74, 14.18, 14.01, 12.85, 11.38, 10.25, 9.46, 9.27,8.88, 8.64, 8.63, 8.23, 7.88]#绘制画布plt.figure(figsize=(20,8),dpi=100)#图形绘制plt.bar(names,box_office,width=0.3,color="g")plt.xlabel("影视名称",size=20)plt.ylabel("总票房(单位:亿)",rotation=90,size=20)plt.title("电影票房排行榜",size=20)plt.xticks(names,rotation=90,size=12)#图像展示plt.show()
4.直方图–plt.hist()
统计、分布
5.饼图–plt.pie()
占比