当前位置: 首页 > news >正文

机器学习:BootStrapping(Python)

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 snswdbc = 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))

相关文章:

  • 【大数据】Flink 测试利器:DataGen
  • element-ui 打包流程源码解析(下)
  • 2018年认证杯SPSSPRO杯数学建模B题(第二阶段)动态模糊图像全过程文档及程序
  • 怿星科技测试实验室获CNAS实验室认可,汽车以太网检测能力达国际标准
  • 腾讯云MPS为出海媒体企业助力
  • 《TrollStore巨魔商店》TrollStore2安装使用教程支持IOS14.0-16.6.1
  • Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例
  • Conmi的正确答案——使用eclipse进行ESP32C3的debug
  • C#学习笔记3-函数与单元测试
  • 查询数据库表字段具有某些特征的表
  • 【工作周志】240108-240114
  • 系统配置dns主从服务器
  • 使用 Python 创造你自己的计算机游戏(游戏编程快速上手)第四版:第十九章到第二十一章
  • 16位单片机单片机S1C17153
  • 低代码开发:解锁数字化转型新维度
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Angularjs之国际化
  • create-react-app做的留言板
  • ES6系统学习----从Apollo Client看解构赋值
  • LeetCode29.两数相除 JavaScript
  • MySQL-事务管理(基础)
  • PAT A1050
  • Spark学习笔记之相关记录
  • SSH 免密登录
  • tweak 支持第三方库
  • Vue组件定义
  • Vultr 教程目录
  • 浮现式设计
  • 力扣(LeetCode)21
  • 世界上最简单的无等待算法(getAndIncrement)
  • 问题之ssh中Host key verification failed的解决
  • Python 之网络式编程
  • ​iOS安全加固方法及实现
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​人工智能书单(数学基础篇)
  • !!java web学习笔记(一到五)
  • ###项目技术发展史
  • $.each()与$(selector).each()
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (C语言)字符分类函数
  • (SpringBoot)第二章:Spring创建和使用
  • (搬运以学习)flask 上下文的实现
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .gitignore文件—git忽略文件
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net 高效开发之不可错过的实用工具
  • .net6Api后台+uniapp导出Excel
  • .NET处理HTTP请求
  • .net生成的类,跨工程调用显示注释
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually