sklearn学习之:(7)sklearn 自动生成数据集用法:make

it2024-08-04  38

文章目录

一、sklearn.datasets.make_hastie_10_21. 产生数据:2. 验证数据的正态性3. 数据可视化4. 代码 二、sklearn.datasets.make_circles1. 产生数据:2. 验证数据的正态性3. 数据可视化4. 代码 三、sklearn.datasets.make_moons1. 产生数据:2. 验证数据的正态性3. 数据可视化4. 代码

一、sklearn.datasets.make_hastie_10_2

产生一个相似的二元分类数据集,有10个维度

1. 产生数据:

注意这里的标签是二元的,用 -1 和 1 表示

2. 验证数据的正态性

3. 数据可视化

由于数据有 10 个特征,如果对于每个特征为一个坐标轴进行数据可视化,超高维度的数据是无法做到的,这里只取前 2 个和前 3 个特征进行空间上的可视化,大约看一下数据特征的分布。

4. 代码

from sklearn.datasets import make_hastie_10_2 import numpy as np import pandas as pd data, target = make_hastie_10_2(n_samples=100) df = pd.DataFrame(data) df['target'] = target df[0].plot(kind='kde',secondary_y=True,label='df[0]') df[1].plot(kind='kde',secondary_y=True,label='df[1]') plt.legend() df1 = df[df['target']==-1] df2 = df[df['target']==1] df1.index = range(len(df1)) # 调整行索引(养成良好的数据处理习惯) df2.index = range(len(df2)) ax = plt.gca(projection='3d') # 建立三维坐标轴,可视化三维图像 ax.scatter(df1[0],df1[1],df1[2],color='red') ax.scatter(df2[0],df2[1],df2[2],color='green') plt.figure(figsize=(3,3)) plt.scatter(df1[0],df1[1],color='red') plt.scatter(df2[0],df2[1],color='green')

二、sklearn.datasets.make_circles

产生同心圆型的二维二元分类 (标签为 0, 1) 数据集来测试某些算法的性能,可以为数据集添加噪声,可以为二元分类器产生一些球形判决界面的数据。

1. 产生数据:

这里的标签是二元的,用 0 和 1 表示

2. 验证数据的正态性

3. 数据可视化

4. 代码

from sklearn.datasets import make_circles import numpy as np import pandas as pd data, target = make_circles() df = pd.DataFrame(data) df['target'] = target df[0].plot(kind='kde',secondary_y=True,label='df[0]') # 分布完全重合,所以只有一条线 df[1].plot(kind='kde',secondary_y=True,label='df[1]') plt.legend() df1 = df[df['target']==0] df2 = df[df['target']==1] df1.index = range(len(df1)) # 调整行索引(养成良好的数据处理习惯) df2.index = range(len(df2)) plt.figure(figsize=(3,3)) plt.scatter(df1[0],df1[1],color='red') plt.scatter(df2[0],df2[1],color='green')

三、sklearn.datasets.make_moons

产生月牙形的二维二元分类 (标签为 0, 1) 数据集来测试某些算法的性能,可以为数据集添加噪声,可以为二元分类器产生一些球形判决界面的数据。

1. 产生数据:

这里的标签是二元的,用 0 和 1 表示

2. 验证数据的正态性

3. 数据可视化

4. 代码

from sklearn.datasets import make_moons import numpy as np import pandas as pd data, target = make_moons() df = pd.DataFrame(data) df['target'] = target df[0].plot(kind='kde',secondary_y=True,label='df[0]') # 分布完全重合,所以只有一条线 df[1].plot(kind='kde',secondary_y=True,label='df[1]') plt.legend() df1 = df[df['target']==0] df2 = df[df['target']==1] df1.index = range(len(df1)) # 调整行索引(养成良好的数据处理习惯) df2.index = range(len(df2)) plt.figure(figsize=(3,3)) plt.scatter(df1[0],df1[1],color='red') plt.scatter(df2[0],df2[1],color='green')
最新回复(0)