是一款程序员和科学工作者的编程/文档/笔记/展示软件
.ipynb文件格式是用于计算型叙述的JSON文档格式的正式规范
数据挖掘、数据分析、工作的目标不明确,探索性编程
画图方便,展示友好
画图方便、 数据展示更友好
# 进入虚拟环境
workon ai
# 输入命令
jupyter notebook
cell:一对In Out会话被视作一个代码单元,称为cell
编辑模式(Enter)
命令模式(Esc)
两种模式通用快捷键:
Shift+Enter,执行本单元代码,并跳转到下一单元
Ctrl+Enter,执行本单元代码,留在本单元
命令模式:按ESC进入
Y,cell切换到Code模式
M,cell切换到Markdown模式
A,在当前cell的上面添加cell
B,在当前cell的下面添加cell
是专门用于开发2D图表(包括3D图表)
以渐进、交互式方式实现数据可视化
能将数据进行可视化,更直观的呈现
使数据更加客观、更具说服力
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
import matplotlib.pyplot as plt
import random
# 准备数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
#创建北京温度数据
y_beijing=[random.uniform(1,3) for i in x]
# 生成x刻度标签
x_ticklabels=["11点{}".format(i) for i in x]
# 生成y标签
y_ticklabels=range(40)
# 1.创建画布
plt.figure(figsize=(10,6),dpi=100)
# 2.绘制图像
# plt.plot(x,y_shanghai)#上海 No handles with labels found to put in legend.
plt.plot(x,y_shanghai,label="上海")
plt.plot(x,y_beijing,label="北京",linestyle="--",color="g") #绘制北京的
# 2.1添加刻度标签
# plt.xticks(x_ticklabels[::5]) 报错 'NoneType' object has no attribute 'update'
plt.xticks(x[::5],x_ticklabels[::5],fontsize=10)
plt.yticks(y_ticklabels[::5])
#2.2添加网格
plt.grid(True,linestyle="--",alpha=0.5)
#2.3添加标题-描述信息
plt.xlabel('时间',fontsize=16)
plt.ylabel('温度',fontsize=16)
plt.title('上海市一小时温度变化',fontsize=20)
#2.4添加图例
plt.legend(loc=0)
#图片保存
plt.savefig("./test.png") #保存图像一定要在show之前
# 3.显示图像
plt.show() #将图像发送到显示终端进行显示,同时释放图像内存资源
执行显示
注:标签x_ticklabels[::5]字符型不能直接更新,必须先给一个数值型标签,再替换。plt.xticks(x[::5],x_ticklabels[::5])
fig,axes=plt.subplots(nrows=1, ncols=1, **fig_kw) 创建一个带有多个axes(坐标系/绘图区)的图。
# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 5) for i in x]
# 1.创建画布
# plt.figure(figsize=(20, 8), dpi=100)
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)
#nrows=1, ncols=2 一行,有俩坐标
# 2.绘制图像
# plt.plot(x, y_shanghai, label="上海")
# plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")
axes[0].plot(x, y_shanghai, label="上海")
axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京")
# 2.1 添加x,y轴刻度
# 构造x,y轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 刻度显示
# plt.xticks(x[::5], x_ticks_label[::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_label[::5])
#axes[0].set_xticks(x[::5],x_ticks_label[::5]) 错误,不显示刻度
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])
# 2.2 添加网格显示
# plt.grid(True, linestyle="--", alpha=0.5)
axes[0].grid(True, linestyle="--", alpha=0.5)
axes[1].grid(True, linestyle="--", alpha=0.5)
# 2.3 添加描述信息
# plt.xlabel("时间")
# plt.ylabel("温度")
# plt.title("中午11点--12点某城市温度变化图", fontsize=20)
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("中午11点--12点某城市温度变化图", fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("中午11点--12点某城市温度变化图", fontsize=20)
# # 2.4 图像保存
plt.savefig("./test.png")
# # 2.5 添加图例
# plt.legend(loc=0)
axes[0].legend(loc=0)
axes[1].legend(loc=0)
# 3.图像显示
plt.show()
人工智能必备三要素:
数据、算法、计算力
计算力之CPU、GPU对比:
CPU主要适合I\O密集型的任务 少而强 8核
GPU主要适合计算密集型任务 多而弱 适合处理并行化任务
1956年也就成为了人工智能元年
机器学习工作流程总结:
1.获取数据
2.数据基本处理 数据清洗
3.特征工程 将数据转化为更适合算法训练的形式
4.机器学习(模型训练) 优化求解
5.模型评估 看模型在测试集上表现是否达到要求
结果达到要求,上线服务
没有达到要求,重新上面步骤
数据简介
在数据集中一般:
一行数据是一个样本
一列数据是一个特征
列分为 特征值x和目标值y
数据类型构成:
有监督数据:特征值和目标值 有x、y
y连续,回归问题
y离散,分类问题
无监督数据:只有特征值,没有目标值,有x无y
聚类
数据分割:
训练数据:用于训练,构建模型
测试数据:在模型检验时使用,用于评估模型是否有效
划分比例:
训练集:70% 80% 75%
测试集:30% 20% 25%
特征工程包含内容
特征提取:将非数值装换为数值
特征预处理:将数据转换成更好地数据
特征降维 保证数据差异的情况下减少数据维度,减少模型计算量。
拟合
机器学习优化理论:误差最小化 为了追求误差最小化可以采取一切手段