IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> matplotlib可视化之等高线图plt.contourf()与机器学习中绘制决策边界 -> 正文阅读

[人工智能]matplotlib可视化之等高线图plt.contourf()与机器学习中绘制决策边界

  • 函数功能:用来绘制等高线和决策边界
  • 调用方法:plt.contourf(X,Y,Z,cmap)
  • 参数说明:
    • X:网格点的横坐标
    • Y:? 网格点的纵坐标
    • Z:网格点的值(等高线图的高度值)
    • cmap:颜色图,指定Z不同值(不同高度)所对应不同的填充色

一、绘制等高线图:

import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(2)
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
xx, yy = np.meshgrid(x, y)  # 生成网格点的横坐标xx与纵坐标yy
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)  # 三维中的高度值
ax1.contourf(xx, yy, z)
ax2.contour(xx, yy, z)  # 与contourf区别在于不同高度面不填充颜色
plt.show()

?二、对于等高线图和网格点的理解:

等高线图实质上是三维图在二维平面上的映射,而网格点就是x,y轴所形成的平面上的点,由于z轴是基于二维上的,即指二维平面,而整个平面可以看成密密麻麻的网格点堆在一起形成的。

可通过np.meshgrid(x,y)函数生成网格点坐标,函数返回网格点的横坐标和纵坐标的两个数组

?

?由上图可知,当网格点数目多的时候就形成了面,x和y相当于一维线,然后通过np.meshgrid生成网格点,可理解为两条线围成一个面,所有的三维图都是基于网格点绘制的

三、在机器学习中绘制决策边界:

在机器学习中经常需要分析观察决策边界,在此举一个机器学习的小案例并绘制决策边界:

import numpy as np
import pandas as pd 
import sklearn
from sklearn import datasets,model_selection
from sklearn.svm import SVC  # 支持向量机分类模型
from sklearn.preprocessing import MinMaxScaler # 数据归一化函数
def data_plot():
    # 使用葡萄酒数据集
    wine = datasets.load_wine()
    wine_data = wine.data
    data = pd.DataFrame(wine_data,columns = wine.feature_names)
    target = wine.target
    # 选取前两个特征作为数据
    data = data.iloc[:,:2]

    scaler = MinMaxScaler()           # 归一化特征函数
    data = scaler.fit_transform(data) # 对特征数据进行归一化
    
    # 根据两个特征数据绘制散点图
    plt.scatter(data[:,0],data[:,1],c = target,s= 50, cmap = plt.cm.plasma,edgecolors = 'k')
    plt.xlim(-0.5,1.5)
    plt.ylim(-0.5,1.5)
    plt.show()
     
    # 划分数据集
    x_train, x_test, y_train,y_test = model_selection.train_test_split(data,target,test_size = 0.2,random_state = 100)
    # 创建支持向量机模型
    svc = SVC()
    
    # 训练模型
    svc.fit(x_train,y_train)
    print('模型在测试集上的准确率:',svc.score(x_test,y_test))
    print('-'*120)
    
    # 构建生成网格点的函数
    def make_meshgrid(x,y):
        x_min, x_max = x.min()-0.5,x.max()+0.5
        y_min, y_max = y.min()-0.5,y.max()+0.5
        xx,yy = np.meshgrid(np.linspace(x_min,x_max,300),np.linspace(y_min,y_max,500))
        return xx,yy
    
    # 对网格点进行预测并得到标签类别
    xx,yy = make_meshgrid(data[:,0],data[:,0])
    xy = np.c_[xx.ravel(),yy.ravel()]
    z = model2.predict(xy).reshape(xx.shape)
    
    # 绘制决策边界
    fig = plt.figure()
    ax = fig.add_subplot(111)
    print('绘制决策边界:')
    plt.scatter(data[:,0],data[:,1],c = target,s= 50, cmap = plt.cm.plasma,edgecolors = 'k')
    ax.contourf(xx,yy,z,cmap = plt.cm.plasma,alpha =0.5)
    plt.show()

# 调用函数
data_plot()

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:32:41  更:2021-08-22 13:33:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:32:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码