一文梳理金融风控建模全流程(Python)

▍目录

一、简介

  • 风控信用评分卡简介

  • Scorecardpy库简介

二、目标定义与数据准备

  • 目标定义

  • 数据准备

三、安装scorecardpy包

四、数据检查

五、数据筛选

六、数据划分

七、变量分箱

  • 卡方分箱

  • 手动调整分箱

八、建立模型

  • 相关性分析

  • 多重共线性检验VIF

  • KS和AUC

  • 评分映射

  • PSI稳定性指标

九、关键指标说明

  • WOE值

  • IV值

  • 逻辑回归

  • KS值

  • PSI

风控信用评分卡简介

通过运用数据挖掘算法,信贷风控系统可以像个"预言家"一样准确地预测借款人的还款表现。它通过分析借款人的个人信息、历史还款记录、职业稳定性等多个因素,为金融机构提供一个科学且可靠的参考,以决定是否放贷

有了信贷风控系统的帮助,金融机构能更好地掌握风险,防范不良贷款的风险,同时也能更快速地为借款人提供贷款服务。这种高效率的金融服务不仅促进了经济发展,也方便了人们的生活。

总而言之,信贷风控在互联网时代发挥着至关重要的作用。基于大数据和数据挖掘算法,它成为金融业务决策的智慧之选,为金融机构和借款人提供了更可靠、更高效的信贷服务。

图片

▍评分卡ABC卡应用场景介绍

业界通常的做法是基于挖掘多维度的特征建立一套可解释及效果稳定的规则及风控模型对每笔订单/用户/行为做出判断决策。

申请评分卡A卡在贷前阶段起着非常重要的作用。借助A卡模型,银行或金融机构能够根据申请人的个人信息和历史数据,对其进行风险评估。这种评估能够帮助金融机构判断借款人是否具备偿还贷款的能力和意愿。通过综合评分,A卡模型能够为贷款决策提供科学依据,从而减少不良贷款的风险。

此外,还有贷中行为评分卡B卡和催收评分卡C卡等模型。B卡模型用于对贷款期间借款人的行为进行评估,帮助监控贷款的风险状况。C卡模型则专注于催收阶段,用于评估借款人的还款意愿和能力,以便制定相应的催收策略。

除了上述评分卡模型,还有反欺诈模型等其他模型。反欺诈模型是为了应对欺诈行为而设计,它利用各种数据分析技术来识别和预防欺诈行为,保护金融机构和借款人的利益。

A卡申请评分模型主要在于预测申请时(申请信用卡、申请贷款)对申请人进行量化评估。

B卡行为评分模型在于预测贷中时点(获得贷款、信用卡的使用期间)未来一定时间内逾期的概率。

C卡催收评分模型在于预测已经逾期并进入催收阶段后未来一定时间内还款的概率。

图片

一个预测能力强的特征,对于模型和规则都是特别重要的。比如申请评分卡--A卡,主要可以归到以下3方面特征:

  • 1、信贷历史类:信贷交易次数及额度、收入负债比、查询征信次数、信贷历史长度、新开信贷账户数、额度使用率、逾期次数及额度、信贷产品类型、被追偿信息。用来预测还款能力及意愿的信息

  • 2、基本信息及交易记录类:年龄、婚姻状况、学历、工作类型、年薪、工资收入、存款股票、车房资产情况、公积金及缴税、非信贷交易流水等记录(这类主要是从还款能力上面综合考量的。还可以结合多方核验资料的真伪以及共用像手机号、身份证号等团伙欺诈信息,用来鉴别欺诈风险)

  • 3、公共负面记录类:例如破产负债、民事判决、行政处罚、法院强制执行、涉赌涉诈黑名单、公安不良等(这类特征不一定能拿得到数据,且通常缺失度比较高,对模型贡献一般,更多的是从还款意愿/欺诈维度的考虑)

图片

Scorecardpy库简介

-常用的评分卡建模Python包有Toad和scorecardpy,二者相比,scorecardpy更加轻量且依赖较少,可以满足大多数场景下的建模
-scorecardpy是由谢士晨博士开发,目标是通过提供一些常见任务的功能,使信用风险评分模型的开发更加轻松有效
-scorecardpy的github地址:https://github.com/ShichenXie/scorecardpy
-该包针对模型中的关键步骤提供了现成的函数,如:

  • 数据划分(split_df)

  • 过滤变量(var_filter())

  • 决策树分箱(woebin, woebin_plot, woebin_adj, woebin_ply)

  • 评分转换(scorecard, scorecard_ply)

  • 模型评估(perf_eva, perf_psi)

目标定义与数据准备

1.好坏样本定义:

风控模型的预测目标一般是指判断某个客户是否为坏,一般通过滚动率分析定义坏,如M2或M3 (M:Month on Book 账龄,M2即逾期60以上或M3即逾期90天以上)。

2.时间窗口确定:

在运用的过程中,不能简单地将坏客户定为1,好客户定义为0。需要结合时间点与业务指标进行综合判断。

图片

3.观察点/观察期:

观察点:该点并不是一个具体的时间点,而是一个时间段,在该时间段的客户样本将作为建模的历史数据

观察期:此阶段主要用以生成用户特征的时间区间,不宜过长也不宜过短。若区间过长可能导致大批样本无法进入模型;过短可能会导致无法生成足够多有效的时间切片变量

4.表现点/表现期:

表现期:用以定义用户好坏的时间段,一般是6个月到1年左右,不宜过短,以保证样本群体分类的稳定性,使客户的风险充分表露出来

表现点:截止到此时间点的客户被分类成“好客户”和“坏客户”

5.数据:

使用scorecardpy自带的German Credit数据集,字段如下:

status of existing checking account 现有支票帐户状况

duration in month 还了多久贷款了/债务时间

3.credit history 信贷历史

purpose 贷款目的

credit amount 贷款剩余金额

6.savings account and bonds 存款账户

present employment since 截止到现在的就职年限

installment rate in percentage of disposable income 分期付款占可支配收入的百分比

personal status and sex 性别

other debtors or guarantors 担保人

a present residence since 居住地

property 资产

age in years 贷款时的年纪

other installment plans 分期付款计划

housing 无房/租房/自有房

number of existing credits at this bank 已有的银行卡数量

job 工作

number of people being liable to provide maintenance for 可还款人数

telephone 电话

foreign worker 是否为外籍员工

creditability 信用好坏

数据安装与检查

pip install scorecardpy

1.检查缺失值,看缺失值占比情况判断删除还是保留

2.删掉对建模没有意义的行列,例如tel

3.查看数据信息格式:数据是由int64,category,object类型的数据组成,category类型的数据具有局限性,此处转化为object

# -*- coding:utf-8 -*-import scorecardpy as sc
import pandas as pd
import numpy as np#scorecardpy自带数据
dat = sc.germancredit()#查看数据行列
print("数据行列",dat.shape)
print("随机抽取5行数据\n",dat.sample(5))#统计每个变量的缺失占比情况
result1 = (dat.isnull().sum()/dat.shape[0]).map(lambda x:"{:.2%}".format(x))
print(result1)#other_debtors_or_guarantors 缺失值过多,在建模时失去效用故删除
#other_installment_plans 这一列缺失占比也较高也可以删除
dat["other_installment_plans"].value_counts()
#telephone 对建模没有太大意义故删除,但收集数据时也要确保其是否被填写以保证客户真实性及后续操作,此处不讨论。
#删除三项内容
dat = dat.drop(columns=["other_debtors_or_guarantors","other_installment_plans","telephone"])#查看数据的信息
dat.info()

Data columns (total 18 columns):#   Column                                                    Non-Null Count  Dtype   
---  ------                                                    --------------  -----   0   status_of_existing_checking_account                       1000 non-null   category1   duration_in_month                                         1000 non-null   int64   2   credit_history                                            1000 non-null   category3   purpose                                                   1000 non-null   object  4   credit_amount                                             1000 non-null   int64   5   savings_account_and_bonds                                 1000 non-null   category6   present_employment_since                                  1000 non-null   category7   installment_rate_in_percentage_of_disposable_income       1000 non-null   int64   8   personal_status_and_sex                                   1000 non-null   category9   present_residence_since                                   1000 non-null   int64   10  property                                                  1000 non-null   category11  age_in_years                                              1000 non-null   int64   12  housing                                                   1000 non-null   category13  number_of_existing_credits_at_this_bank                   1000 non-null   int64   14  job                                                       1000 non-null   category15  number_of_people_being_liable_to_provide_maintenance_for  1000 non-null   int64   16  foreign_worker                                            1000 non-null   category17  creditability                                             1000 non-null   object

数据筛选

# 经过人工筛选后,利用sc.var_filter自动判断数据建模可用性
dt_s = sc.var_filter(dat,y="creditability",iv_limit=0.02)
print(dat.shape) #手动删除后数据
print(dt_s.shape) #过滤变量后数据(1000, 18)
(1000, 12)

数据划分

train,test = sc.split_df(dt=dt_s,y="creditability").values()
#方法:随机抽样
#训练数据y的统计:
train.creditability.value_counts()

▍变量卡方分箱

#scorecardpy默认使用决策树分箱,method=‘tree’
#这里使用卡方分箱,method=‘chimerge’
#返回的是一个字典数据,用pandas.concat()查看所有数据
bins = sc.woebin(dt_s,y="creditability",method="chimerge")
bins_df = pd.concat(bins).reset_index().drop(columns="level_0")#制作变量分布图,此处把筛选后的11个变量均制作变量分布图后再进一步筛选可用变量import matplotlib.pyplot as pltsc.woebin_plot(bins["duration_in_month"])
sc.woebin_plot(bins["installment_rate_in_percentage_of_disposable_income"])
sc.woebin_plot(bins["present_employment_since"])
sc.woebin_plot(bins["savings_account_and_bonds"])
sc.woebin_plot(bins["purpose"])
sc.woebin_plot(bins["status_of_existing_checking_account"])
sc.woebin_plot(bins["credit_history"])
sc.woebin_plot(bins["housing"])
sc.woebin_plot(bins["property"])# 此步骤需检查分箱的单调性、分箱数、IV值、每一箱是否合理等,再进行下一步的手动调整

图片

图片

▍手动分箱

#分箱调整
#scorecardpy可以自定义分箱,也可以自动分箱。此处选择手动分箱。手动分箱根据业务经验)# 手动分箱
break_adj = {'age_in_years':[26,35,45],'credit_amount':[750,3000,5500]
}
bins_adj = sc.woebin(dt_s,y="creditability",breaks_list=break_adj) #调整后数据
bins_adj_df = pd.concat(bins_adj).reset_index().drop(columns="level_0")
bins_adj_df[bins_adj_df.variable.isin(["age_in_years",'credit_amount'])]sc.woebin_plot(bins_adj["age_in_years"])
sc.woebin_plot(bins_adj['credit_amount'])

图片

▍建立模型

-风控信用评分模型的目标,是解决对好人坏人区分的二分类问题,且对解释性、计算速度与可追溯性上要求较高,所以业界普遍选用逻辑回归模型建立风控评分卡

-逻辑回归的优点:结构简单;计算快;可解释性强;分类结果是0-1之间的概率数字;

#逻辑回归,逻辑回归在金融建模中应用广泛
from sklearn.linear_model import LogisticRegressiony_train = train_woe.loc[:,"creditability"]
X_train =train_woe.loc[:,train_woe.columns!="creditability"]
y_test = test_woe.loc[:,"creditability"]
X_test = test_woe.loc[:,test_woe.columns!="creditability"]lr=LogisticRegression(penalty='l1',C=0.9,solver='saga',n_jobs=-1)
lr.fit(X_train,y_train)LogisticRegression(C=0.9, n_jobs=-1, penalty='l1', solver='saga')
[[0.7477907  0.77429024 0.03820958 0.33340333 0.42839855 0.331969161.18999712 0.51742719 0.62251866 0.6756973  0.98183774]]

▍相关性分析

1.相关性是进行回归分析的前提之一。如果自变量和因变量之间没有相关性,那么进行回归分析可能没有意义。相关性可以帮助我们判断自变量是否对因变量有一定的解释能力。

2数据相关性过大可能意味着存在共线性。共线性是指自变量之间存在高度相关性,使得回归模型的稳定性降低,参数估计变得不可靠。当自变量之间存在强烈的线性相关性时,我们可能需要考虑采取一些方法来处理共线性问题,例如进行特征选择或使用正则化方法。

3.相关分析可以用来了解变量之间的共变趋势,但并不能确定因果关系。相关性只表明两个变量之间存在某种关联程度,但不能明确指出是哪个变量影响了另一个变量。而回归分析可以基于假设对自变量与因变量之间的具体作用关系进行验证。通过回归分析,我们可以得出变量之间的具体方向性关系,以揭示自变量对因变量的影响程度。

多重共线性检验VIF

多重共线性是指在机器学习模型中存在强相关性或线性依赖关系的变量。当多个特征之间存在高度相关性时,就会出现多重共线性的情况。

在模型中,多重共线性可能会导致一些问题。首先,它会降低模型的稳定性,使得模型对输入数据中的小变化非常敏感。其次,共线性会使得模型系数估计不准确,使我们很难解释特征与目标之间的关系。此外,共线性还可能导致模型的解释性下降,因为我们很难确定哪些特征对模型预测的贡献最大。

为了解决多重共线性问题,我们可以采取以下措施:

1. 特征选择: 通过选择与目标变量相关性较高、与其他特征相关性较低的特征来减少共线性的影响。

2. 正则化: 使用正则化技术如L1正则化(Lasso)或L2正则化(Ridge)可以通过惩罚系数来减少共线性对模型的影响。

3. 主成分分析(PCA): 使用PCA技术可以将原始的高维特征转换为一组无关的低维特征,从而降低共线性的影响。

4. 增加样本量: 增加数据样本量可以减少多重共线性的影响,尤其是当样本量比较小时。

通过采取上述措施,我们可以在机器学习模型中更好地处理多重共线性问题,提高模型的性能和稳定性。

# VIF越高,多重共线性的影响越严重
# 在金融风险中我们使用经验法则:若VIF>4,则我们认为存在多重共线性def checkVIF(df):from statsmodels.stats.outliers_influence import variance_inflation_factorname = df.columnsx = np.matrix(df)VIF_list = [variance_inflation_factor(x,i) for i in range(x.shape[1])]VIF = pd.DataFrame({'feature':name,"VIF":VIF_list})max_VIF = max(VIF_list)print(max_VIF)return VIF
checkVIF(train_woe)#计算训练集的VIF

图片

KS和AUC

K-S曲线(Kolmogorov-Smirnov Curve):

  • 为蓝色KS曲线上的最大值,KS值越大,模型区分能力越强

  • 风控模型中的KS值一般在0.2~0.4之间

  • AUC(Area Under Curve):

  • ROC曲线下的面积,介于0.1和1之间,AUC越大模型性能越好

train_pred = lr.predict_proba(X_train)[:,1]
test_pred =  lr.predict_proba(X_test)[:,1]train_perf = sc.perf_eva(y_train,train_pred,title="train")
test_perf = sc.perf_eva(y_test,test_pred,title="test")

图片

图片

PSI稳定性指标

  • PSI越小,说明模型越稳定

  • 通常PSI需小于0.1,则模型稳定性较好

sc.perf_psi(score = {'train':train_score,'test':test_score},label = {'train':y_train,'test':y_test}
)

图片

关键指标说明

1.WOE值

WOE(Weight of Evidence)证据权重的应用:

处理缺失值:当数据源没有100%覆盖时,那就会存在缺失值,此时可以把null单独作为一个分箱。这点在分数据源建模时非常有用,可以有效将覆盖率哪怕只有20%的数据源利用起来

处理异常值:当数据中存在离群点时,可以把其通过分箱离散化处理,从而提高变量的鲁棒性(抗干扰能力)。例如,age若出现200这种异常值,可分入“age > 60”这个分箱里,排除影响

业务解释性:我们习惯于线性判断变量的作用,当x越来越大,y就越来越大。但实际x与y之间经常存在着非线性关系,此时可经过WOE变换

2.IV值

判断标准:

(1)IV<0.03:无预测能力

(2)0.03-0.09:低

(3)0.1-0.29:中

(4)0.3-0.49:高

(5)IV>=0.5:极高

一般可以选择IV值在0.1~0.49范围内的变量

3.逻辑回归

线性函数是最简单的方程 y = ax +b。通过一个权重a和一个常数项b,最终和变量x组合得到了预测值y。对于线性可分的变量中,我们会设定一个阈值来判断我们预测的样本数据哪一类。例如 我们得到一组y值【1,2,3,4,5,6,7,8,9】。此时我们通过设定阈值 = 5, 当y <= 5时,认定为0,y>5 时,认定为1,这样就做了一个简单的分类模型。

4.逻辑回归的拟合函数

逻辑回归的拟合函数是 sigmoid函数。(该函数也常用于神经网络的激活函数,除此之外还有tanh,relu,softmax等)。

函数公式中的 z 即为 ax + b。

这样,sigmoid函数就将跃阶函数转变为平滑的S形曲线,取值范围则被映射至【0,1】区间,方便我们通过该模型更好的做分类预测。

5.KS值

KS(Kolmogorov-Smirnov)值衡量的是好坏样本累计分部之间的差值

好坏样本累计差异越大,KS指标越大,模型的风险区分能力越强

判断标准:

(1)KS<0.2:不建议采用

(2)0.2-0.4:较好

(3)0.41-0.5:良好

(4)0.51-0.6:很强

(5)0.61-0.75:非常强

(6)KS>0.75:能力高但疑似有误

6.PSI

PSI是计算模型预测出来的每个分数段内好坏客户的比例与实际样本好坏客户分布的差异性,差异越小越好

评判标准:一般认为

(1)PSI小于0.1:模型稳定性很高

(2)0.1-0.25:一般

(3)PSI大于0.25:模型稳定性差,建议重做

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

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

相关文章

李宏毅 Generative Adversarial Network(GAN)生成对抗网络

(延申)GAN Lecture 1 (2018)- Introduction_哔哩哔哩_bilibili Basic Idea of GAN 附课程提到的各式各样的GAN&#xff1a;https://github.com/hindupuravinash/the-gan-zoo 想要让机器做到的是生成东西。->训练出来一个generator。 假设要做图像生成&#xff0c;要做的是…

【Qt之模型视图】5. Qt库提供的视图便捷类

1. 前言 Qt提供了一些便捷的视图类&#xff0c;如QListWidget提供项目列表&#xff0c;QTreeWidget显示多级树结构&#xff0c;QTableWidget提供单元格项的表格。每个类都继承了QAbstractItemView类的行为&#xff0c;QAbstractItemView类实现了项目选择和标题管理的通用行为。…

16.5 参考文献——深度学习定位

16.5 一种高效鲁棒的多楼层室内环境指纹定位方法 同济大学 Zhao Y, Gong W, Li L, et al. An Efficient and Robust Fingerprint Based Localization Method for Multi Floor Indoor Environment[J]. IEEEa Internet of Things Journal, 2023. 2.相关工作 B.基于深度学习的…

固态硬盘优化设置

目录 前言&#xff1a; 关闭Windows Search 禁用系统保护&#xff08;不建议&#xff09; 不建议禁用系统保护原因 关闭碎片整理【机械硬盘】 提升固态硬盘速度 开启TRIM 合理使用固态硬盘的容量 正确关机 关闭开机自启 前言&#xff1a; 电脑配备固态硬盘就能一劳…

自我摸索:如何运营并玩转CSDN?

自注册CSDN以来已有七年之久&#xff0c;但真正运营CSDN也是最近一年的事情&#xff0c;大概就是22年底&#xff0c;参加2022 博客之星 的竞选。接触了很多大佬&#xff0c;也学习模仿着开始玩转CSDN&#xff0c;虽然没有同期运营的大佬们玩的6&#xff0c;但也有一些经验可以来…

this指针相关

一、类对象的存储方式 先说一下结论&#xff1a;一个类的大小&#xff0c;实际就是该类中”成员变量”之和&#xff0c;当然要注意内存对齐 注意空类和没有成员变量的类的大小&#xff0c;编译器给了这两种类一个字节来唯一标识这个类的对象。 class A { public:int _a;int _b…

Python多线程—threading模块

参考&#xff1a;《Python核心编程》 threading 模块的Thread 类是主要的执行对象&#xff0c;而且&#xff0c;使用Thread类可以有很多方法来创建线程&#xff0c;这里介绍以下两种方法&#xff1a; 创建 Thread 实例&#xff0c;传给它一个函数。派生 Thread 的子类&#xf…

计算机体系结构——多处理机系统

一、概述 重要概念 评估指标 通信延迟 通信延迟&#xff1d;发送开销&#xff0b;跨越时间&#xff0b;传输延迟&#xff0b;接收开销 跨越时间 数字信号从发送方的线路端传送到接收方的线路端所经过的时间。 传输时间 全部的消息量除以线路带宽。 多处理机的架构 根…

Unity 之 Addressable可寻址系统 -- HybridCLR(华佗)+Addressable实现资源脚本全热更 -- 实战(二)

Unity 之 Addressable可寻址系统 -- HybridCLRAddressable实现资源脚本全热更 -- 实战 前言实现原理一&#xff0c;HybridCLR相关操作1.1 安装HybridCLR1.2 打包程序集1.2 设置面板1.3 补充元数据1.4 代码加载流程 二&#xff0c;Addressable资源管理2.1 生成热更代码资源2.2 创…

攻防世界——answer_to_everything-writeup

__int64 __fastcall not_the_flag(int a1) {if ( a1 42 )puts("Cipher from Bill \nSubmit without any tags\n#kdudpeh");elseputs("YOUSUCK");return 0LL; } kdudpeh这个东西&#xff0c;根据题目提示sha1加密 import hashlib flagkdudpeh x hashlib…

【Springboot】日志

1.日志的使用 日志主要用于记录程序运行的情况。我们从学习javase的时候就使用System.out.println();打印日志了&#xff0c;通过打印的日志来发现和定位问题&#xff0c;或根据日志来分析程序运行的过程。在Spring的学习中,也经常根据控制台的⽇志来分析和定位问题 。 日志除…

数据分析实战:城市房价分析

流程图&#xff1a; 1.读数据表 首先&#xff0c;读取数据集。 CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATtarget0.00632182.3100.5386.57565.24.09129615.3396.94.98240.0273107.0700.4696.42178.94.9671224217.8396.99.1421.60.0272907.0700.4697.18561.14.9671224217…

大英第四册课后翻译答案

目录 Unit 1Unit 2Unit 3Unit 4小结&#xff1a; Unit 1 中庸思想&#xff08;Doctrine of the Mean&#xff09;是儒家思想的核心内容。孔子所谓的“中”不是指“折中”&#xff0c;而是指在认识和处理客观事物时的一种“适度”和“恰如其分”的方法。孔子主张不仅要把这种思…

街机模拟游戏逆向工程(HACKROM)教程:[14]68K汇编-标志寄存器

在M68K中&#xff0c;有许多条件分支指令&#xff0c;和jmp指令一样也会修改PC达到程序跳转或分支的目的&#xff0c;不过这些会根据一些情况或状态来选择是否跳转。而在M68K中&#xff0c;有一个特别的寄存器来标记这些情况。 CCR(状态标志寄存器) CCR寄存器是用来保存一些对…

微前端-无界wujie

无界微前端方案基于 webcomponent 容器 iframe 沙箱&#xff0c;能够完善的解决适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户的核心诉求。 主项目安装无界 vue2项目&#xff1a;npm i wujie-vue2 -S vue3项目…

77. 组合 - 力扣(LeetCode)

题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 输入示例 n 4, k 2输出示例 [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]解题思路 我们使用回溯、深度优先遍历的思想&#xff0c;我们使用一个栈 path…

SpringSecurity+OAuth2.0 搭建认证中心和资源服务中心

目录 1. OAuth2.0 简介 2. 代码搭建 2.1 认证中心&#xff08;8080端口&#xff09; 2.2 资源服务中心&#xff08;8081端口&#xff09; 3. 测试结果 1. OAuth2.0 简介 OAuth 2.0&#xff08;开放授权 2.0&#xff09;是一个开放标准&#xff0c;用于授权第三方应用程序…

Leetcode的AC指南 —— 栈与队列:225.用队列实现栈

摘要&#xff1a; **Leetcode的AC指南 —— 栈与队列&#xff1a;225.用队列实现栈 **。题目介绍&#xff1a;请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 …

简单了解AJAX

文章目录 1、什么是AJAX2、AJAX快速入门3、Axios异步框架3.1、Axios 快速入门3.2、Axios 请求方式别名 1、什么是AJAX 概念&#xff1a;AJAX(Asynchronous JavaScript And XML)&#xff1a;异步的 JavaScript 和 XML AJAX作用&#xff1a; 与服务器进行数据交换&#xff1a;通…

图卷积GCN实战基于网络结构图的网络表示学习实战

下面的是数据&#xff1a; from,to,cost 73,5,352.6 5,154,347.2 154,263,392.9 263,56,440.8 56,96,374.6 96,42,378.1 42,58,364.6 58,95,476.8 95,72,480.1 72,271,419.5 271,68,251.1 134,107,344.0 107,130,862.1 130,129,482.5 227,167,1425.7 167,298,415.7 298,209,42…