机器学习:BootStrapping(Python)

news2025/2/26 17:52:34
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.decomposition import PCA  # 主成分分析
from sklearn.preprocessing import LabelEncoder, StandardScaler  # 类别标签编码,标准化处理
import matplotlib.pyplot as plt
from sklearn.metrics import accuracy_score   # 分类报告,正确率
import seaborn as sns

wdbc = pd.read_csv("breast+cancer+wisconsin+diagnostic/wdbc.data", header=None)
X, y = wdbc.loc[:, 2:].values, wdbc.loc[:, 1]  # 提取特征数据和样本标签集
X = StandardScaler().fit_transform(X)  # 对样本特征数据进行标准化
lab_en = LabelEncoder()  # 对目标值进行编码,创建对象
y = lab_en.fit_transform(y)  # 拟合和转换
lab_en.classes_, lab_en.transform(["B", "M"])
pca = PCA(n_components=6).fit(X)  # 选取6个主成分, 30维-->6维,信息损失了约11%
X_pca = pca.transform(X)
def bootstrapping(m):
    """
    自助法
    :param m:
    :return:
    """
    bootstrap = []  # 存储每次采样的样本索引编号
    for i in range(m):
        bootstrap.append(np.random.randint(0, m, 1))    # 随机产生一个样本的索引编号
    return np.asarray(bootstrap).reshape(-1)

print("样本总体正例与反例的比:%d : %d = %.2f" % (len(y[y == 0]), len(y[y == 1]), len(y[y == 0])/len(y[y == 1])))

n_samples = X_pca.shape[0]  # 样本量
ratio_bs = []   # 存储每次未划分到训练集中的样本比例
for i in range(15000):
    train_idx = bootstrapping(n_samples)    # 一次自助采样获得训练集样本索引
    idx_all = np.linspace(0, n_samples - 1, n_samples, dtype=np.int64)  # 总体样本的索引编号
    test_idx = np.setdiff1d(idx_all, train_idx)     # 测试样本的索引编号
    ratio_bs.append(len(test_idx) / n_samples)      # 测试样本占所有样本的比例

y_train = y[train_idx]  #其中一次自助采样后的训练样本目标集
print("抽样后,正例与反例的比例:%.5f" % (len(y_train[y_train == 0]) / len(y_train[y_train == 1])))
print("自主采样后,未出现在训练集中的数据比例:%.5f" % np.mean(ratio_bs))   # 15000次自助采样的均值


sns.displot(ratio_bs, kind="hist", color="purple")
plt.show()

X_train, y_train = X_pca[train_idx, :], y[train_idx]
X_test, y_test = X_pca[train_idx, :], y[train_idx]

KNeighborsClassifier()
knn = KNeighborsClassifier(n_neighbors=9)
knn.fit(X_train, y_train)
y_test_pred = knn.predict(X_test)
print("Test score is %.5f" % accuracy_score(y_test, y_test_pred))

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

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

相关文章

uniapp组件库SwipeAction 滑动操作 使用方法

目录 #平台差异说明 #基本使用 #修改按钮样式 #点击事件 #API #Props #Event 该组件一般用于左滑唤出操作菜单的场景,用的最多的是左滑删除操作。 注意 如果把该组件通过v-for用于左滑删除的列表,请保证循环的:key是一个唯一值,可以…

k8s 使用tomcat官方镜像部署集群并解决访问页面404

一、集群节点配置: master:192.168.206.138 k8s-node1:192.168.206.136 k8s-node2:192.168.206.137 二、下载一个Tomcat镜像 docker pull tomcat docker images | grep tomcat docker tag docker.io/tomcat tomcat 三、根据官方镜像自己构建一个一次性就能启动的…

怎样的安全数据交换系统 可以支持信创环境?

首先,我来看看,什么是安全数据交换系统?安全数据交换系统是一种专门设计用于在不同网络环境之间安全传输数据的技术解决方案。它确保数据在传输过程中的完整性、机密性和可用性,同时遵守相关的数据保护法规和行业标准。 那么&…

笔试面试题——二叉树进阶(一)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、根据二叉树创建字符串1、题目讲解2、思路讲解3、代码实现 二、二叉树的分层遍历1、题目讲…

docker使用http_proxy配置代理

钢铁知识库,一个学习python爬虫、数据分析的知识库。人生苦短,快用python。 在内网服务器中,docker经常需要下载拉取镜像,但由于没有网络要么只能手动导入镜像包,又或者通过http_proxy代理到其它服务器下载。 解决方法…

17.用户身份与能力

Linux系统的管理员之所以是root,并不是因为它的名字叫root,而是因为该用户的身 份号码即UID(User IDentification)的数值为 0。在 Linux 系统中,UID就像我们的身份证号 码一样具有唯一性,因此可通过用户的U…

【蓝桥杯冲冲冲】动态规划初步[USACO2006 OPEN] 县集市

蓝桥杯备赛 | 洛谷做题打卡day13 文章目录 蓝桥杯备赛 | 洛谷做题打卡day13题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示样例说明数据规模与约定 思路:方程: 题解代码我的一些话 [USACO2006 OPEN] 县集市 The County Fair 题目描述 每年…

蓝桥杯官网填空题(奇怪的分式)

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:1/4乘以8/5 小明居然把分子拼接在一起,分母拼接在一起&…

66K star!想画出高颜值的流程图,试试这个手绘风开源白板

工作中总是少不了要画画图,不管是开发中绘制流程图,还是设计系统时画出架构图,一款趁手的工具总是少不了。今天我们就来聊聊画图的白板工具。 今天我们推荐的推荐的项目帮你画出手绘风的高颜值图表,目前在GitHub已超过66K Star&a…

美团RASP大规模研发部署实践总结

01 背景 RASP 是 Runtime Application Self-Protection(运行时应用自我保护)的缩写,是一种应用程序安全技术。RASP 技术能够在应用程序运行时检测并阻止应用级别的攻击。随着云计算和大数据的发展,应用程序安全越来越受到重视。其…

Postgresql的集群搭建与监控方案

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 相关文章: PostgreSQL学习之部署与简单使用 PostgreSQL的常见错误和解决方法 如果PostgreSQL有两层nginx代理&…

vue+elementui实现12个日历平铺,初始化工作日,并且可点击

<template><div class"app-container"><el-form :model"queryParams" ref"queryForm" size"small" :inline"true"><el-form-item label"年份" prop"holidayYear"><el-date-…

SQL 注入总结(详细)

一、前言 这篇文章是最近学习 SQL 注入后的笔记&#xff0c;里面整理了 SQL 常见的注入方式&#xff0c;供大家学习了解 SQL 注入的原理及方法&#xff0c;也方便后续自己回顾&#xff0c;如有什么错误的地方欢迎指出&#xff01; 二、判断注入类型 按照注入点类型分类 数字型…

精品基于Uniapp+springboot疫情资讯信息管理系统App-新闻

《[含文档PPT源码等]精品基于Uniappspringboot疫情信息管理系统App》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 后台框架&#xff1a;springboot、ssm …

峰华卓立:iPaaS集成平台,全面加速推进企业数智化建设

01 企业介绍 峰华卓立&#xff08;证券代码&#xff1a;834914&#xff09;是一家聚焦于3DP&#xff08;粘结剂喷射技术&#xff09;打印装备的研发、制造、销售及应用服务为一体的综合性服务供应商&#xff0c;国家高新技术企业&#xff0c;行业专精特新企业&#xff0c;工业级…

JAVA RPC Thrift基操实现与微服务间调用

一、Thrift 基操实现 1.1 thrift文件 namespace java com.zn.opit.thrift.helloworldservice HelloWorldService {string sayHello(1:string username) }1.2 执行命令生成Java文件 thrift -r --gen java helloworld.thrift生成代码HelloWorldService接口如下 /*** Autogene…

进程内协同:原子操作、互斥、同步和通信的原理

进程内协同&#xff0c;简单来说&#xff0c;就是在一个进程内部&#xff0c;多个执行体&#xff08;如线程、协程&#xff09;如何共享资源&#xff0c;如何协同工作以完成一项任务。这涉及到一系列的机制和技术&#xff0c;包括原子操作、互斥、同步和通信等。 那么&#xf…

Opencv轮廓检测运用与理解

目录 引入 基本理解 加深理解 ①比如我们可以获取我们的第一个轮廓,只展示第一个轮廓 ②我们还可以用一个矩形把我们的轮廓给框出来 ③计算轮廓的周长和面积 引入 顾名思义,就是把我们图片的轮廓全部都描边出来 也就是我们在日常生活中面部识别的时候会有一个框,那玩意就…

C语言实战系列一:经典贪食蛇

C语言学习必须实战&#xff0c;并且学完语法后就必须立即用实战来巩固。一般需要10来个比较复杂的程序才能掌握C语言。今天就教大家第一个小程序&#xff0c;贪食蛇。 首先上代码 一、代码 #include <stdio.h> #include <stdlib.h> #include <curses.h> #…

windows用mingw(g++)编译opencv,并install安装

windows下用mingw编译opencv貌似不支持cuda&#xff0c;选cuda会报错&#xff0c;我无法解决&#xff0c;所以没选cuda&#xff0c;下面两种编译方式支持。 如要用msvc编译opencv&#xff0c;参考我另外一篇文章。 如要用Ubuntu编译opencv&#xff0c;参考我另外一篇文章http…