目录
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=100, n_features=2, *, centers=None, cluster_std=1.0, center_box=(- 10.0, 10.0), shuffle=True, random_state=None, return_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=True, noise=None, random_state=None, factor=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=100, n_features=20, *, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_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()
运行结果: