• 图例Legend 表明图形里的内容
• 网格Grid,图形中的虚线,True显示网格
• 点 Markers:表示点的形状。html
基本的视觉元素有三种:点、线、柱状。分析下面需求绘制什么图形?
学生为某科课程花费的时间和考试成绩二者之间的关系,查看二者之间的相关性。python
make标记样式算法
标记颜色color数组
#1). 导入绘图库 import matplotlib.pyplot as plt import numpy as np #2). 建立画板figure figure = plt.figure(figsize=(10, 10)) #3). 建立子图subplot/Axes ax = plt.subplot(1, 1, 1) #4). 准备数据 #从0-50分割成100份 x = np.linspace(0, 10, 100) y = np.sin(x) #6). 绘制 ax.plot(x, y, color='orange', marker='*', linestyle='-.') ax.set_title('y = sinx') ax.set_xlabel('x') ax.set_ylabel('y') #7). 显示图形 plt.show()
import matplotlib.pyplot as plt import numpy as np #1). 准备数据信息 x = np.linspace(0, 20, 100) y = np.sin(x) #2). 直接绘图 plt.plot(x, y) #plt.scatter(x, y) plt.title('y = sinx') plt.xlabel('x') plt.ylabel('y') #3). 绘制图形并显示 plt.show()
多图绘制
多图案例dom
绘制步骤机器学习
案例一: 散点图和折线图
绘图需求: 基于某函数,并在其必定范围震动的离散图。必定范围内震动呢?y加个随机数ide
1.1 散点图绘制
.
子图绘制函数
#1). 导入绘图库 import matplotlib.pyplot as plt import numpy as np #2). 建立画板figure figure = plt.figure(figsize=(10, 10)) #3). 建立子图subplot/Axes, 生成2行一列的子图, #第一行第一列绘制sinx的图形, 第二行第一列绘制cosx的图形 ax1 = plt.subplot(2, 1, 1) ax2 = plt.subplot(2, 1, 2) #4). 准备数据 #从0-50分割成100份 x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) #6). 绘制 ax1.plot(x, y1, color='orange', linestyle='-.') ax1.set_title('y = sinx') ax1.set_xlabel('x') ax1.set_ylabel('y') ax2.plot(x, y2, color='m', linestyle='-.') ax2.set_title('y = cosx') ax2.set_xlabel('x') ax2.set_ylabel('y') #7). 显示图形 plt.show()
1.2 曲线图
2.学习
案例二: 柱状图
条形图(bar chart),也称为柱状图,是一种以长方形的长度为变量的统计图表,长方形的长
度与它所对应的变量数值呈必定比例。假设某项针对男女大学生购买饮用水爱好的调查结果以下
表:
竖向条形绘制测试
import matplotlib.pyplot as plt # 1. 建立figure fig = plt.figure() # 2. 建立子图(1行2列) ax1 = plt.subplot(1, 2, 1) ax1.set_title('男生购买饮用水状况的调查结果') ax2 = plt.subplot(1, 2, 2) ax2.set_title('女生购买饮用水状况的调查结果') # ***********中文乱码如何解决 plt.rcParams['font.sans-serif'] = ['SimHei'] # 3. 加载数据信息 waters = ['碳酸饮料', '绿茶', '矿泉水', '其它', '果汁'] boy_buy_num = [6, 7, 6, 2, 1] girl_buy_num = [9, 4, 4, 6, 5] # 4. 绘制条形图 bar_width = 0.4 ax1.bar(waters, boy_buy_num, bar_width, color='orange') ax2.bar(waters, girl_buy_num, bar_width, color='g') # 5. 保存图片到本地 # plt.show() plt.savefig('bar.png')
横向条形图绘制
import matplotlib.pyplot as plt # 1. 建立figure fig = plt.figure() # 2. 建立子图(1行2列) ax1 = plt.subplot(2, 1, 1) ax1.set_title('男生购买饮用水状况的调查结果') ax2 = plt.subplot(2, 1, 2) ax2.set_title('女生购买饮用水状况的调查结果') # ***********中文乱码如何解决 plt.rcParams['font.sans-serif'] = ['SimHei'] # 3. 加载数据信息 waters = ['碳酸饮料', '绿茶', '矿泉水', '其它', '果汁'] boy_buy_num = [6, 7, 6, 2, 1] girl_buy_num = [9, 4, 4, 6, 5] # 4. 绘制条形图 bar_width = 0.4 ax1.barh(waters, boy_buy_num, height=bar_width, color='orange') ax2.barh(waters, girl_buy_num, height=bar_width, color='g') # 5. 保存图片到本地 # plt.show() plt.savefig('bar.png')
案例二: 柱状图
并列条形图: 若要将男生与女生的调查状况画出两个条形图一块显示,则可使用 bar两次,
并调整 条形图位置坐标以及相应刻度,使得两组条形图可以并排显示
并列条形图绘制
import matplotlib.pyplot as plt import numpy as np # ***********中文乱码如何解决 plt.rcParams['font.sans-serif'] = ['SimHei'] # 加载数据信息 waters = ['碳酸饮料', '绿茶', '矿泉水', '其它', '果汁'] boy_buy_num = [6, 7, 6, 2, 1] girl_buy_num = [9, 4, 4, 6, 5] # 调整条形图的横坐标 bar_width = 0.4 boy_index = np.arange(len(waters)) # [0, 1, 2, 3, 4] girl_index = boy_index + bar_width # numpy传播机制, [0.4, 1.4, 2.4, 3.4, 4.4] # 绘制条形图 plt.bar(boy_index, boy_buy_num, bar_width, color='orange', label='男生') plt.bar(girl_index, girl_buy_num, bar_width, color='g', label='女生') # 修改无心义的横坐标为有意义的横坐标 plt.xticks(boy_index + bar_width / 2, waters) plt.ylabel("购买量") plt.title("购买饮水状况的调查表") plt.legend() # 保存图片到本地 # plt.show() plt.savefig('bar.png')
K近邻算法原理
K近邻算法: 近朱者赤,近墨者黑。新的数据点离谁(一个或多个近邻点)最近, 就和谁属于同一类
K近邻算法数据集
在skilit-learn中内置了若干个玩具数据集(Toy Datasets), 还有一些API能够本身动手生成数
据集, 以下面代码所示:
K近邻算法分类
咱们已经生成一系列数据集看成机器学习的训练数据集,接下来就是根据KNN算法找一个
模型, 而后根据模型对未知数据进行分类。
K近邻算法回归可视化分析
K近邻算法回归原理
K近邻算法也能够用于回归, 原理和分类相同。 计算每一个数据点的预测值时,模型会选择离该
数据点最近的若干个点,并将它们的y值取平均值,并做为新数据点的预测值
from sklearn.datasets import make_blobs from sklearn.neighbors import KNeighborsClassifier import matplotlib.pyplot as plt # 生成数据集, eg: x=(花瓣长度, 花茎的长度), y=(第一种花: 鸢尾花1). 训练集 X, y = make_blobs(n_samples=200, n_features=2, centers=2, random_state=8) # 如何去寻找一个模型,并最终根据模型预判新的测试数据所属的分类? # 机器学习: 寻找一个函数/模型的过程. f(x)='xxxxxxx', f(image)='cat', f(alpha-go)=5x5, f('对话')=‘对话’ clf = KNeighborsClassifier() clf.fit(X, y) # 拟合(找模型的过程) test_data = [6, 3] # 测试集: 测试模型好坏/正确率的数据集 class_name = clf.predict([test_data]) print("新数据点的分类是: ", class_name) # # 给定一个新的特征信息, 分析属于哪一类? # test_data = [6, 3] # # # 经过绘制散点图, 清楚的看到分为2类 # plt.scatter(X[:, 0], X[:, 1], edgecolors='orange', color='white') # plt.scatter(test_data[0], test_data[1], marker='*', color='r') # plt.show()
import matplotlib.pyplot as plt import numpy as np from sklearn.datasets import make_regression from sklearn.neighbors import KNeighborsRegressor #产生回归的数据集(训练集) X, y = make_regression(n_samples=100, n_features=1, n_informative=1, noise=50, random_state=8) #经过K近邻的回归器, 拟合/寻找模型 reg = KNeighborsRegressor() reg.fit(X, y) #给定一些新的数据(测试集),预测y值 """ 一维数组: np.linspace [1, 2, 3, 4, 5] n*1数组: rwshape(-1, 1) reg.predict([[1], [2]]) # 预测市须要传递的信息 """ test_x = np.linspace(-3, 3, 100).reshape(-1, 1) test_y = reg.predict(test_x) #print("模型的准确度: ", reg.score(X, y)) #***********中文乱码如何解决 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False #绘制图形 plt.scatter(X, y, marker='*', color='orange', edgecolors='orange', label='训练集') plt.plot(test_x, test_y, color='black', label='测试集') plt.title('KNN Regressor') plt.legend() plt.show()
官方网址:
https://seaborn.pydata.org/introduction.html
seaborn总体风格
Seaborn共提供5种主题风格,分别为darkgrid、whitegrid、dark、 white以及ticks。
利用set()和set_style()两个函数对总体风格进行控制
设置子图风格
经过关键字with,对不一样子图设置风格
seaborn内容风格
对图中内容进行设置,包括线条颜色,粗细和刻度等