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

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-score
  • AUC

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的上面添加cell
  • B,在当前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 plt
plt.figure(figsize=(20,8),dpi=100)
x=[1,2,3]
y=[5,8,6]
plt.plot(x,y)
plt.show()

8.2matplotlib三层结构

  • 容器层
    • canvas
    • figure
    • axes
  • 辅助显示层
    • 添加x轴,y轴,标题
  • 图像层
    • 绘制什么图像的声明

8.3折线图(plot)与基础绘图功能

1.图像保存

plt.savefig("路径")

2.添加x轴,y轴刻度

plt.xticks
plt.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 np
import matplotlib.pyplot as plt
x=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 color
import matplotlib.pyplot as plt
import numpy as np

# 10个点
N = 10
x1 = 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 plt
import numpy as np
from matplotlib.font_manager import FontProperties
plt.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("2019电影票房排行榜",size=20)
plt.xticks(names,rotation=90,size=12)
#图像展示
plt.show()

4.直方图–plt.hist()
统计、分布
5.饼图–plt.pie()
占比

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值