Python 如何生成二进制分类数据集并控制两个类之间的重叠?

Python 如何生成二进制分类数据集并控制两个类之间的重叠?,python,machine-learning,classification,Python,Machine Learning,Classification,使用sklearn.datasets.make_分类生成数据集时,是否可以控制重叠 我想传递两个类之间的重叠百分比,它将根据给定的百分比重叠这些类 详细要求如下: 生成一个n类分类数据集(高斯方式),我们可以通过添加协方差、重叠百分比和绘图形状(如对角线、直线、水平线等)来控制它 进行分类从n维超立方体中提取样本。在特定情况下,通过调整class\u sep参数,您可能可以实现类似“根据给定百分比重叠类”的效果,但我认为它一般不会起作用 一个解决方案可能是通过从具有已知均值和方差的高斯分布中采样

使用sklearn.datasets.make_分类生成数据集时,是否可以控制重叠

我想传递两个类之间的重叠百分比,它将根据给定的百分比重叠这些类

详细要求如下: 生成一个n类分类数据集(高斯方式),我们可以通过添加协方差、重叠百分比和绘图形状(如对角线、直线、水平线等)来控制它

进行分类
从n维超立方体中提取样本。在特定情况下,通过调整
class\u sep
参数,您可能可以实现类似“根据给定百分比重叠类”的效果,但我认为它一般不会起作用

一个解决方案可能是通过从具有已知均值和方差的高斯分布中采样来创建二元分类数据集。下面是一个简短的演示:

将numpy导入为np
从numpy.random导入默认值
将matplotlib.pyplot作为plt导入
rng=默认值
N_点=10000
比例=1.3
列车数据=np.c_[
np.r_[rng.normal(5,标度,(N_点,2)),rng.normal(10,标度,(N_点,2)),
np.r_[np.zero((N_点,1)),np.one((N_点,1)),
]
#策划
图1,ax=plt.子批次()
散度(列数据[:,0],列数据[:,1],c=列数据[:,2])
ax.设置框方面(1)
plt.show()
下面是一个示例,其中
比例=0.5

。。。这里有一个例子,
SCALE=1.3

由生成的样本通常应在两个标准偏差范围内,即我们位于
(5,5)
(10,10)
的平均值

更改
SCALE
参数,知道平均值之间的距离约为7.071,并知道数据应该落在哪里的预期半径,应该可以让您估计类之间的重叠程度


完成后,您可以将您的发现转换回的参数

非常感谢您的帮助。很抱歉,我没有提供生成不平衡数据所需的更多细节。我在你的代码中尝试了一些黑客行为,但不起作用。你能提出一些建议吗?我想根据给定的权重改变一个类中的实例数量。您可以从不平衡学习包()中检查
make\u disbalance
。谢谢@Alexander。这很有帮助。