机器学习探索计划——数据集划分

文章目录

  • 导包
  • 手写数据划分函数
  • 使用sklearn内置的划分数据函数
    • stratify=y理解举例

导包

import numpy as np
from matplotlib import pyplot as plt
from sklearn.datasets import make_blobs

手写数据划分函数

x, y = make_blobs(n_samples = 300,n_features = 2,centers = 3,cluster_std = 1,center_box = (-10, 10),random_state = 666,return_centers = False
)

make_blobs:scikit-learn(sklearn)库中的一个函数,用于生成聚类任务中的合成数据集。它可以生成具有指定特征数和聚类中心数的随机数据集。

n_samples:生成的样本总数,本例中为 300。
n_features:生成的每个样本的特征数,本例中为 2。
centers:生成的簇的数量,本例中为 3。
cluster_std:每个簇中样本的标准差,本例中为 1。
center_box:每个簇中心的边界框(bounding box)范围,本例中为 (-10, 10)。
random_state:随机种子,用于控制数据的随机性,本例中为 666。
return_centers:是否返回生成的簇中心点,默认为 False,在本例中不返回。

plt.scatter(x[:, 0], x[:, 1], c = y, s = 15)
plt.show()

在这里插入图片描述

x[:, 0]:表示取 x 数据集中所有样本的第一个特征值。
x[:, 1]:表示取 x 数据集中所有样本的第二个特征值。
c=y:表示使用标签 y 对样本点进行颜色编码,即不同的标签值将使用不同的颜色进行展示。
s=15:表示散点的大小为 15,即每个样本点的显示大小。

index = np.arange(20)
np.random.shuffle(index)
index

output: array([12, 15, 7, 11, 14, 16, 6, 5, 0, 1, 2, 19, 13, 4, 18, 9, 8,
10, 3, 17])

np.random.permutation(20)

output: array([ 6, 4, 11, 13, 18, 1, 8, 3, 10, 9, 7, 0, 15, 17, 19, 16, 5,
2, 14, 12])

np.random.seed(666)
shuffle = np.random.permutation(len(x))
shuffle

output:
array([235, 169, 17, 92, 234, 15, 0, 152, 176, 243, 98, 260, 96,
123, 266, 220, 109, 286, 185, 177, 160, 11, 50, 246, 258, 254,
34, 229, 154, 66, 285, 214, 237, 95, 7, 205, 262, 281, 110,
64, 111, 87, 263, 38, 153, 129, 273, 255, 208, 56, 162, 106,
277, 224, 178, 265, 108, 104, 101, 158, 248, 29, 181, 62, 14,
75, 118, 201, 41, 150, 131, 183, 288, 291, 76, 293, 267, 1,
165, 12, 278, 53, 209, 114, 71, 135, 184, 206, 244, 61, 211,
213, 128, 3, 143, 296, 227, 242, 94, 251, 284, 253, 89, 49,
159, 35, 268, 249, 197, 55, 167, 146, 23, 283, 187, 173, 124,
68, 250, 189, 186, 5, 221, 65, 40, 119, 74, 22, 19, 59,
188, 231, 44, 137, 31, 256, 43, 85, 149, 134, 218, 120, 81,
67, 239, 195, 207, 240, 182, 179, 90, 216, 180, 47, 299, 30,
163, 193, 48, 245, 138, 28, 257, 125, 170, 157, 259, 290, 200,
203, 215, 238, 194, 121, 298, 73, 97, 8, 130, 105, 190, 6,
36, 27, 32, 144, 4, 117, 115, 171, 136, 84, 10, 113, 233,
247, 72, 292, 198, 252, 82, 228, 37, 39, 33, 280, 272, 79,
116, 172, 202, 226, 271, 145, 13, 78, 196, 274, 26, 297, 191,
232, 52, 20, 230, 18, 58, 294, 140, 132, 287, 217, 25, 133,
83, 99, 93, 21, 241, 168, 147, 275, 212, 127, 54, 199, 282,
107, 151, 289, 88, 100, 264, 45, 77, 295, 9, 166, 57, 80,
155, 279, 86, 219, 2, 269, 126, 102, 142, 192, 161, 103, 42,
261, 16, 175, 122, 174, 164, 112, 148, 24, 139, 276, 141, 204,
210, 69, 46, 63, 225, 270, 156, 223, 60, 51, 222, 91, 70,
236])

np.random.seed(666)使得随机数结果可复现

shuffle.shape

output: (300,)

train_size = 0.7
train_index = shuffle[:int(len(x) * train_size)]
test_index = shuffle[int(len(x) * train_size):]
train_index.shape, test_index.shape

output: ((210,), (90,))

x[train_index].shape, y[train_index].shape, x[test_index].shape, y[test_index].shape

output: ((210, 2), (210,), (90, 2), (90,))

def my_train_test_split(x, y, train_size = 0.7, random_state = None):if random_state:np.random.seed(random_state)shuffle = np.random.permutation(len(x))train_index = shuffle[:int(len(x) * train_size)]test_index = shuffle[int(len(x) * train_size):]return x[train_index], x[test_index], y[train_index], y[test_index]
x_train, x_test, y_train, y_test = my_train_test_split(x, y, train_size=0.7, random_state=233)
x_train.shape, x_test.shape, y_train.shape, y_test.shape

output: ((210, 2), (90, 2), (210,), (90,))

plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train, s=15)  # y_train一样的,颜色相同
plt.show()

在这里插入图片描述

plt.scatter(x_test[:, 0], x_test[:, 1], c=y_test, s=15)
plt.show()

在这里插入图片描述

使用sklearn内置的划分数据函数

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.7, random_state=233)
x_train.shape, x_test.shape, y_train.shape, y_test.shape

output: ((210, 2), (90, 2), (210,), (90,))

from collections import Counter
Counter(y_test)

output: Counter({2: 34, 0: 29, 1: 27})

x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.7, random_state=666, stratify=y)

stratify=y: 使用标签 y 进行分层采样,确保训练集和测试集中的类别分布相对一致。
这样做的好处是,在训练过程中,模型可以接触到各个类别的样本,从而更好地学习每个类别的特征和模式,提高模型的泛化能力。

Counter(y_test)

output: Counter({1: 30, 0: 30, 2: 30})

stratify=y理解举例

x = np.random.randn(1000, 2)  # 1000个样本,2个特征
y = np.concatenate([np.zeros(800), np.ones(200)])  # 800个负样本,200个正样本# 使用 stratify 进行分层采样
x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.7, random_state=42, stratify=y)# 打印训练集中正负样本的比例。通过使用 np.mean,我们可以方便地计算出比例或平均值,以了解数据集的分布情况或对模型性能进行评估。
print("训练集中正样本比例:", np.mean(y_train == 1))
print("训练集中负样本比例:", np.mean(y_train == 0))# 打印测试集中正负样本的比例
print("测试集中正样本比例:", np.mean(y_test == 1))
print("测试集中负样本比例:", np.mean(y_test == 0))

output:
训练集中正样本比例: 0.2
训练集中负样本比例: 0.8
测试集中正样本比例: 0.2
测试集中负样本比例: 0.8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/166562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java设计模式系列:单例设计模式

Java设计模式系列:单例设计模式 介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法) 比如 Hiberna…

leetcode:495. 提莫攻击

一、题目 链接&#xff1a;495. 提莫攻击 - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a;int findPoisonedDuration(int* timeSeries, int timeSeriesSize, int duration) 二、思路 遍历数组timeSeries&#xff0c;如果 元素值duration < 下一元素值 &#x…

OpenCV快速入门:图像分析——傅里叶变换、积分图像

文章目录 前言一、傅里叶变换1.1 离散傅里叶变换1.1.1 离散傅里叶变换原理1.1.2 离散傅里叶变换公式1.1.3 代码实现1.1.4 cv2.dft 函数解析 1.2 傅里叶变换进行卷积1.2.1 傅里叶变换卷积原理1.2.2 傅里叶变换卷积公式1.2.3 代码实现1.2.4 cv2.mulSpectrums 函数解析 1.3 离散余…

基于深度学习的文本分类

通过构建更复杂的深度学习模型可以提高分类的准确性&#xff0c;即分别基于TextCNN、TextRNN和TextRCNN三种算法实现中文文本分类。 项目地址&#xff1a;zz-zik/NLP-Application-and-Practice: 本项目将《自然语言处理与应用实战》原书中代码进行了实现&#xff0c;并在此基础…

Unity使用DOTween实现分段进度条

文章目录 需求下载安装 DOTween实现实现效果 需求 用组件进度条&#xff08;Slider&#xff09;&#xff0c;利用分段加载进行以假乱真的进度效果&#xff0c;比如说2秒钟到达20%的进度&#xff0c;10秒钟加载20%到50%进度&#xff0c;1分钟加载50%到90%的进度&#xff0c;30秒…

2023年金融信创行业研究报告

第一章 行业概况 1.1 定义 金融信创是指在金融行业中应用的信息技术&#xff0c;特别是那些涉及到金融IT基础设施、基础软件、应用软件和信息安全等方面的技术和产品。这一概念源于更广泛的“信创 (信息技术应用创新)”&#xff0c;即通过中国国产信息技术替换海外信息技术&a…

ELK企业级日志分析平台——logstash

部署 新建一台虚拟机elk4部署logstash [rootelk4 ~]# yum install -y jdk-11.0.15_linux-x64_bin.rpm[rootelk4 ~]# yum install -y logstash-7.6.1.rpm 命令方式 [rootelk4 bin]# /usr/share/logstash/bin/logstash -e input { stdin { } } output { stdout {} } elasticsearc…

使用骨传导耳机会伤耳朵吗?一文读懂骨传导耳机有哪些优点

首先说明&#xff0c;如果是正确的使用骨传导耳机是不会伤耳朵。 一、骨传导耳机的传声原理是什么&#xff1f; 声音的传播需要介质&#xff0c;传统的耳机是通过空气来进行传播&#xff0c;也被称为“空气传导耳机”&#xff0c;而骨传导耳机最大的特别之处就在于&#xff0…

DFS序和欧拉序的降维打击

1. DFS 序和时间戳 1.1 DFS 序 定义&#xff1a;树的每一个节点在深度优先遍历中进、出栈的时间序列。 如下树的 dfs 序就是[1,2,8,8,5,5,2,4,3,9,9,3,6,6,4,7,7,1]。 下图为生成DFS的过程。对于一棵树进行DFS序&#xff0c;除了进入当前节点时对此节点进行记录&#xff0c;…

多线程Thread(初阶二:Thread类及常⻅⽅法)

目录 一、Thread 的常⻅构造⽅法 继承Thread代码&#xff1a; 实现Runnable接口代码: 二、Thread 的⼏个常⻅属性 1、id&#xff1a; 2、获取线程的名字。 3、进程的状态&#xff1a; 4、在java中设置的优先级&#xff0c; 5、是否后台线程&#xff0c; 6、是否存活&a…

ubuntu22.04 arrch64版在线安装node

脚本 #安装node#下载node、npm国内镜像&#xff08;推荐&#xff09;# 判断是否安装了nodeif type -p node; thenecho "node has been installed."elsemkdir -p /home/zenglg cd /home/zenglgwget https://registry.npmmirror.com/-/binary/node/v10.14.1/node-v10.…

Linux系统编程 day04 文件和目录操作

Linux系统编程 day04 文件和目录操作 1. 文件IO1.1 open 函数1.2 close函数1.3 read函数1.4 write函数1.5 lseek函数1.6 errno变量1.7 文件示例1 读写文件1.8 文件示例2 文件大小的计算1.9 文件示例3 扩展文件大小1.10 文件示例4 perror函数的使用1.11 阻塞与非阻塞的测试 2. 文…

关于「光学神经网络」的一切:理论、应用与发展

/目录/ 一、线性运算的光学实现 1.1. 光学矩阵乘法器 1.2. 光的衍射实现线性运行 1.3. 基于Rayleigh-Sommerfeld方程的实现方法 1.4. 基于傅立叶变换的实现 1.5. 通过光干涉实现线性操作 1.6. 光的散射实现线性运行 1.7. 波分复用&#xff08;WDM&#xff09;实现线性运…

脉冲幅度调制信号的功率谱计算

本篇文章是博主在通信等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在通信领域笔记&#xf…

风口下的危与机:如何抓住生成式AI黄金发展期?

回顾AI的发展历程&#xff0c;我们见证过几次重大突破&#xff0c;比如2012年ImageNet大赛的图像识别&#xff0c;2016年AlphaGo与李世石的围棋对决&#xff0c;这些进展都为AI的普及应用铺设了道路。而ChatGPT的出现&#xff0c;真正让AI作为一个通用的产品&#xff0c;走入大…

Linux | 创建 | 删除 | 查看 | 基本命名详解

Linux | 创建 | 删除 | 查看 | 基本命名详解 文章目录 Linux | 创建 | 删除 | 查看 | 基本命名详解前言一、安装Linux1.1 方法一&#xff1a;云服务器方式1.2 方法二&#xff1a;虚拟机方式 二、ls2.2 ll 三、which3.1 ls -ld 四、pwd五、cd5.1 cd .\.5.2 ls -al5.3 重新认识命…

程序员兼职需要收藏的防坑技巧

不管你是刚刚上车的新职员&#xff0c;还是职场经营多年的老手&#xff0c;在零散时间&#xff0c;通过兼职搞一点零花钱&#xff0c;充实一下自己的生活&#xff0c;这是在正常不过的事情&#xff0c;但是很多同学害怕兼职有风险&#xff0c;被骗或者说找不到门路&#xff0c;…

优思学院|质量工程师在汽车行业待遇好吗?

优思学院认为质量工程师在汽车行业的待遇有可能相对较好的。随着中国汽车品牌在国内市场的崛起&#xff0c;特别是在电动汽车领域的增长&#xff0c;质量工程师在保障产品质量和安全性方面变得非常重要。由于中国汽车制造商对产品质量的高度重视&#xff0c;质量工程师在制定和…

AC自动机(简单模板)

AC自动机&#xff0c;就相当于是在字典树上用kmp。next数组回退的位置为最大匹配字符串在字典树上的节点位置。 在获取字典树上的next数组的时候用的是BFS每次相当与处理的一层。 下图中红线为&#xff0c;可以回退的位置&#xff0c;没有红线的节点回退的位置都是虚拟原点。…

基于C#实现线段树

一、线段树 线段树又称"区间树”&#xff0c;在每个节点上保存一个区间&#xff0c;当然区间的划分采用折半的思想&#xff0c;叶子节点只保存一个值&#xff0c;也叫单元节点&#xff0c;所以最终的构造就是一个平衡的二叉树&#xff0c;拥有 CURD 的 O(lgN)的时间。 从…