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

深入理解PCA降维:原理、实现与应用

1. 引言

       在机器学习与数据科学领域,我们经常会遇到高维数据带来的"维度灾难"问题。随着特征数量的增加,数据稀疏性、计算复杂度等问题会显著加剧。主成分分析(PCA, Principal Component Analysis)作为一种经典的降维技术,能够有效解决这一问题。本文将全面介绍PCA的原理、数学基础、实现方法以及实际应用。

 2. 概念

2.1 PCA的定义

       PCA是一种通过线性变换将高维数据投影到低维空间的统计方法,其核心思想是在保留数据主要特征的同时降低数据维度。PCA通过找到数据方差最大的方向(主成分)来实现这一目标。

2.2 PCA的应用场景

- 数据可视化:将高维数据降至2D/3D便于可视化
- 特征提取:减少特征数量,提高模型效率

 3. 原理

3.1 向量内积

内积:

A与B内积:

3.2 基与基变换

基也称基底,是描述向量空间的基本工具。任意两个线性无关的二维向量都可以作为一组基底。

定义一组新的基底 y1 、y2,并将坐标点(3,2)映射到新的基底中,如下所示:

几何坐标如下所示:

将其推广到多维,如下所示:

从抽象角度来说来说,基变换就是将一个坐标映射到另一组基底中,而因此产生的线性变换。

3.3 选择最优基

       为了找到最优的基底,我们要寻找到一组基,使得所有的点映射后,所产生的方差最大。代表着点越离散,丢失的点越少。(对于二维降到一维来说)

方差:

       而对于三维降到二维,仅仅一个基底是不够用的,我们需要找到两个线性无关的基。通过协方差找到最优一组基。

协方差:

        协方差为0时,两个字段完全独立。而我们利用这一特性来找到另一组基,因此两个基一定是正交的。 

推广:

将一组N维向量将为K维,则需要选择K个单位正交基,各字段的协方差为0,字段本身方差尽可能大。

协方差矩阵:

方差:

协方差:

3.4 协方差矩阵对角化

       基于上述思路,我们可以知道,想要找到最优基,就是找到一组除主对角线以外全为0的对角矩阵。因此,我们对协方差矩阵进行对角化。(协方差矩阵为实对称矩阵,一定可以相似对角化)。

     对角化的原理即求特征值与特征向量。即:      = 0  。求出特征值后,带回原矩阵,求出特征向量。单位后,则求出最优基。

4. 代码

导入相关库,读取数据,并将特征与标签分离:

import pandas as pd
import numpy as np
from sklearn.decomposition import PCA#导入数据
datas=pd.read_excel('电信客户流失数据.xlsx')
data=datas.iloc[:,:-1]
target=datas.iloc[:,-1]

重新划分训练集与测试集

from sklearn.model_selection import train_test_split
data_train,data_test,target_train,target_test=\train_test_split(data,target,test_size=0.2,random_state=20)

寻找随机森林的最优深度:

from sklearn.model_selection import train_test_split, cross_val_score
scores = []
depth_param_range = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
for i in depth_param_range:dtr = tree.DecisionTreeClassifier(criterion='gini',max_depth=i,random_state=42)score = cross_val_score(dtr,data_train,target_train, cv=6, scoring='recall')score_mean = sum(score) / len(score)scores.append(score_mean)# print(f"当depth={i}时,召回率 Recall为: {score_mean}")best_c = depth_param_range[np.argmax(scores)]
print(f"最优解深度为: {best_c}")

用随机森林算法训练数据:

dtr = tree.DecisionTreeClassifier(criterion='gini',max_depth=best_c,random_state=42)
dtr.fit(data_train,target_train)

测试模型训练效果:

from sklearn import metricstrain_predicted=dtr.predict(data_train)
print(metrics.classification_report(target_train,train_predicted))
# cm_plot(target_train,train_predicted).show()test_predicted=dtr.predict(data_test)
print(metrics.classification_report(target_test,test_predicted))
# cm_plot(target_test,test_predicted).show()
dtr.score(data_test,target_test)print(dtr.score(data_test,target_test))

结果如下:

PCA降维:创建PCA对象,并拟合模型

pca = PCA(n_components=0.9)  # 初始化 PCA,保留 90% 的原始数据方差
pca.fit(data)  # 在整个数据集(data)上拟合 PCA(计算主成分)# 打印 PCA 解释的方差信息
print('特征所占百分比:{}'.format(sum(pca.explained_variance_ratio_)))  # 累计方差占比(应≈90%)
print(pca.explained_variance_ratio_)  # 每个主成分的方差贡献率

对数据降维后重新训练并评估:

new_x_train = pca.transform(data_train)  # 对训练集降维
dtr.fit(new_x_train, target_train)  # 用降维后的训练数据训练决策树# 在训练集上预测并评估
new_x_train_predicted = dtr.predict(new_x_train)
print(metrics.classification_report(target_train, new_x_train_predicted))  # 分类报告(精确率、召回率、F1等)
print(dtr.score(new_x_train, target_train))  # 准确率(Accuracy)

对测试集也进行降维,并预测评估:

new_x_test = pca.transform(data_test)  # 对测试集降维new_x_test_predicted = dtr.predict(new_x_test)  # 预测测试集
print(metrics.classification_report(target_test, new_x_test_predicted))  # 测试集分类报告
print(dtr.score(new_x_test, target_test))  # 测试集准确率

运行结果如下:

完整代码如下:

import pandas as pd
import numpy as np
from sklearn.decomposition import PCA#导入数据
datas=pd.read_excel('电信客户流失数据.xlsx')
data=datas.iloc[:,:-1]
target=datas.iloc[:,-1]from sklearn.model_selection import train_test_split
data_train,data_test,target_train,target_test=\train_test_split(data,target,test_size=0.2,random_state=20)from sklearn import tree# dtr = tree.DecisionTreeClassifier(criterion='gini',max_depth=None,random_state=42)
# dtr.fit(data_train,target_train)from sklearn.model_selection import train_test_split, cross_val_score
scores = []
depth_param_range = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
for i in depth_param_range:dtr = tree.DecisionTreeClassifier(criterion='gini',max_depth=i,random_state=42)score = cross_val_score(dtr,data_train,target_train, cv=6, scoring='recall')score_mean = sum(score) / len(score)scores.append(score_mean)# print(f"当depth={i}时,召回率 Recall为: {score_mean}")best_c = depth_param_range[np.argmax(scores)]
print(f"最优解深度为: {best_c}")dtr = tree.DecisionTreeClassifier(criterion='gini',max_depth=best_c,random_state=42)
dtr.fit(data_train,target_train)from sklearn import metricstrain_predicted=dtr.predict(data_train)
print(metrics.classification_report(target_train,train_predicted))
# cm_plot(target_train,train_predicted).show()test_predicted=dtr.predict(data_test)
print(metrics.classification_report(target_test,test_predicted))
# cm_plot(target_test,test_predicted).show()
print(dtr.score(data_test,target_test))pca=PCA(n_components=0.9)
pca.fit(data)print('特征所占百分比:{}'.format(sum(pca.explained_variance_ratio_)))
print(pca.explained_variance_ratio_)new_x_train=pca.transform(data_train)
dtr.fit(new_x_train,target_train)new_x_train_predicted=dtr.predict(new_x_train)
print(metrics.classification_report(target_train,new_x_train_predicted))
print(dtr.score(new_x_train,target_train))new_x_test=pca.transform(data_test)new_x_test_predicted=dtr.predict(new_x_test)
print(metrics.classification_report(target_test,new_x_test_predicted))
print(dtr.score(new_x_test,target_test))

5. 结论

        PCA是一种强大而灵活的降维工具,在数据预处理、特征工程和探索性数据分析中有着广泛应用。理解PCA的数学原理有助于更好地调参和解释结果。虽然PCA有一些局限性,但通过核技巧、稀疏约束等扩展方法,可以适应更复杂的应用场景。

相关文章:

深入理解PCA降维:原理、实现与应用

1. 引言 在机器学习与数据科学领域,我们经常会遇到高维数据带来的"维度灾难"问题。随着特征数量的增加,数据稀疏性、计算复杂度等问题会显著加剧。主成分分析(PCA, Principal Component Analysis)作为一种经典的降维技术,能够有效解…...

AI重构农业:从“面朝黄土“到“数字原野“的产业跃迁—读中共中央 国务院印发《加快建设农业强国规划(2024-2035年)》

在东北黑土地的万亩良田上,无人机编队正在执行精准施肥作业;在山东寿光的智慧大棚里,传感器网络实时调控着番茄生长的微环境;在云南的咖啡种植园中,区块链溯源系统记录着每粒咖啡豆的旅程。这场静默的农业革命&#xf…...

当前主流的LLM Agent架构、能力、生态和挑战

一、LLM Agent的基本架构 尽管LLM Agent的具体实现五花八门,但大部分系统在架构层面上可以归纳为以下几个关键模块: 感知(Perception) Agent需要感知外界的信息。对于文本环境,感知往往是读取输入(如用户指…...

网站缓存怎么检查是否生效?

为何选择CDN缓存技术? 部署内容缓存系统可有效提升网页响应效率,降低服务器资源占用与流量消耗,改善访客交互体验,强化系统架构容错能力,促进搜索引擎优化效果,达成资源分配与运行效能的动态平衡。 科学配…...

​‌Qt的稳定版本与下载

​‌Qt的稳定版本主要包括Qt5和Qt6的长期支持(LTS)版本‌。以下是详细的版本信息: Qt5的稳定版本 ‌Qt5.6 LTS‌:2016年3月15日发布,是一个长期支持版本。 ‌Qt5.9 LTS‌:2017年6月16日发布,也…...

用 OpenCV 给图像 “挑挑拣拣”,找出关键信息!

目录 一、背景 二、OpenCV 关键词提取基础概念 什么是关键词提取 OpenCV 在关键词提取中的作用 三、OpenCV 关键词提取的流程 整体流程概述 详细步骤及作用 流程图 四、OpenCV 关键词提取的代码实现 环境准备 代码演示 代码说明 五、常见问题及解决方法 特征提取不…...

14-Hugging Face 模型微调训练(基于 BERT 的中文评价情感分析(二分类))

1. datasets 库核心方法 1.1. 列出数据集 使用 datasets 库,你可以轻松列出所有 Hugging Face 平台上的数据集: from datasets import list_datasets # 列出所有数据集 all_datasets list_datasets() print(all_datasets)1.2. 加载数据集 你可以通过…...

php-cgi参数注入攻击经历浅谈

起因: 阿里云服务器再次警告出现挖矿程序。上一次服务器被攻击后,怕有恶意程序残留,第一时间重装了系统,也没有详查攻击入口。不过事后还是做了一些防范,这台留作公网访问的服务器上并未保留业务数据,只作…...

istio流量治理——重试

Istio 的重试功能的底层原理主要依赖于其数据平面组件 Envoy 代理(Sidecar 或 Gateway)的实现。Envoy 是一个高性能的代理服务器,负责处理所有流入和流出的流量,并在 Istio 的服务网格中执行流量管理策略,包括重试逻辑…...

Spring Cloud之服务入口Gateway之Route Predicate Factories

目录 Route Predicate Factories Predicate 实现Predicate接口 测试运行 Predicate的其它实现方法 匿名内部类 lambda表达式 Predicate的其它方法 源码详解 代码示例 Route Predicate Factories The After Route Predicate Factory The Before Route Predicate Fac…...

测试分类篇

文章目录 目录1. 为什么要对软件测试进行分类2. 按照测试目标分类2.1 界面测试2.2 功能测试2.3 性能测试2.4 可靠性测试2.5 安全性测试2.6 易用性测试 3. 按照执行方式分类3.1 静态测试3.2 动态测试 4. 按照测试方法分类4.1 白盒测试4.1.1 语句覆盖4.1.2 判定覆盖4.1.3 条件覆盖…...

Django接入 免费的 AI 大模型——讯飞星火(2025年4月最新!!!)

上文有介绍deepseek接入,但是需要 付费,虽然 sliconflow 可以白嫖 token,但是毕竟是有限的,本文将介绍一款完全免费的 API——讯飞星火 目录 接入讯飞星火(免费) 测试对话 接入Django 扩展建议 接入讯飞星火…...

使用NVM下载Node.js管理多版本

提示:我解决这个bug跟别人思路可能不太一样,因为我是之前好用,换个项目就不好使了,倦了 文章目录 前言项目场景一项目场景二解决方案:下载 nvm安装 nvm重新下载所需Node 版本nvm常用命令 项目结构说明 前言 提示&…...

下载安装Node.js及其他环境

提示:从Node版本降级到Vue项目运行 文章目录 下载Node.js环境配置配置环境变量 安装 cnpm(我需要安装)安装脚手架安装依赖安装淘宝镜像(注意会更新)cnpm vs npm 与新旧版本核心差异包管理器不同功能差异如何选择&#…...

Java 基础-31-枚举-认识枚举

在Java编程语言中,枚举(Enum)是一种特殊的类,它允许一组固定的常量。它们非常适合用来表示一组固定的值,比如星期几、季节、颜色等。枚举自Java 5开始引入,为定义常量提供了一种更强大和方便的方式。本文将…...

问题1:Sinal 4在开启PAC检查的设备崩溃

​ 问题信息 硬件不支持PAC(Pointer Authentication),此类错误就是signal 11的错误,崩溃信息如下: Build fingerprint: google/sdk_gphone64_arm64/emu64a:16/BP22.250221.010/13193326:userdebug/dev-keys Revision: 0 ABI: arm64 Timestamp: 2025-04-06 11:33:13.923…...

美团Leaf分布式ID生成器:雪花算法原理与应用

📖 前言 在分布式系统中,全局唯一ID生成是保证数据一致性的核心技术之一。传统方案(如数据库自增ID、UUID)存在性能瓶颈或无序性问题,而美团开源的Leaf框架提供了高可用、高性能的分布式ID解决方案。本文重点解析Leaf…...

【C++奇遇记】C++中的进阶知识(多态(一))

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 数据库专栏 初阶数据结构 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如…...

C++自学笔记---指针在数组遍历中的应用

指针在数组遍历中的应用 在这一篇文章中&#xff0c;我们可以看到指针在数组遍历中的具体应用例子。 1. 赋值 我们要创建一个将数组的所有元素赋值为 1 的函数&#xff0c;并使用解引用运算符来访问数组元素. 代码为&#xff1a; #include <iostream> using namespac…...

Java八股文-List集合

集合的底层是否加锁也就代表是否线程安全 (一)List集合 一、数组 array[1]是如何通过索引找到堆内存中对应的这块数据的呢? (1)数组如何获取其他元素的地址值 (2)为什么数组的索引是从0开始的&#xff0c;不可以从1开始吗 (3)操作数组的时间复杂度 ①查找 根据索引查询 未…...

二叉树——队列bfs专题

1.N叉树的层序遍历 我们之前遇到过二叉树的层序遍历&#xff0c;只需要用队列先进先出的特性就可以达到层序遍历的目的。 而这里不是二叉树&#xff0c;也就是说让节点的孩子入队列时不仅仅是左右孩子了&#xff0c;而是它的所有孩子。而我们看这棵多叉树的构造&#xff0c;它…...

ESPIDF备忘

ESP8266 环境搭建 Windows 首先确保安装好了vscode和git 在工作目录使用git 克隆这个 git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git下载 集成环境和 ESP8266编译工具 旧版本的集成工具可能有问题 这里用20200601版本的 https://dl.espressif.co…...

4-c语言中的数据类型

一.C 语⾔中的常量 1.生活中的数据 整数&#xff1a; 100,200,300,400,500 小数: 11.11 22.22 33.33 字母&#xff1a; a&#xff0c;b&#xff0c;c&#xff0c;d A&#xff0c;B&#xff0c;C&#xff0c;D 在 C 语⾔中我们把字⺟叫做字符. 字符⽤单引号引⽤。例如A’ 单词…...

ST 芯片架构全景速览:MCU、无线 SoC、BLE 模块、MPU 差异详解

在嵌入式开发中,ST 是一个非常常见的芯片厂商,其产品线覆盖了 MCU、无线芯片、BLE 模块以及运行 Linux 的 MPU 等多个领域。很多开发者初次接触 ST 时会对这些产品之间的关系感到困惑。 本文从分类视角出发,带你快速了解 ST 芯片家族的核心架构和主要用途。 🧭 ST 芯片四…...

第十章Python语言高阶加强-SQL(数据库)

目录 一.数据库介绍 二.MySQL的安装 三.MySQL入门使用 四.SQL基础和DDL 五.SQL—DML 六.SQL—DQL 1.基础查询 2.分组聚合 七.Python操作MySQL 1.基础使用 2.数据插入 此章节主要掌握并且了解SQL语法和基础使用。如&#xff1a;安装、增删改查&#xff0c;SQL在未来我…...

NO.71十六届蓝桥杯备战|搜索算法-递归型枚举与回溯剪枝|枚举子集|组合型枚举|枚举排列|全排列问题(C++)

什么是搜索&#xff1f; 搜索&#xff0c;是⼀种枚举&#xff0c;通过穷举所有的情况来找到最优解&#xff0c;或者统计合法解的个数。因此&#xff0c;搜索有时候也叫作暴搜。 搜索⼀般分为深度优先搜索(DFS)与宽度优先搜索(BFS)。深度优先遍历vs深度优先搜索&#xff0c;宽度…...

C++ 中为什么构造函数不需要实现虚函数,而析构函数需要?

在C中&#xff0c;构造函数不需要是虚函数&#xff0c;而析构函数往往需要&#xff0c;原因如下&#xff1a; 构造函数 对象创建顺序&#xff1a;构造函数的主要任务是初始化对象的成员变量&#xff0c;创建对象时需要先调用基类的构造函数&#xff0c;再调用派生类的构造函数…...

如何获取oracle cloud永久免费的vps(4C/24G)?

1.注册oracle cloud账号 Oracle Cloud 免费套餐 | Oracle 中国 新注册的小伙伴&#xff0c;可以在 30 天内&#xff0c;利用 300 美元免费储值&#xff0c;任性使用所有 Oracle Cloud 基础设施服务。 30 天后呢&#xff1f;你仍然可以畅享 Always Free 免费套餐中的云服务&am…...

TypeScript面试题集合【初级、中级、高级】

初级面试题 什么是TypeScript&#xff1f; TypeScript是JavaScript的超集&#xff0c;由Microsoft开发&#xff0c;它添加了可选的静态类型和基于类的面向对象编程。TypeScript旨在解决JavaScript的某些局限性&#xff0c;比如缺乏静态类型和基于类的面向对象编程&#xff0c…...

java面试篇 并发编程篇

目录 1.线程的基础知识 1.线程与进程的区别&#xff1f; 2.并行与并发的区别&#xff1f; 3.创建线程的方式有哪些&#xff1f; 4.线程包括哪些状态&#xff1f;状态之间是如何变化的&#xff1f; 5.T1&#xff0c;T2&#xff0c;T3三个线程新建完毕后&#xff0c;如何保证…...

掌握 JSON 到表格转换:全面指南

高效地转换数据格式对于现代数据处理至关重要。JSON&#xff08;JavaScript 对象表示法&#xff09;因其灵活性而广受欢迎&#xff0c;而 CSV 或 Excel 等表格格式则更适用于数据分析和可视化。本文将介绍多种 JSON 转换为表格格式的方法&#xff0c;帮助您提升数据处理和可视化…...

【Spring Cloud Netflix】GateWay服务网关

1.基本概述 GateWay用于在微服务架构中提供统一的入口点&#xff0c;对请求进行路由&#xff0c;过滤和处理。它就像是整个微服务系统的大门&#xff0c;所有外部请求都要通过它才能访问到后端的各个微服务。 2.核心概念 2.1路由(Route) 路由是Spring Cloud gateWay中最基本…...

国产芯片解析:龙讯USB Type-C/DP Transmitter多场景覆盖,定义高速互联新标杆

在智能设备功能日益复杂化的今天&#xff0c;高速数据传输、高清视频输出与多功能接口融合已成为行业刚需。龙讯半导体&#xff08;Lontium&#xff09;凭借其领先的芯片设计能力&#xff0c;推出多款‌USB Type-C/DP Transmitter芯片‌&#xff0c;覆盖从消费电子到工业应用的…...

蓝桥杯 web 展开你的扇子(css3)

普通答案&#xff1a; #box:hover #item1{transform: rotate(-60deg); } #box:hover #item2{transform: rotate(-50deg); } #box:hover #item3{transform: rotate(-40deg); } #box:hover #item4{transform: rotate(-30deg); } #box:hover #item5{transform: rotate(-20deg); }…...

【Kubernetes】StorageClass 的作用是什么?如何实现动态存储供应?

StorageClass 使得用户能够根据不同的存储需求动态地申请和管理存储资源。 StorageClass 定义了如何创建存储资源&#xff0c;并指定了存储供应的配置&#xff0c;例如存储类型、质量、访问模式等。为动态存储供应提供了基础&#xff0c;使得 Kubernetes 可以在用户创建 PVC 时…...

4月7号.

双列集合的特点: Map中的常见API: //1.创建Map集合的对象 Map<String, String> m new HashMap<>();//2.添加元素 Stringvalue1 m.put("郭靖","黄蓉"); System.out.println(value1); m.put("韦小宝","沐剑屏"); m.put(&q…...

C++抽卡模拟器

近日在学校无聊&#xff0c;写了个抽卡模拟器供大家娱乐。 代码实现以下功能&#xff1a;抽卡界面&#xff0c;抽卡判定、动画播放、存档。 1.抽卡界面及判定 技术有限&#xff0c;不可能做的和原神一样精致。代码如下&#xff08;注&#xff1a;这不是完整代码&#xff0c;…...

蓝桥杯 2. 开赛主题曲【算法赛】

2.开赛主题曲【算法赛】 - 蓝桥云课 这道题和3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09;类似&#xff0c;因为题目中规定只有小写字母&#xff0c;所以定义统计数组时只需要定义26个字母即可&#xff0c;然后每次遍历的字符减去‘a’即为他的下标 impo…...

Spring Boot 中的 Bean

2025/4/6 向全栈工程师迈进&#xff01; 一、Bean的扫描 在之前&#xff0c;对于Bean的扫描&#xff0c;我们可以在XML文件中书写标签&#xff0c;来指定要扫描的包路径&#xff0c;如下所示,可以实通过如下标签的方式&#xff1a; <context:component-scan base-package&…...

基于springboot科研论文检索系统的设计(源码+lw+部署文档+讲解),源码可白嫖!

摘要 随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决生活上的问题&#xff0c;线上管理系统展现了其蓬勃生命力和广阔的前景。与此同时&#xff0c;在此…...

Mysql入门

一、数据库三层结构 所谓安装Mysql数据库&#xff0c;就是在主机安装一个数据库管理系统(DBMS)&#xff0c;这个管理程序可以管理多个数据库。DBMS(database manage system)一个数据库中可以创建多个表&#xff0c;以保存数据(信息)。数据库管理系统(DBMS)、数据库和表的关系如…...

如何解决uniapp打包安卓只出现功能栏而无数据的问题

如何解决uniapp打包安卓只出现功能栏而无数据的问题 经验来自&#xff1a;关于Vue3中调试APP触发异常&#xff1a;exception:white screen cause create instanceContext failed,check js stack -> at useStore (app-service.js:2309:15)解决方案 - 甲辰哥来帮你算命 - 博客…...

Python高级爬虫之JS逆向+安卓逆向1.1节-搭建Python开发环境

目录 引言&#xff1a; 1.1.1 为什么要安装Python? 1.1.2 下载Python解释器 1.1.3 安装Python解释器 1.1.4 测试是否安装成功 1.1.5 跟大神学高级爬虫安卓逆向 引言&#xff1a; 大神薯条老师的高级爬虫安卓逆向教程&#xff1a; 这套爬虫教程会系统讲解爬虫的初级&…...

剖析Mybatis中用到的设计模式

框架对很多设计模式的实现&#xff0c;都并非标准的代码实现&#xff0c;都做了比较多的自我改进。实际上&#xff0c;这就是所谓的灵活应用, 只借鉴不照搬, 根据具体问题针对性地去解决。 涉及到Mybatis源码知识和设计模式&#xff0c;这点我之前的博客均有涉及。 可以查看我的…...

MySQL 函数(入门版)

目录 一、字符串函数 1、常用的字符串函数 2、函数演示 3、具体案例 二、数值函数 1、常用的数值函数 2、函数演示 3、具体案例 三、日期函数 1、常用的日期函数 2、函数演示 3、具体案例 四、流程函数 1、常用的流程函数 2、函数演示 3、具体案例 在MySQL中&a…...

d202546

目录 一、罗马字符转数字 二、二叉树的右视图 三、sql-查询结果的质量和占比 一、罗马字符转数字 首先把两个字符组成一个数字做一下单独判断 然后就是单个字符转数字 public int romanToInt(String s) {int sum 0;char[] ch s.toCharArray();int i 0;while(i < ch.len…...

洛谷每日1题-------Day37__P1634 禽兽的传染病

题目背景 mxj 的启发。 题目描述 禽兽患传染病了。一个禽兽会每轮传染 x 个禽兽。试问 n 轮传染后有多少禽兽被传染&#xff1f; 输入格式 两个非负整数 x 和 n。 输出格式 一个整数&#xff0c;即被传染的禽兽数。 输入输出样例 输入 #1复制 10 2 输出 #1复制 121…...

c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第五式】动态内存管理

c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第五式】动态内存管理 【心法】 【第零章】c语言概述 【第一章】分支与循环语句 【第二章】函数 【第三章】数组 【第四章】操作符 【第五章】指针 【第六章】结构体 【第七章】const与c语言中一些错误代码 【禁忌秘术】 【第一式…...

理解进程和线程的概念

在操作系统中&#xff0c;进程和线程都是执行的基本单位&#xff0c;但它们在性质和管理方面有所不同 进程 定义: 进程是一个正在运行的程序的实例&#xff0c;是操作系统资源分配的基本单位。特点: 独立性&#xff1a;每个进程有其独立的内存空间、数据栈和其他辅助数据。重…...

【项目管理】第2章 信息技术发展 --知识点整理

Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 对应:第1章-第5章 (二)知识笔记 二、信息技术的发展 1. 信息技术及其发展 1)计算机软硬件 计算机硬件由电子机械、光电元件等组成的物理装置,提供物质基础给计算机软件运行。软件包括程…...