python - 在python中生成具有三个类的3个圆形数据集
问题描述
我实际上想在python中用三个不同的类(class0,class1,class2)在另一个里面生成3个圆圈(首先是更大的圆圈,然后在它里面是第二大圆圈,在第三个圆圈里面)。我只能从下面的代码中生成两个类的 2 个圆圈。有人可以帮我吗?
import numpy as np
import pylab as pl
import sklearn.metrics as sm
from sklearn.datasets import make_circles
X, y = make_circles(n_samples=200)
print(X)
print(y)
plt.scatter(X[:,0],X[:,1], marker='o', facecolors='none', edgecolor='r')
解决方案
可能有一种更礼貌的方式来进行,但在这里我展示了一种实用的方式。
基本上,您可以使用该函数生成另外两个圆圈,make_circles
但使用另一个超参数factor
.
我所做的是生成相同的主圆,然后生成一个乘以因子值(在我的情况下为 0.6)的新圆。
这是代码:
X, y = make_circles(n_samples=200)
z, w = make_circles(n_samples=200, factor=0.6)
plt.scatter(X[:,0],X[:,1], facecolors='none', edgecolor='r')
plt.scatter(z[:,0],z[:,1], facecolors='none', edgecolor='r')
如果要更改新圆的半径,请使用factor
.
这段代码的唯一问题是大圆圈被重复了(绘制了两次),但是,由于它们是重叠的,所以没有视觉问题。