我正在阅读使用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.]))
答案 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'