简 介: 本文根据 机器学习中常用的聚类数据集生成方法 中的内容进行编辑实验和整理而得。并在之后对于聚类数据库生成进行不断的补充。

关键词机器学习聚类算法数据集合

§01 直接生成


  这类方法是利用基本程序软件包numpy的随机数产生方法来生成各类用于聚类算法数据集合,也是自行制作轮子的生成方法。

一、基础类型

1、月牙形数据集合

from headm import *
import numpy as nppltgif = PlotGIF()def moon2Data(datanum):x1 = linspace(-3, 3, datanum)noise = np.random.randn(datanum) * 0.15y1 = -square(x1) / 3 + 4.5 + noisex2 = linspace(0, 6, datanum)noise = np.random.randn(datanum) * 0.15y2 = square(x2 - 3) / 3 + 0.5 + noiseplt.clf()plt.axis([-3.5, 6.5, -.5, 5.5])plt.scatter(x1, y1, s=10)plt.scatter(x2, y2, s=10)plt.draw()plt.pause(.1)pltgif.append(plt)for _ in range(20):moon2Data(300)pltgif.save(r'd:\temp\GIF1.GIF')

2、方形数据集

from headm import *
import numpy as nppltgif = PlotGIF()def moon2Data(datanum):x = np.random.rand(datanum, 2)condition1 = x[:, 1] <= x[:, 0]condition2 = x[:, 1] <= (1-x[:, 0])index1 = np.where(condition1 & condition2)x1 = x[index1]x = np.delete(x, index1, axis=0)index2 = np.where(x[:, 0] <= 0.5)x2 = x[index2]x3 = np.delete(x, index2, axis=0)plt.clf()plt.scatter(x1[:, 0], x1[:, 1], s=10)plt.scatter(x2[:, 0], x2[:, 1], s=10)plt.scatter(x3[:, 0], x3[:, 1], s=10)plt.draw()plt.pause(.1)pltgif.append(plt)for _ in range(20):moon2Data(1000)pltgif.save(r'd:\temp\GIF1.GIF')

3、螺旋形数据集合

from headm import *
import numpy as nppltgif = PlotGIF()def randData(datanum):t = 1.5 * pi * (1+3*random.rand(1, datanum))x = t * cos(t)y = t * sin(t)X = concatenate((x,y))X += 0.7 * random.randn(2, datanum)X = X.Tnorm = plt.Normalize(y.min(), y.max())plt.clf()plt.scatter(X[:, 0], X[:, 1], s=10, c=norm(X[:,0]), cmap='viridis')plt.axis([-20, 21, -20, 16])plt.draw()plt.pause(.1)pltgif.append(plt)for _ in range(20):randData(1000)pltgif.save(r'd:\temp\GIF1.GIF')

  下面的知识螺旋线,没有随机移动的点。

  将随机幅值从原来的 0.7 增大到 1.5,对应的数据集合为:

from headm import *
import numpy as nppltgif = PlotGIF()def randData(datanum, delta):t = 1.5 * pi * (1+3*random.rand(1, datanum))x = t * cos(t)y = t * sin(t)X = concatenate((x,y))X += delta * random.randn(2, datanum)X = X.Tnorm = plt.Normalize(y.min(), y.max())plt.clf()plt.scatter(X[:, 0], X[:, 1], s=10, c=norm(X[:,0]), cmap='viridis')plt.axis([-20, 21, -20, 16])plt.draw()plt.pause(.1)pltgif.append(plt)for i in range(30):randData(1000, i / 20)for i in range(30):randData(1000, (30-i-1) / 20)pltgif.save(r'd:\temp\GIF1.GIF')

§02 样本生成器


  利用 sklearn.datasets 自带的样本生成器来生成相应的数据集合。

一、基础数据集

1、点簇形数据集合

from headm import *from sklearn.datasets import make_blobspltgif = PlotGIF()def randData(datanum):x1,y1 = make_blobs(n_samples=datanum, n_features=2, centers=3, random_state=random.randint(0, 1000))plt.clf()plt.scatter(x1[:,0], x1[:, 1], c=y1, s=10)plt.draw()plt.pause(.1)pltgif.append(plt)for _ in range(20):randData(300)pltgif.save(r'd:\temp\gif1.gif')

  绘制三簇点集合,也可以使用如下的语句:

plt.scatter(x1[y1==0][:,0], x1[y1==0][:,1], s=10)
plt.scatter(x1[y1==1][:,0], x1[y1==1][:,1], s=10)
plt.scatter(x1[y1==2][:,0], x1[y1==2][:,1], s=10)

2、线簇形数据集合

  生成代码,只要在前面的x1后面使用旋转矩阵。

transformation = [[0.60834549, -0.63667341], [-0.40887718, 0.85253229]]
x1 = dot(x1, transformation)

  其中转换矩阵的特征值与特征向量为:

  • 特征值: [0.2058171 1.25506068]
  • 特征向量:[[-0.84523774 0.7015526 ] [-0.53439045 -0.71261768]]
a = array(transformation)
w, v = linalg.eig(a)
printf(w, v)

3、环形数据集合

from headm import *from sklearn.datasets import make_circlespltgif = PlotGIF()def randData(datanum):x1,y1 = make_circles(n_samples=datanum, noise=0.07, random_state=random.randint(0, 1000), factor=0.6)plt.clf()plt.scatter(x1[y1==0][:,0], x1[y1==0][:,1], s=10)plt.scatter(x1[y1==1][:,0], x1[y1==1][:,1], s=10)plt.axis([-1.2, 1.2, -1.2, 1.2])plt.draw()plt.pause(.1)pltgif.append(plt)for _ in range(20):randData(1000)pltgif.save(r'd:\temp\gif1.gif')

4、月牙数据集合

from headm import *from sklearn.datasets import make_moonspltgif = PlotGIF()def randData(datanum):x1,y1 = make_moons(n_samples=datanum, noise=0.07, random_state=random.randint(0, 1000))plt.clf()plt.scatter(x1[y1==0][:,0], x1[y1==0][:,1], s=10)plt.scatter(x1[y1==1][:,0], x1[y1==1][:,1], s=10)plt.axis([-1.5, 2.5, -1, 1.5])plt.draw()plt.pause(.1)pltgif.append(plt)for _ in range(20):randData(1000)pltgif.save(r'd:\temp\gif1.gif')

※ 测试结论 ※


  sklearn里面还有好多函数来自定制数据,除此之外还可以使用 numpy 生成,然后通过高级索引进行划分,最好结合着 matplotlib 中的 cmap 来做颜色映射,这样可以做出好玩又好看的数据集。


■ 相关文献链接:

  • 机器学习中常用的聚类数据集生成方法
  • sklearn.datasets

应用在机器学习中的聚类数据集产生方法相关推荐

  1. 机器学习中的聚类算法有哪几种?

    目前,聚类算法被广泛应用于用户画像.广告推荐.新闻推送和图像分割等等.聚类算法是机器学习中一种"数据探索"的分析方法,它帮助我们在大量的数据中探索和发现数据的结构.那么机器学习中的 ...

  2. 机器学习中的特征——特征选择的方法以及注意点

    机器学习中的特征--特征选择的方法以及注意点 https://blog.csdn.net/google19890102/article/details/40019271 关于机器学习中的特征我有话要说 ...

  3. 机器学习中的聚类算法

    1. 概述 根据所拥有的数据,可以使用三种不同的机器学习方法,包括监督学习.半监督学习和无监督学习. 在监督学习中,根据已标记数据,因此可以确定输出是关于输入的某种(隐函数)的正确值.通过半监督学习, ...

  4. 关于机器学习中山峰聚类算法的说明

    前言 在之前关于聚类算法的文章中,笔者主要涉及的内容均是和参数求解相关的,如C均值(包括模糊C均值).混合高斯模型等,而对于一些无参数密度估计的算法尚未讨论,而且一般基于参数密度估计的算法均是建立在假 ...

  5. 一文介绍机器学习中的三种特征选择方法

    作者 | luanhz 来源 | 小数志 导读 机器学习中的一个经典理论是:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限.也正因如此,特征工程在机器学习流程中占有着重要地位.广义的特征 ...

  6. 机器学习中防止过拟合的方法总结

    来自机器学习成长之路公众号 在对模型进行训练时,有可能遇到训练数据不够,即训练数据无法对整个数据的分布进行估计的时候,或者在对模型进行过度训练(overtraining)时,常常会导致模型的过拟合(o ...

  7. 机器学习中数据预处理——标准化/归一化方法(scaler)

    由于工作问题比较忙,有两周没有总结一下工作学习中遇到的问题. 这篇主要是关于机器学习中的数据预处理的scaler变化. 工作中遇到的问题是:流量预测问题,拿到的数据差距非常大,凌晨的通话流量很少几乎为 ...

  8. 机器学习中的核函数与核方法(好!)

    原文见:https://blog.csdn.net/qq_34099953/article/details/84316905 我们在学习机器学习的时候,总是会看到一个概念--核,然后看到一堆公式.但是 ...

  9. 机器学习中的聚类算法(1):k-means算法

    一文详解激光点云的物体聚类:https://mp.weixin.qq.com/s/FmMJn2qjtylUMRGrD5telw 引言: Q:什么是聚类算法? 现在我们在做的深度学习当中,比如图像的识别 ...

最新文章

  1. hdu4975 行列和构造矩阵(dp判断唯一性)
  2. Chrome 技术篇-console控制台检测xpath、css唯一性
  3. mac+php7+mysql.so_在Mac上编译安装PHP7的开发环境
  4. c++字符加密_linux安全Linux下RAR加密解密
  5. 【小技巧积累】设置ListView控件的Item不在Tab键导航序列中
  6. DIV层+CSS实现锁屏
  7. P3352-[ZJOI2016]线段树【dp】
  8. mybatis学习(8):The server time zone value '???ú±ê×??±??' is unrecognized or represents more
  9. JDK 1.8 新特性学习(Stream)
  10. BZOJ 1001 平面图转对偶图
  11. rdkit获得原子的标准排序序号
  12. 50句形容美人的绝佳诗句,只看一眼,惊艳千年
  13. CKEDITOR富文本编辑器+AJAX+JQUERY+ListView综合应用
  14. Linux 下安装与设置Vim编辑器
  15. C#(四十二)之线程同步、互锁
  16. mp4转换m3u8格式php,m3u8格式怎么转换mp4 ts格式转换 - 下载的m3u8、ts如何转换成mp4...
  17. h5直播|微直播weLiveShow|视频h5|video直播
  18. NLP工具——NLTK 安装及使用
  19. 正弦稳态电路的阻抗和功率
  20. java EE 第十二周 web前端开发的周总结 (含思维导图)

热门文章

  1. 到底会改名吗?微软GVFS 改名之争
  2. 市面上有没有靠谱的PM2.5检测仪?如何自己动手制作PM2.5检测仪
  3. 第二次作业+105032014116
  4. 【Linux+Mono+Asp.net公开课】视频下载
  5. 哈佛图书馆墙上的训言
  6. winform 多个关键字的高亮显示
  7. Sharepoint ListTemplateId
  8. yii框架学习(五)get、post请求如何接收请求参数
  9. 防护很重要!教你教你认识和检验安防产品的IP防护等级
  10. python 中sys.stdout.write 和 print sys.stdout的区别(转)