分享python机器学习中应用所产生的聚类数据集方法
作者:卓晴 发布时间:2021-06-05 13:28:39
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.15 y1 = -square(x1) / 3 + 4.5 + nois x2 = linspace(0, 6, datanum) noise = np.random.randn(datanum) * 0.15 y2 = square(x2 - 3) / 3 + 0.5 + noise plt.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.T norm = 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,对应的数据集合为:
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.20581711.25506068]
特征向量:[[-0.845237740.7015526][-0.53439045-0.71261768]]
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来做颜色映射,这样可以做出好玩又好看的数据集,希望大家以后多多支持脚本之家!
来源:https://blog.csdn.net/zhuoqingjoking97298/article/details/119114663
猜你喜欢
- w3c range range 用来表示用户的选择区域,这块选择区域由两个边界位置界定,而位置则由其容器以及偏移量构成,称作 contain
- 一、慢查询有什么用?它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进
- 使用sql语句删除数据库中重复记录的两个方法如下:方法一declare @max integer,@id in
- 在前面已经学习了gin框架如何处理请求,解析请求,返回数据。在实际的项目当中,项目往往是以模块化来进行划分和开发的,所谓的模块化就是按照功能
- 表格(Table)可读性提升的系统总结,包括“行列组织关系模糊、单元格内容不清晰”两大方面...前边写了个大框架,好像有点笼统,因为没有各点
- 目录一、ZIP 格式简介二、浏览器解压方案2.1 定义工具类2.2 在线解压 ZIP 文件三、服务器解压方案3.1 根据文件名解压指定 ZI
- sys.dm_io_pending_io_requests可以返回当前IO Pending的状态,对于SQL Server 中每个挂起的I/
- 本文实例讲述了Python面向对象程序设计之继承与多继承。分享给大家供大家参考,具体如下:1. 继承在C++和Java中,使用继承时,子类的
- 以去掉去掉<!--和-->为例进行说明:def clearContentWithSpecialCharacter(content
- 前言去年暑假参加了一个比赛,比赛内容中需要确定目标的位置 本来想全用图像完成的,最后发现不是很符合要求。比完赛之后,就忙别的事了。直到现在突
- 有时候会遇到和上面类似的表单字段。我们可以给每个字段限制输入长度,当达到输入长度时自动切换焦点,以增强表单的易用性 <form id=
- python 中有6大标准类型:数字(Number)字符串(String)列表(List)元组(Tumple)集合(Set)字典(Dicti
- 最近在做人脸识别清洗样本的工作,发现经过人脸对齐后存在部分图片十分模糊,所以用opencv滤了一下。原理就是使用了cv2.Laplacian
- 前几天写了Mysql跨表更新的一篇总结,今天我们看下跨表删除。 在Mysql4.0之后,mysql开始支持跨表delete。 Mysql可以
- Installing mysql (2.8.1) with native extensions /usr/local/lib/ruby/si
- 大家好,为了进行调试和错误跟踪,人们在整个代码库中广泛使用日志,今天来看看如何在代码中定义日志,并探讨日志的权限。一、日志层级在开始之前,需
- 一、VScode下载官网Download Visual Studio Code - Mac, Linux, Windows点击64 bit会
- 很多人说设计是力求细节的,在网页设计里表达出的细节就是图标。图标在一个设计里带来了额外的注解并且使设计里的对象和元素引起用户的注意。以下介绍
- 0. dockerfile命令FROM # 基础镜像,一切从这里开始构建MAINTAINER # 镜像是谁写的,姓名+邮箱RUN# 镜像构建
- 使用正则表达式的几个步骤:1、用import re 导入正则表达式模块;2、用re.compile()函数创建一个Regex对象;3、用Re