首页 > 解决方案 > 在python中生成具有三个类的3个圆形数据集

问题描述

我实际上想在python中用三个不同的类(class0,class1,class2)在另一个里面生成3个圆圈(首先是更大的圆圈,然后在它里面是第二大圆圈,在第三个圆圈里面)。我只能从下面的代码中生成两个类的 2 个圆圈。有人可以帮我吗?

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')

标签: pythonmachine-learningscikit-learndata-sciencecluster-analysis

解决方案


可能有一种更礼貌的方式来进行,但在这里我展示了一种实用的方式。

基本上,您可以使用该函数生成另外两个圆圈,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.

这段代码的唯一问题是大圆圈被重复了(绘制了两次),但是,由于它们是重叠的,所以没有视觉问题。


推荐阅读