1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python机器学习实战|机器学习入门笔记1-机器学习流程+matplotlib简单应用

python机器学习实战|机器学习入门笔记1-机器学习流程+matplotlib简单应用

时间:2020-10-20 12:52:25

相关推荐

python机器学习实战|机器学习入门笔记1-机器学习流程+matplotlib简单应用

文章目录

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-scoreAUC

6.2回归模型评估

均方根误差相对平方误差平均绝对误差相对绝对误差决定系数

6.3拟合

过拟合:模型在训练样本中展现的过优,导致在验证集、测试集中数据表现不佳欠拟合:样本量过少,训练效果不好

7.Jupyter Notebook使用

7.1jupyter定义

开源的科学计算平台,类比ipython,可以运行代码可以做笔记,文件后缀:.ipynb

7.2jupyter和pycharm对比

jupyter适合做探索性的数据分析,一边分析、一边运行pycharm适合做逻辑性强的操作(web)

7.3如何使用

从anaconda终端输入jupyter notebook到指定文件夹路径输入cmd按enter进入终端再输入jupyter notebook

7.4cell

一对inout被视为一个代码单元,称为cell

7.5快捷键

shift+enter,执行本单元代码,并跳转到下一个单元ctrl+enter,执行本单元代码,留在本单元Y,cell切换到code模式M,cell切换到Markdown模式A,在当前cell的上面添加cellB,在当前cell的下面添加cell双击D删除当前cell

7.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()

占比

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。