首页 > 解决方案 > 如何在 matplotlib 中绘制此数据集?

问题描述

我正在阅读使用 Python 的机器学习教程,并且正在努力绘制正在使用的数据集。本教程使用下面的代码生成使用的数据集,但不显示绘制它们的代码。

它们应该以 3 维绘制,z 值始终为 1 或 -1。这是生成数据集的代码:

import numpy as np

def get_dataset(get_examples):
    X1, y1, X2, y2 = get_examples()
    X, y = get_dataset_for(X1, y1, X2, y2)
    return X, y

def get_dataset_for(X1, y1, X2, y2):
    X = np.vstack((X1, X2))
    y = np.hstack((y1, y2))
    return X, y

def get_training_examples():
    X1 = np.array([[10,10],[6,6],[6,11],[3,15],[12,6],[9,5],[16,3],[11,5]])
    X2 = np.array([[3,6],[6,3],[2,9],[9,2],[18,1],[1,18],[1,13],[13,1]])

    y1 = np.ones(len(X1))
    y2 = np.ones(len(X2)) * -1
    return X1, y1, X2, y2

数据集如下所示:

>>> get_dataset(get_training_examples)

(array([[10, 10],
        [ 6,  6],
        [ 6, 11],
        [ 3, 15],
        [12,  6],
        [ 9,  5],
        [16,  3],
        [11,  5],
        [ 3,  6],
        [ 6,  3],
        [ 2,  9],
        [ 9,  2],
        [18,  1],
        [ 1, 18],
        [ 1, 13],
        [13,  1]]),
 array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1., -1., -1., -1., -1., -1.,
        -1., -1., -1.]))

标签: pythonmatplotlib

解决方案


我不知道你究竟想如何绘制它,但阅读你的问题我认为你想要一个分散的情节。为此,您应该使用 matplotlib 和 mpl_toolkits(制作 3d 视图)

代码应该是这样的:

import numpy as np
from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt

def get_dataset(get_examples):
    X1, y1, X2, y2 = get_examples()
    X, y = get_dataset_for(X1, y1, X2, y2)
    return X, y

def get_dataset_for(X1, y1, X2, y2):
    X = np.vstack((X1, X2))
    y = np.hstack((y1, y2))
    return X, y

def get_training_examples():
    X1 = np.array([[10,10],[6,6],[6,11],[3,15],[12,6],[9,5],[16,3],[11,5]])
    X2 = np.array([[3,6],[6,3],[2,9],[9,2],[18,1],[1,18],[1,13],[13,1]])

    y1 = np.ones(len(X1))
    y2 = np.ones(len(X2)) * -1
    return X1, y1, X2, y2

X,y = get_dataset(get_training_examples)
ax = plt.axes(projection='3d')
ax.scatter3D(X[:,0], X[:,1], y, c='r', marker='o') # c = 'color', marker = 'marker_form'

在此处输入图像描述


推荐阅读