各种数据集的生成

目录

一、月牙形数据集的生成

      1、 一种是自建函数:

       2、另一种是直接调用sklearn库里边的数据集中的make_moons函数给参数赋值直接生成月牙形数据集,函数的使用方法在sklearn官网有详细介绍:

二、高斯混合分布数据集

三、环形分布数据集

四、类别不均衡数据集


一、月牙形数据集的生成

       生成月牙形数据集有两种方法:

      1、 一种是自建函数:

      这篇文章里边有月牙形数据集的构成原理,感兴趣的可以去看看,个人觉得这篇挺好的。

“双月”数据集的生成_踏雪无痕是个小疯子的博客-优快云博客_双月数据集

       2、另一种是直接调用sklearn库里边的数据集中的make_moons函数给参数赋值直接生成月牙形数据集,函数的使用方法在sklearn官网有详细介绍:

sklearn.datasets.make_moons — scikit-learn 1.0.2 documentation

X,Y = datasets.make_moons(n_samples=100, *, shuffle=True, noise=None, random_state=None

n_samples样本总数
shuffle是否打乱数据集,可省略
noise是否加入随机噪声
random_state赋值为整数可以使每一次生成同一个数据集
X生成的样本
Y样本标签0/1

下面为代码实战部分:

from sklearn import datasets
import matplotlib.pyplot as plt
##设置rc参数显示中文标题
## 设置字体为SimHei显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
data1, target1 = datasets.make_moons(n_samples=1000,noise=0.1,random_state=8)
plt.scatter(data1[:, 0], data1[:, 1], c= target1)
plt.title('月牙形分布初始数据集')
plt.show()

运行结果: 

二、高斯混合分布数据集

       可以直接调用sklearn库里边的数据集中的make_blods函数给参数赋值直接生成高斯混合分布数据集,函数的使用方法在sklearn官网有详细介绍:

sklearn.datasets.make_blobs — scikit-learn 1.0.2 documentation

以下对官网的函数进行解释(翻译):

X, Y = datasets.make_blobs(n_samples=100n_features=2*centers=Nonecluster_std=1.0center_box=(- 10.0, 10.0)shuffle=Truerandom_state=Nonereturn_centers=False)

n_samples样本总数
n_features样本特征数,可省略
centers生成几类样本
cluster_std每一类样本间的方差,float值,可为数组类型
center_box随机生成中心时每个簇中心的包围框,可省略
shuffle是否打乱数据集,可省略
random_state赋值为整数可以使每一次生成同一个数据集
return_centers默认为False,如果为True,则返回每个集群的中心
X生成的样本
Y样本标签
centers每个集群的中心,仅当return_centers=True时返回

下面为代码实战部分:

from sklearn import datasets
import matplotlib.pyplot as plt
import numpy as np
##设置rc参数显示中文标题
## 设置字体为SimHei显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
n = 500
centers = 3
#样本间的方差
stds = [1.0,2.0,1.0]
data, data_flag, center = datasets.make_blobs(n_samples=n, centers=centers, cluster_std=stds, random_state=8,return_centers= True)
center = np.array(center) #创建数组
print(' 聚类中心为: ',center)
plt.scatter(data[:, 0], data[:, 1], c= data_flag)
plt.title('高斯混合初始数据集')
plt.show()

 运行结果:

三、环形分布数据集

       可以直接调用sklearn库里边的数据集中的make_circles函数给参数赋值直接生成环形分布数据集,函数的使用方法在sklearn官网有详细介绍:

sklearn.datasets.make_circles — scikit-learn 1.0.2 documentation

 以下对官网的函数进行解释(翻译):

X, Y = datasets.make_circles(n_samples=100*shuffle=Truenoise=Nonerandom_state=Nonefactor=0.8)

n_samples样本总数
shuffle

是否打乱数据集,可省略

noise是否加入随机噪声
random_state赋值为整数可以使每一次生成同一个数据集
factor内、外圆尺度因子默认0.8(默认值时可省略),范围(0.1)
X生成的样本
Y样本标签0/1

下面为代码实战部分:

from sklearn import datasets
import matplotlib.pyplot as plt
import numpy as np
##设置rc参数显示中文标题
## 设置字体为SimHei显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
data, data_flag = datasets.make_circles(n_samples=1000, noise=0.07, random_state=16, factor=0.6)
plt.scatter(data[:, 0], data[:, 1], c= data_flag)
plt.title('环形初始数据集')
plt.show()

 运行结果:

 调整了factor分别为默认值0.8和0.1的运行结果:

四、类别不均衡数据集

       可以直接调用sklearn库里边的数据集中的make_classification函数给参数赋值直接生成类别不均衡数据集,函数的使用方法在sklearn官网有详细介绍:

sklearn.datasets.make_classification — scikit-learn 1.0.2 documentation

 以下对官网的函数进行解释(翻译):

X, Y = make_classification(n_samples=100n_features=20*n_informative=2n_redundant=2n_repeated=0n_classes=2n_clusters_per_class=2weights=Noneflip_y=0.01class_sep=1.0hypercube=Trueshift=0.0scale=1.0shuffle=Truerandom_state=None)

n_samples样本总数
n_features

样本特征数,可省略

n_informative多信息特征的个数
n_redundant冗余信息,informative特征的随机线性组合
n_repeated重复信息,随机提取n_informative和n_redundant 特征
n_classes

分类类别

n_clusters_per_class某一个类别是由几个cluster构成的
weights权重之比(之和为1),可为数组类型
random_state赋值为整数可以使每一次生成同一个数据集
X生成的样本
Y样本标签0/1

下面为代码实战部分:

from sklearn import datasets
import matplotlib.pyplot as plt
import numpy as np
##设置rc参数显示中文标题
## 设置字体为SimHei显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
#n_informative:多信息特征的个数
data, data_flag = datasets.make_classification(n_samples= 500, n_informative=3, n_classes= 2, weights= [0.01, 0.99], random_state= 8)
plt.scatter(data[:, 0], data[:, 1], c= data_flag)
plt.title('类别不均衡分布初始数据集')
plt.show()

 运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yeopeq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值