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

人力资源数据集分析(二)_随机森林与逻辑回归

数据入口:人力资源分析数据集 - Heywhale.com

数据说明

字段说明
EmpID唯一的员工ID
Age年龄
AgeGroup年龄组
Attrition是否离职
BusinessTravel出差:很少、频繁、不出差
DailyRate日薪
Department任职部门:研发部门、销售部门、人力资源部门
DistanceFromHome通勤距离
Education教育等级
EducationField专业领域:生命科学、医学、市场营销、技术、其他
EnvironmentSatisfaction工作环境满意度
Gender性别
HourlyRate时薪
JobInvolvement工作参与度
JobLevel工作级别
JobRole工作角色
JobSatisfaction工作满意度
MaritalStatus婚姻状况
MonthlyIncome月收入
SalarySlab工资单
MonthlyRate月薪
NumCompaniesWorked工作过的公司数量
PercentSalaryHike加薪百分比
PerformanceRating绩效评级
RelationshipSatisfaction关系满意度
StandardHours标准工时
StockOptionLevel股票期权级别
TotalWorkingYears总工作年数
TrainingTimesLastYear去年培训时间
WorkLifeBalance工作生活平衡评价
YearsAtCompany在公司工作年数
YearsInCurrentRole担任现职年数
YearsSinceLastPromotion上次晋升后的年数
YearsWithCurrManager与现任经理共事年数
import pandas as pd
data = 'HR_Analytics.csv'
data = pd.read_csv(file_path)
# 打印每一列的唯一值
for column in data.columns:print(f"Unique values in {column}:")print(data[column].unique())

通过这段代码可以了解每一列的唯一值。观察到某些列含有缺失值且缺失值的行数较少,可以直接删去。

data_cleaned = data.dropna()

本文将通过随机森林与逻辑回归预测员工晋升路径和潜在的流失风险。

一:预测员工晋升路径

  1. 数据理解:首先,需要查看CSV文件的内容,以了解数据的结构和可用特征。这将帮助确定哪些特征可能与员工晋升路径相关。
  2. 数据预处理:基于数据理解,可能需要进行数据清洗,处理缺失值,转换分类数据,以及进行特征选择。
  3. 模型选择:选择一个合适的机器学习模型来预测员工晋升路径。考虑到这是一个分类问题,逻辑回归、决策树或随机森林等模型可能适用。
  4. 模型训练与评估:使用历史数据训练模型,并使用适当的评估指标(如准确率、召回率、F1分数)来评估模型性能。
  5. 结果解释:最后,我将解释模型结果,并提供关于员工晋升路径的预测。

首先检查数据集中的分类特征,以便进行适当的编码:

categorical_features = data.select_dtypes(include=['object', 'category']).columns.tolist()categorical_features

数据集中有多个分类特征,包括员工ID、年龄组、离职情况、出差频率、部门、教育领域、性别、工作角色、婚姻状况和薪资等级。为了在机器学习模型中使用这些特征,我们需要对它们进行编码。常见的编码方法包括独热编码(One-Hot Encoding)标签编码(Label Encoding)。独热编码适用于具有多个类别且类别之间没有顺序关系的特征,而标签编码适用于具有顺序关系的特征。

接下来,我将使用独热编码处理具有多个类别的分类特征。然后,我将选择与员工晋升路径相关的特征,并准备数据集以进行模型训练。

data_encoded = pd.get_dummies(data, columns=categorical_features, drop_first=True)data_encoded.head()

数据集经过独热编码后,现在包含了1522个特征。这个特征数量对于建立一个有效的机器学习模型来说可能太多了,可能会导致过拟合。因此,我们需要进行特征选择,只保留与员工晋升路径最相关的特征。

为了选择相关特征,我们可以使用不同的特征选择方法,例如基于模型的特征选择(如使用随机森林的特征重要性)或使用统计测试(如卡方检验)来选择与目标变量最相关的特征。在这个案例中,我们的目标变量是员工是否晋升,这需要我们首先定义晋升的标准。例如,我们可以根据员工的工作等级(JobLevel)是否增加来定义晋升。

接下来,我将定义晋升的标准,并使用随机森林模型来确定哪些特征与晋升最相关。然后,我将选择这些特征来训练模型。

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
import numpy as npdata_encoded['Promotion'] = np.where(data_encoded['JobLevel'] > data_encoded['JobLevel'].shift(-1), 1, 0)data_encoded.dropna(subset=['Promotion'], inplace=True)relevant_features = ['Education', 'TotalWorkingYears', 'TrainingTimesLastYear','YearsAtCompany', 'YearsInCurrentRole', 'YearsSinceLastPromotion','YearsWithCurrManager'
]features = data_encoded[relevant_features]
target = data_encoded['Promotion']X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)rf_classifier.fit(X_train, y_train)y_pred = rf_classifier.predict(X_test)accuracy = accuracy_score(y_test, y_pred)accuracy, classification_report(y_test, y_pred)

使用随机森林模型,我们得到了大约70%的准确率,可以使用该随机森林模型对数据进行预测。

此外,从分类报告中我们可以看到,模型在预测晋升(标签1)方面的召回率较低,这意味着它可能没有很好地识别出所有晋升的案例。这可能是因为晋升事件相对较少,导致数据集不平衡。在未来的工作中,可以考虑使用过采样欠采样技术来处理这种不平衡,或者使用不同的评估指标,如F1分数,来更好地衡量模型性能。

二:预测员工流失风险

1:判断特征重要性

首先进行一些基本的特征工程,例如从现有特征中创建新的特征。

categorical_features = ['EmpID', 'AgeGroup', 'Attrition', 'BusinessTravel', 'Department', 'EducationField', 'Gender', 'JobRole', 'MaritalStatus', 'SalarySlab']
data[categorical_features] = data[categorical_features].astype('category')data_types_updated = data.dtypesdata['Experience'] = data['TotalWorkingYears'] - data['YearsAtCompany']data_types_updated, data['Experience'].head()

我已经将分类特征转换为正确的数据类型,并创建了一个新的特征Experience,它表示员工的总工作经验减去在当前公司的年数。

接下来,将进行特征选择,确定哪些特征对于预测流失风险最为重要。这可以通过多种方法来完成,例如使用相关性分析、基于模型的特征重要性等。在这里,我将使用随机森林模型的特征重要性来选择特征。

from sklearn.preprocessing import LabelEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, accuracy_score
import matplotlib.pyplot as pltX = data.drop(['EmpID', 'Attrition'], axis=1)
y = data['Attrition']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)rf_clf = RandomForestClassifier(n_estimators=100, random_state=42)le = LabelEncoder()for feature in categorical_features:if feature != 'Attrition': data[feature] = le.fit_transform(data[feature])X = data.drop(['EmpID', 'Attrition'], axis=1)
y = data['Attrition']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)rf_clf.fit(X_train, y_train)feature_importances = rf_clf.feature_importances_feature_importances_df = pd.DataFrame({'Feature': X_train.columns, 'Importance': feature_importances})feature_importances_sorted = feature_importances_df.sort_values(by='Importance', ascending=False)top_features = feature_importances_sorted.head(10)plt.figure(figsize=(12, 8))
plt.barh(top_features['Feature'], top_features['Importance'], color='skyblue')
plt.xlabel('Feature Importance')
plt.ylabel('Feature')
plt.title('Top 10 Most Important Features for Attrition Prediction')
plt.gca().invert_yaxis()
plt.show()top_features

根据随机森林模型的特征重要性,我们可以看到MonthlyIncome(月收入)是预测员工流失风险最重要的特征,其次是Age(年龄)、DailyRate(日薪)、MonthlyRate(月薪)等。这些特征对于预测员工是否流失具有显著的影响。

接下来,我将使用这些特征来训练一个逻辑回归模型,并评估其在测试集上的性能。逻辑回归是一种常用的分类算法,特别适用于二元分类问题。

这段代码是一个使用Python语言和scikit-learn库进行数据预处理、模型训练、特征重要性评估和可视化的完整流程。以下是这段代码的详细解释:

from sklearn.preprocessing import LabelEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, accuracy_score
import matplotlib.pyplot as plt
import pandas as pd
  • LabelEncoder 用于将分类特征转换为数值型数据。
  • RandomForestClassifier 是随机森林分类器,用于分类任务。
  • train_test_split 用于将数据集分割为训练集和测试集。
  • classification_report 和 accuracy_score 用于评估模型的性能。
  • matplotlib.pyplot 用于数据可视化。
X = data.drop(['EmpID', 'Attrition'], axis=1)
y = data['Attrition']
  • 这部分代码从数据集中移除了不需要的列(例如员工ID和目标变量),并将剩余的数据作为特征集(X)和目标变量(y)。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  • 使用 train_test_split 函数将数据集分割为训练集和测试集,其中测试集占总数据的20%,random_state 确保结果的可重复性。
rf_clf = RandomForestClassifier(n_estimators=100, random_state=42)le = LabelEncoder()
  • 初始化一个随机森林分类器,其中包含100棵树。
  • 初始化一个 LabelEncoder 实例。
for feature in categorical_features:if feature != 'Attrition': data[feature] = le.fit_transform(data[feature])
  • 遍历分类特征列表,使用 LabelEncoder 对每个特征进行编码,排除目标变量。
X = data.drop(['EmpID', 'Attrition'], axis=1)
y = data['Attrition']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  • 由于数据已经经过编码处理,再次执行特征和目标变量的分割以及训练集和测试集的分割。
rf_clf.fit(X_train, y_train)
  • 使用训练集数据训练随机森林分类器。
feature_importances = rf_clf.feature_importances_feature_importances_df = pd.DataFrame({'Feature': X_train.columns, 'Importance': feature_importances})feature_importances_sorted = feature_importances_df.sort_values(by='Importance', ascending=False)top_features = feature_importances_sorted.head(10)
  • 从训练好的模型中获取特征重要性。
  • 创建一个DataFrame来存储特征和它们的重要性。
  • 按照特征重要性对DataFrame进行排序。
  • 显示最重要的前10个特征。
plt.figure(figsize=(12, 8))
plt.barh(top_features['Feature'], top_features['Importance'], color='skyblue')
plt.xlabel('Feature Importance')
plt.ylabel('Feature')
plt.title('Top 10 Most Important Features for Attrition Prediction')
plt.gca().invert_yaxis()
plt.show()
  • 使用条形图可视化最重要的前10个特征。
  • 设置图表的大小、颜色、标签和标题。
  • 反转y轴,使得最重要的特征在上方。
top_features
  • 显示排序后的特征重要性DataFrame的前10行。

2:建立逻辑回归预测模型

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, roc_auc_scorelog_clf = LogisticRegression(random_state=42)log_clf.fit(X_train, y_train)y_pred = log_clf.predict(X_test)accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
roc_auc = roc_auc_score(y_test, log_clf.predict_proba(X_test)[:, 1])accuracy, conf_matrix, roc_auc

逻辑回归模型在测试集上的准确率为83.16%,混淆矩阵显示有48个实际流失的样本被错误地预测为未流失。模型的ROC AUC得分为0.709,这意味着模型在区分流失和非流失员工方面的性能是中等偏上。可以利用该逻辑回归根据员工数据预测员工是否流失。

:roc_auc_score(y_test, log_clf.predict_proba(X_test)[:, 1])

roc_auc_score是一个用于计算接收者操作特征曲线下面积(Receiver Operating Characteristic Area Under the Curve,简称 ROC AUC)的函数。ROC AUC 是一种衡量二分类模型性能的指标,它的值介于 0.5(随机猜测)和 1(完美分类)之间,值越接近 1 表示模型性能越好。

y_test是真实的测试集目标变量值,通常是 0 和 1 表示的二分类结果。

log_clf.predict_proba(X_test)是使用已经训练好的分类器(这里假设 log_clf 是一个逻辑回归分类器)对测试集 X_test 进行预测,得到的是一个概率矩阵,其中每一行表示一个样本属于不同类别的概率。

[:, 1]表示取这个概率矩阵的第二列,通常对应着正类(1)的概率预测值。

整体而言,这段代码是计算使用逻辑回归分类器对测试集进行预测得到的正类概率与真实的测试集目标变量之间的 ROC AUC 值,以评估该分类器在测试集上的性能表现。

想要探索多元化的数据分析视角,可以关注之前发布的相关内容。

相关文章:

人力资源数据集分析(二)_随机森林与逻辑回归

数据入口:人力资源分析数据集 - Heywhale.com 数据说明 字段说明EmpID唯一的员工IDAge年龄AgeGroup年龄组Attrition是否离职BusinessTravel出差:很少、频繁、不出差DailyRate日薪Department任职部门:研发部门、销售部门、人力资源部门Dista…...

【30天玩转python】数据库操作

数据库操作 数据库是应用程序中用于存储和管理数据的核心组件。Python 提供了多种与数据库交互的方式,支持不同类型的数据库,包括关系型数据库(如 MySQL、PostgreSQL)和 NoSQL 数据库(如 MongoDB)。在这篇…...

PTT:Point Tree Transformer for Point Cloud Registration 论文解读

目录 一、导言 二、相关工作 1、基于Transformer的点云配准 2、针对点云的局部注意力 三、PTT 1、KPconv提取特征 2、Tree Transformer Encoder 3、Decoder 4、估计姿态 5、损失函数 四、实验 1、对比不同Backbone 2、运行时间对比 3、对比不同PTT方法下RR指标的…...

C++速通LeetCode中等第7题-和为K的子数组(巧用前缀和)

巧用哈希表与前缀和&#xff0c;前缀和差为k的两个序号之间的数组就是满足条件的子数组&#xff0c;用哈希表来存放每个序号的前缀和。 前缀和就是头元素到当前序号子数组元素的和 class Solution { public:int subarraySum(vector<int>& nums, int k) {unordered_…...

【读书笔记-《30天自制操作系统》-23】Day24

本篇内容依然比较简单&#xff0c;主要是优化窗口功能以及开发定时器应用程序。首先是优化窗口的切换功能&#xff0c;实现通过键盘和鼠标切换窗口&#xff0c;然后是实现通过鼠标关闭窗口。接着实现不同窗口输入状态的切换&#xff0c;最后是实现定时器的API与应用程序。 1.…...

XML:DOM4j解析XML

XML简介&#xff1a; 什么是XML&#xff1a;XML 是独立于软件和硬件的信息传输工具。 XML 的设计宗旨是传输数据&#xff0c;而不是显示数据。XML 标签没有被预定义。您需要自行定义标签。XML不会做任何事情&#xff0c;XML被设计用来结构化、存储以及传输信息。 XML可以发明…...

15.5 创建监控控制平面的service

本节重点介绍 : k8s中service的作用和类型创建k8s控制平面的service 给prometheus采集用&#xff0c; 类型clusterIp kube-schedulerkube-controller-managerkube-etcd service的作用 Kubernetes Service定义了这样一种抽象&#xff1a; Service是一种可以访问 Pod逻辑分组…...

【Docker Nexus3】maven 私库

1.部署环境 window 11 x64Docker Desktop 4.34.1 (166053) Docker Engine v27.2.0 1.1.Docker 镜像源 1.1.1.Docker Engine 配置 {"builder": {"features": {"buildkit": true},"gc": {"defaultKeepStorage": "32…...

Docker本地部署Chatbot Ollama搭建AI聊天机器人并实现远程交互

文章目录 前言1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址 前言 本文主要分享如何在群晖NAS本地部署并运行一个基于大语言模型Llama 2的个人本地聊天机器人并结合内网穿透工具…...

MySQL:用户管理

添加用户 create user usernamelocalhost identified by user_password;删除用户 drop user usernamelocalhost;查看所有用户 输入格式 select user,host from mysql.user; 输出 mysql> select user,host from mysql.user; ----------------------------- | user …...

论文《Mixture of Weak Strong Experts on Graphs》笔记

【Mowst 2024 ICLR】论文提出了一种新的图神经网络架构&#xff0c;称为Mixture of weak and strong experts&#xff08;Mowst&#xff09;&#xff0c;通过将轻量级的多层感知机&#xff08;MLP&#xff09;作为弱专家和现成的GNN作为强专家相结合&#xff0c;以处理图中的节…...

【诉讼流程-健身房-违约-私教课-诉讼书提交流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(3)】

【诉讼流程-健身房-违约-私教课-诉讼书提交流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解&#xff08;3&#xff09;】 1、前言说明2、流程说明3、现场提交&#xff08;线下&#xff09;4、网上提交1-起诉书样例2-起诉书编写&#xff08;1&#xff09;原告信息&#xff1a;&…...

数据结构(Day14)

一、学习内容 结构体 概念 引入&#xff1a;定义整数赋值为10 int a10; 定义小数赋值为3.14 float b3.14; 定义5个整数并赋值 int arr[5] {1 , 2 , 3 , 4 ,5}; 定义一个学生并赋值学号姓名成绩 定义一个雪糕并赋值名称产地单价 问题&#xff1a;没有学生、雪糕 数据类型 解决&…...

Paragon NTFS for Mac和Tuxera NTFS for Mac,那么两种工具有什么区别呢?

我们在使用Mac系统读取U盘的过程中往往会遇到一个问题&#xff0c;那就是U盘插进电脑无法显示&#xff0c;或者只能读取不能编辑。出现这种情况的原因就一般是格式错误。 很多小伙伴在解决这种问题的时候会选择使用U盘读写工具&#xff0c;那么哪一种读写工具比较好呢&#xf…...

HashTable结构体数组实现

写了个哈希表&#xff0c;底层逻辑基于结构体数组&#xff0c;核心结构:HashNode,结构外壳:HashTable_R,冲突处理以后会加的(QwQ)~ 目前代码&#xff1a; #ifndef PYIC_X #define PYIC_Xunsigned int PYIC_Hash(unsigned int Val, unsigned int Mov) {unsigned int Ht[4] { …...

Python 管理 AWS ElastiCache 告警

在 AWS 环境中,监控和管理 ElastiCache 集群的性能是至关重要的。本文将介绍如何使用 Python 和 AWS SDK (boto3) 来自动创建和删除 ElastiCache 集群的 CloudWatch 告警。我们将分两部分来讨论:创建告警和删除告警。 第一部分:创建 ElastiCache 告警 首先,让我们看看如何…...

【无人机设计与控制】四旋翼无人机俯仰姿态保持模糊PID控制(带说明报告)

摘要 为了克服常规PID控制方法在无人机俯仰姿态控制中的不足&#xff0c;本研究设计了一种基于模糊自适应PID控制的控制律。通过引入模糊控制器&#xff0c;实现了对输入输出论域的优化选择&#xff0c;同时解决了模糊规则数量与控制精度之间的矛盾。仿真结果表明&#xff0c;…...

[数据集][目标检测]不同颜色的安全帽检测数据集VOC+YOLO格式7574张5类别

重要说明&#xff1a;数据集里面有2/3是增强数据集&#xff0c;请仔细查看图片预览&#xff0c;确认符合要求在下载&#xff0c;分辨率均为640x640 数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件…...

确保 App 跟踪透明度权限:Flutter 中的实践

确保 App 跟踪透明度权限&#xff1a;Flutter 中的实践 在数字广告领域&#xff0c;用户隐私保护已成为一个重要议题。随着 iOS 14 的发布&#xff0c;Apple 引入了 App Tracking Transparency (ATT) 框架&#xff0c;要求开发者在跟踪用户行为以提供个性化广告之前必须获得用…...

李沐 过拟合和欠拟合【动手学深度学习v2】

模型容量 模型容量的影响 估计模型容量 难以在不同的种类算法之间比较,例如树模型和神经网络 给定一个模型种类,将有两个主要因素: 参数的个数参数值的选择范围 VC维...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...