如何在matplotlib中绘制此数据集?

时间:2019-05-05 19:00:55

标签: python 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.]))

1 个答案:

答案 0 :(得分:1)

我不知道您想如何精确地绘制它,但是阅读您的问题我想您想要一个分散的图。 为此,您应该使用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'

enter image description here