前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >专题|Python梯度提升实例合集:GBM、XGBoost、SMOTE重采样、贝叶斯、逻辑回归、随机森林分析信贷、破产数据

专题|Python梯度提升实例合集:GBM、XGBoost、SMOTE重采样、贝叶斯、逻辑回归、随机森林分析信贷、破产数据

作者头像
拓端
发布于 2025-03-14 09:08:09
发布于 2025-03-14 09:08:09
17300
代码可运行
举报
文章被收录于专栏:拓端tecdat拓端tecdat
运行总次数:0
代码可运行

全文链接:https://tecdat.cn/?p=41051

分析师:Jiajie Shi,Yimeng Li

在当今数据驱动的时代,数据分析师和数据建模师面临着各式各样复杂且极具挑战性的任务。本专题合集便是围绕这些挑战展开的宝贵知识盛宴点击文末“阅读原文”获取完整代码、数据、文档)。

在预测医生欺诈领域,医疗数据存在严重类不平衡问题,影响机器学习模型预测效果。分析师通过对 CMS 大型数据集进行数据处理,运用 10 种重采样方法结合 5 种机器学习模型,发现 SMOTEENN 重采样方法和 XGBoost 模型表现最佳。

在在线食品配送业务研究中,为建立印度班加罗尔地区消费者画像及预测购买意愿,分析师对调研问卷数据进行特征转换、划分训练测试集、建模与优化。通过基于 AIC 筛选自变量、引入 smote 采样法,提升了模型性能,并对比多种模型效果。

对于严重不平衡的破产数据,分析师先进行数据预处理,包括导入探索、处理缺失值、检查多重共线性、分析异常值及聚类分析,再应用 SMOTE 技术重采样,最后评估多种模型性能,凸显 XGBoost 在处理此类数据时的优势。

本专题合集涵盖了医疗、互联网餐饮、金融等多领域的数据处理与建模实战案例,为数据分析师和数据建模师提供了丰富的经验与思路。梯度提升专题合集已分享在交流社群,阅读原文进群和 500 + 行业人士共同交流和成长,一起在数据的海洋中探索前行,提升专业技能,应对更多数据挑战 。

研究预测医生欺诈领域中的重采样方法

少数医生在索赔时存在欺诈行为,若能成功预测这部分人将会有助于缓解政府的财政压力。但由于存在着严重的类不平衡问题,致使机器学习模型预测效果不好,而重采样方法的使用可以有效地改善这一问题。因此,此项目的研究重点是哪种重采样方法在这一领域的表现最好

解决方案

任务/目标

对CMS大型数据集进行大量数据处理并应用重采样方法,利用生成的新数据集进行机器学习模型训练,观察预测效果

数据处理

首先,因为数据集中存在少数null值,通过观察对比统计性分析中的部分值,决定使用中位数对所有null值进行替换。其次,数据集中部分特征为字符串形式,因为绝大多数机器学习模型无法对字符串进行学习,因而运用独热编码进行处理。为实现有监督学习,还对所有数据集进行了贴标签处理。将数据集和标签集中的特征NPI作为共同特征,如果存在着欺诈行为则新增的特征‘exclusion’为1反之为0。最后,因少数类数据量过少,将几年的数据集进行聚合从而增加少数类数据总数。

重采样

首先需要申明的是,该数据集存在着严重的类不平衡问题。

倘若使用有着类不平衡问题的数据集,则模型会存在着严重的过拟合情况,使训练和预测失去意义。适合的重采样方法将极大的帮助缓解类不平衡问题,从而是模型可以更好的训练。因而,在此项目中,10种不同的重采样方法将被使用。其中包括4种过采样,4种下采样和2种过采样和下采样的组合。

机器学习模型

在此项目中,共有5种机器学习模型被使用,它们分别是 Naive Bayes Logistic RegressionRandom ForestsGradient Boosting Machines (GBM)Extreme Gradient Boosting (XGBoost)。其中,Naive Bayes和 Logistic Regression已经在其他研究中已经被证实了不可靠性,因此将在本项目中作为baseline进行对比。剩余三个皆为集成算法,且GBMXGBoost在此领域还未被使用,本研究将同时探究其表现。值得一提的是,为了保证算法比较的公平性,所有重采样方法和机器学习模型使用的参数皆为默认值。

评价指标

本项目中选择使用两个不同的评估指标(ROC Curve & AUC,F1-score)来帮助我们更好地分析模型的性能。比较不同的性能分数可以帮助我们找到更好的模型。它还可以帮助我们避免基于度量失败而做出糟糕的决策。

此研究的最重要成果将在下图中展出。

其中,我们通过最右栏和最下栏可以清楚的发现重采样方法和机器学习算法中表现最好的分别是SMOTEENN和XGBoost。这样的结果也是符合我对它们一开始的期望,SMOTEENN 实 际 上 由 SMOTE 和EditedNearestNeighbours 组合而成。SMOTE 算法的缺点是生成的少数类样本容易与周围的多数类样本产生重叠难以分类,而 EditedNearestNeighbours 的数据清洗技术恰好可以处理掉重叠样本。即先用SMOTEENN 过采样再用EditedNearestNeighbours 数据清理。简而言之,它具有两者的优点并去除了两者的缺点。而XGBoost相比于另外两个集成算法,其对代价函数做了二阶Talor展开,引入了一阶导数和二阶导数,因而收敛速度很快。其次,XGBoost在代价函数里也加入了正则项,用于控制模型的复杂度,也可以在一定程度上防止过拟合。最后,XGBoost 支持并行处理,有利于节省时间和空间。

过采样SMOTE逻辑回归、SVM、随机森林、AdaBoost和XGBoost对不平衡数据分析预测

近几年,伴随着互联网的发展,在线食品配送业务成为了新潮流。在此背景下,我们帮助客户对“在线食品交付偏好-班加罗尔地区”数据开展研究,建立印度在线食品配送平台消费者的用户画像,研究影响顾客购买意愿的因素,并给出相应的预测。本文结合一个Python预测不平衡破产数据实例的代码数据,为读者提供一套完整的实践数据分析流程。

解决方案

任务/目标

建立印度班加罗尔地区在线食品配送平台消费者的用户画像,研究影响顾客购买意愿的因素。

数据源准备

数据集中包含一个完整的调研问卷和相应的用户反馈结果。问卷共计有效填写量338条,包含55项与订购用户相关的调研内容。问卷的发放方式为简单随机抽样(simple random),即随机选取到店和在线下单的用户并邀请填写问卷内容。

特征转换

由于数据集是问卷的形式,因而在数据预处理阶段将部分描述程度的变量转化为了整数,我们根据用户的意愿按程度进行给分: Strongly agree (Very important): 2 Agree (Important): 1 Neutral (Moderately important): 0 Disagree (Slightly important): -1 Strongly disagree (Unimportant): -2

数据集的(部分)变量如下: Output: 用户是否愿意再次线上下单(作为本数据集的因变量) Age: 用户的年龄 Monthly income: 用户月薪的等级 Ease and convenience: 线上下单的便捷程度 Late delivery: 较慢的配送对不再购买的影响程度 Politeness: 送餐骑手的礼貌程度 Temperature: 食品温度的重要程度

划分训练集和测试集

为了验证模型的优劣,将数据集分为两部分,70%的数据作为训练集,30%的数据作为测试集。

建模

模型的目标是对output(用户是否愿意再次线上下单)进行预测,并对研究各变量对output的影响。

基于AIC的模型初步筛选

由于原数据集有55个自变量,为了让模型有更好的解释性,我们利用逻辑回归和AIC准则初步筛选得到9个自变量。如下所示:

Age

Ease.and.convenient

Time.saving

Late.Delivery

Unaffordable

Order.placed.by.mistake

Politeness

Freshness

Temperature

根据这九个自变量重新尝试搭建模型,得到的预测准确率为88%,AUC为94%

模型优化

由于数据集中因变量output为0和1的数据量有较大差异,为1:3,为了保证样本的平衡性,引入smote采样法(Smote采样简而言之是通过对原样本进行线性变换得到新的模拟样本,与bootstrap不同)经过采样,得到了数据量更大且具有较好平衡性的样本。通过此方法重新进行逻辑回归,模型的AUC从94%提升至97%,模型的表现得到了提升。

除了基于Smote采样的逻辑回归以外,在模型的探索过程中还引入了决策树、朴素贝叶斯以及加入交叉项等方法,得到的结果如下所示

综上,我们可以发现,就测试集合的准确率而言,C5.0决策树的准确率最高,为92.31%,其次是朴素贝叶斯模型,准确率为91.45%; 然而, 由于他们不是线性模型,这两者模型不具有可观的解释性; 特别的,通过之前的描述性统计与常识可以知道,年龄分布是类似正态的,因此有必要考虑年龄的二次项使得模型更加有效,而上表也进一步证实了引入年龄二次项使得模型的精度有较为显著的提高。 值得注意的是, 在具体选择模型的时候,需要结合具体所研究的数据特征进行选择模型; 例如,没有smote采样的模型由于训练的样本不平衡, 在测试集上的准确率较高但是在训练集上的AUC较少, 容易发生误判, 对于未知Output的分布未知的数据, 则Smote的采样显得必要了。

SMOTE逻辑回归、SVM、随机森林、AdaBoost和XGBoost分析严重不平衡的破产数据|附数据代码

本文旨在探讨如何有效处理并分析严重不平衡的破产数据,采用XGBoost模型作为主要分析工具。数据集包含实体的多种特征和财务比率,目标变量为公司未来几年是否破产(1表示破产,0表示未破产)。通过一系列预处理步骤,包括缺失值处理、多重共线性检查、异常值分析以及通过K-means聚类探索数据分布,本文最终实现了对不平衡数据的有效重采样,并评估了多种机器学习模型在破产预测任务上的性能。

数据预处理

数据导入与探索

首先,使用pandas库导入数据集,并设置实体ID为索引:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = pd.read_csv('train.csv')
df.set_index('ID', inplace = True)

df.head()

数据不平衡性

初步分析表明数据存在严重的不平衡性,这是破产预测任务中常见的挑战。不平衡性可能源于罕见但影响重大的事件发生。

缺失值处理

对于数据中的缺失值,采用适当的插补策略以确保数据完整性。通过可视化缺失值矩阵,可以直观地了解缺失值的分布情况。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plt.figure(figsize=(16,6))
msno.matrix(X_df,labels = True, color=(0.20,0.15,0.45))

多重共线性检查

通过绘制热图检查特征之间的多重共线性问题,以避免模型训练过程中的信息冗余和过拟合风险。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fig, ax = plt.subplots(figsize=(16,12))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plt.xticks(rotation=90)

异常值处理

虽然识别出存在跨越多个标准差的异常值,但鉴于缺乏领域专业知识,未直接删除这些异常值,以避免可能的信息损失。

数据探索与聚类分析

K-means聚类

采用K-means聚类算法探索数据在特征空间中的分布特性,通过肘部法则确定最佳聚类数。结果显示数据多样性较高,可能包含多个潜在的子群体。

数据是多种多样的,许多实体分布在特征空间中。

因此,我们的数据可能属于 2 个以上的类,因为在聚类 = 2 时,方差似乎有点偏离。

数据重采样

SMOTE技术

针对数据的高度不平衡性,应用SMOTE(Synthetic Minority Over-sampling Technique)技术进行过采样。通过生成少数类(破产)的合成样本,平衡数据集,从而提高模型对少数类的识别能力。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X\_res, Y\_res = sm.fit\_sample(X\_train, Y_train)

模型评估与选择

模型应用

将逻辑回归、SVM、随机森林、AdaBoost和XGBoost等模型应用于处理后的数据集,评估它们在破产预测任务上的性能。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.DataFrame(predictors).T

性能比较

通过多次实验调整SMOTE中的过采样比率,并对比不同模型在召回率上的表现。结果显示,XGBoost模型在0.11214的打击率下取得了最高的召回率,表明其在处理不平衡数据方面的优势。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
smote_values = np.linspace(0.065, 0.125, num= 15)
smote_values

召回分数是我们感兴趣的。召回率显示了我们的模型将正值预测为正值的能力。由于我们的数据高度不平衡,因此任何模型都很难获得更好的召回率。有时模型忽略了少数群体。

结论

综上所述,XGBoost模型在破产预测任务中表现优异,特别是在处理严重不平衡的数据集时,其高召回率证明了其在识别少数类(破产公司)方面的有效性。通过合理的数据预处理、重采样策略以及模型选择,本文为类似的不平衡分类问题提供了一种有效的解决方案。未来的研究可以进一步探索更多先进的重采样技术和模型优化策略,以提升模型的整体性能。

Python信贷风控模型:梯度提升Adaboost,XGBoost,SGD, GBOOST, SVC,随机森林, KNN预测金融信贷违约支付和模型优化|附数据代码

在此数据集中,我们必须预测信贷的违约支付,并找出哪些变量是违约支付的最强预测因子?以及不同人口统计学变量的类别,拖欠还款的概率如何变化?

有25个变量:

1. ID: 每个客户的ID 2. LIMIT_BAL: 金额 3. SEX: 性别(1 =男,2 =女) 4.教育程度:(1 =研究生,2 =本科,3 =高中,4 =其他,5 =未知) 5.婚姻: 婚姻状况(1 =已婚,2 =单身,3 =其他) 6.年龄: 7. PAY_0: 2005年9月的还款状态(-1 =正常付款,1 =延迟一个月的付款,2 =延迟两个月的付款,8 =延迟八个月的付款,9 =延迟9个月以上的付款) 8. PAY_2: 2005年8月的还款状态(与上述相同) 9. PAY_3: 2005年7月的还款状态(与上述相同) 10. PAY_4: 2005年6月的还款状态(与上述相同) 11. PAY_5: 2005年5月的还款状态(与上述相同) 12. PAY_6: 还款状态2005年4月 的账单(与上述相同) 13. BILL_AMT1: 2005年9月的账单金额 14. BILL_AMT2: 2005年8月的账单金额 15. BILL_AMT3: 账单金额2005年7月 的账单金额 16. BILL_AMT4: 2005年6月的账单金额 17. BILL_AMT5: 2005年5月的账单金额 18. BILL_AMT6: 2005年4月 19. PAY_AMT1 2005年9月,先前支付金额 20. PAY_AMT2 2005年8月,以前支付的金额 21. PAY_AMT3: 2005年7月的先前付款 22. PAY_AMT4: 2005年6月的先前付款 23. PAY_AMT5: 2005年5月的先前付款 24. PAY_AMT6: 先前的付款额在2005年4月 25. default.payment.next.month: 默认付款(1 =是,0 =否)

现在,我们知道了数据集的整体结构。因此,让我们应用在应用机器学习模型时通常应该执行的一些步骤。

第1步:导入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import matplotlib.pyplot as plt

所有写入当前目录的结果都保存为输出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataset = pd.read_csv('Card.csv')

现在让我们看看数据是什么样的

第2步:数据预处理和清理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataset.shape
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(30000, 25)

意味着有30,000条目包含25列

从上面的输出中可以明显看出,任何列中都没有对象类型不匹配。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#检查数据中Null项的数量,按列计算。
dataset.isnull().sum()

步骤3.数据可视化和探索性数据分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 按性别检查违约者和非违约者的计数数量
sns.countplot

从上面的输出中可以明显看出,与男性相比,女性的整体拖欠付款更少

可以明显看出,那些拥有婚姻状况的人的已婚状态人的默认拖欠付款较少。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sns.pairplot
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sns.jointplot

男女按年龄分布

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
g.map(plt.hist,'AGE')
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataset\['LIMIT_BAL'\].plot.density

步骤4.找到相关性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X.corrwith

从上图可以看出,最负相关的特征是LIMIT_BAL,但我们不能盲目地删除此特征,因为根据我的看法,这对预测非常重要。ID无关紧要,并且在预测中没有任何作用,因此我们稍后将其删除。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 绘制热图
sns.heatmap(corr)

步骤5:将数据分割为训练和测试集

训练数据集和测试数据集必须相似,通常具有相同的预测变量或变量。它们在变量的观察值和特定值上有所不同。如果将模型拟合到训练数据集上,则将隐式地最小化误差。拟合模型为训练数据集提供了良好的预测。然后,您可以在测试数据集上测试模型。如果模型在测试数据集上也预测良好,则您将更有信心。因为测试数据集与训练数据集相似,但模型既不相同也不相同。这意味着该模型在真实意义上转移了预测或学习。

因此,通过将数据集划分为训练和测试子集,我们可以有效地测量训练后的模型,因为它以前从未看到过测试数据,因此可以防止过度拟合。

我只是将数据集拆分为20%的测试数据,其余80%将用于训练模型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 train\_test\_split(X, y, test\_size = 0.2, random\_state = 0)

步骤6:规范化数据:特征标准化

对于许多机器学习算法而言,通过标准化(或Z分数标准化)进行特征标准化可能是重要的预处理步骤。

许多算法(例如SVM,K近邻算法和逻辑回归)都需要对特征进行规范化,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
min\_test = X\_test.min()
range\_test = (X\_test - min_test).max()
X\_test\_scaled = (X\_test - min\_test)/range_test

步骤7:应用机器学习模型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.ensemble  import AdaBoostClassifier
adaboost =AdaBoostClassifier()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xgb\_classifier.fit(X\_train\_scaled, y\_train,verbose=True)
end=time()
train\_time\_xgb=end-start

应用具有100棵树和标准熵的随机森林

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
classifier = RandomForestClassifier(random_state = 47, 
                                    criterion = 'entropy',n_estimators=100)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svc_model = SVC(kernel='rbf', gamma=0.1,C=100)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
knn = KNeighborsClassifier(n_neighbors = 7)

步骤8:分析和比较机器学习模型的训练时间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Train_Time = \[
    train\_time\_ada,
    train\_time\_xgb,
    train\_time\_sgd,
    train\_time\_svc,
    train\_time\_g,
    train\_time\_r100,
    
    train\_time\_knn
\]

从上图可以明显看出,与其他模型相比,Adaboost和XGboost花费的时间少得多,而其他模型由于SVC花费了最多的时间,原因可能是我们已经将一些关键参数传递给了SVC。

步骤9.模型优化

在每个迭代次数上,随机搜索的性能均优于网格搜索。同样,随机搜索似乎比网格搜索更快地收敛到最佳状态,这意味着迭代次数更少的随机搜索与迭代次数更多的网格搜索相当。

在高维参数空间中,由于点变得更稀疏,因此在相同的迭代中,网格搜索的性能会下降。同样常见的是,超参数之一对于找到最佳超参数并不重要,在这种情况下,网格搜索浪费了很多迭代,而随机搜索却没有浪费任何迭代。

现在,我们将使用Randomsearch cv优化模型准确性。如上表所示,Adaboost在该数据集中表现最佳。因此,我们将尝试通过微调adaboost和SVC的超参数来进一步优化它们。

参数调整

现在,让我们看看adaboost的最佳参数是什么

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
random\_search.best\_params_
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{'random\_state': 47, 'n\_estimators': 50, 'learning_rate': 0.01}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
random\_search.best\_params_
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{'n\_estimators': 50, 'min\_child\_weight': 4, 'max\_depth': 3}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
random\_search.best\_params_
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{'penalty': 'l2', 'n\_jobs': -1, 'n\_iter': 1000, 'loss': 'log', 'alpha': 0.0001}

出色的所有指标参数准确性,F1分数精度,ROC,三个模型adaboost,XGBoost和SGD的召回率现已优化。此外,我们还可以尝试使用其他参数组合来查看是否会有进一步的改进。

ROC曲线图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    auc = metrics.roc\_auc\_score(y\_test,model.predict(X\_test_scaled))

plt.plot(\[0, 1\], \[0, 1\],'r--')
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 计算测试集分数的平均值和标准差
test_mean = np.mean

# 绘制训练集和测试集的平均准确度得分
plt.plot
# 绘制训练集和测试集的准确度。
plt.fill_between

验证曲线的解释

如果树的数量在10左右,则该模型存在高偏差。两个分数非常接近,但是两个分数都离可接受的水平太远,因此我认为这是一个高度偏见的问题。换句话说,该模型不适合。

在最大树数为250的情况下,由于训练得分为0.82但验证得分约为0.81,因此模型存在高方差。换句话说,模型过度拟合。同样,数据点显示出一种优美的曲线。但是,我们的模型使用非常复杂的曲线来尽可能接近每个数据点。因此,具有高方差的模型具有非常低的偏差,因为它几乎没有假设数据。实际上,它对数据的适应性太大。

从曲线中可以看出,大约30到40的最大树可以最好地概括看不见的数据。随着最大树的增加,偏差变小,方差变大。我们应该保持两者之间的平衡。在30到40棵树的数量之后,训练得分就开始上升,而验证得分开始下降,因此我开始遭受过度拟合的困扰。因此,这是为什么30至40之间的任何数量的树都是一个不错的选择的原因。

结论

因此,我们已经看到,调整后的Adaboost的准确性约为82.95%,并且在所有其他性能指标(例如F1分数,Precision,ROC和Recall)中也取得了不错的成绩。

此外,我们还可以通过使用Randomsearch或Gridsearch进行模型优化,以找到合适的参数以提高模型的准确性。

我认为,如果对这三个模型进行了适当的调整,它们的性能都会更好。

分析师

在此对 Jiajie Shi 对本文所作的贡献表示诚挚感谢,他在伦敦大学学院完成了科学与数据密集型计算专业的硕士学位,专注数据处理、机器学习领域。擅长 Python、SQL 。

Yimeng Li是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在南京大学完成了数学系统计学专业的学位,专注数理统计、机器学习领域。擅长R语言、Python、Tableau。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拓端数据部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
BPF:探索Linux动态调度的新时代(或许携手Rust!)
在一项圣诞黑客项目中,一位Canonical工程师开发了一个能够在用户空间运行的Linux调度器。
云云众生s
2024/03/28
2220
曾遭 Linus 炮轰“很烂”的 C++,现受开发者支持:Linux 内核应从 C 转到 C++!
前有 C 语言当道,后有 Rust “杀入”,时下又有一场关于 C++ 才应该成为 Linux 内核语言的争论被旧事重提了。
C语言中文社区
2024/01/17
1.2K2
曾遭 Linus 炮轰“很烂”的 C++,现受开发者支持:Linux 内核应从 C 转到 C++!
为 K8s workload 引入的一些 BPF datapath 扩展
本文翻译自 LPC 2021 的一篇分享:BPF datapath extensions for K8s workloads[1]。
米开朗基杨
2021/11/29
1.7K0
为 K8s workload 引入的一些 BPF datapath 扩展
Linux阅码场 - Linux内核月报(2020年07月)
Linux阅码场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。
Linux阅码场
2020/08/13
1.6K0
2022 Linux 内核十大技术革新功能 | 年终盘点
本文来自  CSDN 重磅策划的《2022 年技术年度盘点》栏目。2022 年,智能技术变革留下了深刻的脚印,各行各业数字化升级催生了更多新需求。过去一年,亦是机遇与挑战并存的一年。 在本篇文章中,长期奋斗在一线的 Linux 内核开发者宋宝华老师为大家解剖 2022 年 Linux 内核开发的十大革新技术功能,纪念这平凡而又不凡的 Linux 内核之旅。 作者 | 宋宝华       责编 | 梦依丹 出品 | CSDN(ID:CSDNnews) 滚滚长江东逝水,浪花淘尽英雄。在浩瀚的宇宙星河中,波卷
博文视点Broadview
2023/04/04
2.2K0
2022 Linux 内核十大技术革新功能 | 年终盘点
虚拟化场景用什么调度器更合适? 看看来自Amazon的Coscheduling
在BFS和MuqSS两个调度器的介绍之后,本文再介绍一种有意思的调度器,即Coscheduling。
Linux阅码场
2019/10/12
1.1K0
虚拟化场景用什么调度器更合适? 看看来自Amazon的Coscheduling
两个非常有意思的适合桌面使用的Linux task调度器: BFS和MuqSS
大家都知道Linux内核task调度器经历了O(n),O(1)调度器,目前是CFS,期间也出现了几个优秀的候选调度器,但最终都没能并入内核,我们只能从一些零散的patch和文章中知道它们的存在。
Linux阅码场
2019/10/08
2.8K0
两个非常有意思的适合桌面使用的Linux task调度器: BFS和MuqSS
Linux阅码场 - Linux内核月报(2020年11月)
Linux阅码场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。
Linux阅码场
2020/12/29
1.3K0
Linux阅码场 - Linux内核月报(2020年11月)
大规模微服务利器:eBPF + Kubernetes 介绍
问卷链接(https://www.wjx.cn/jq/97146486.aspx) ---- 本文翻译自 2020 年 Daniel Borkmann 在 KubeCon 的一篇分享: eBPF and Kubernetes: Little Helper Minions for Scaling Microservices(https://kccnceu20.sched.com/event/ZemQ/ebpf-and-kubernetes-little-helper-minions-for-scaling-m
CNCF
2021/01/26
2.2K0
Linux阅码场 - Linux内核月报(2020年08月)
Linux阅码场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。
Linux阅码场
2020/09/21
1.5K0
Linux超能力BPF技术介绍及学习分享(技术创作101训练营)
近两年BPF技术跃然成为了一项热门技术,在刚刚结束的KubeCon 2020 Europe会议上有7个关于BPF的技术分享, 而在KubeCon 2020 China会议上也已有了3个关于BPF技术的中文分享,分别来自腾讯和PingCAP,涉足网络优化和系统追踪等领域。在中文社区里,包括阿里巴巴、网易、字节跳动等国内第一梯队IT公司也越来越关注BPF这项新技术。本文主要介绍BPF技术发展和应用,以及我是如何学习BPF技术的。
nevermosby
2020/09/16
13.8K1
Linux超能力BPF技术介绍及学习分享(技术创作101训练营)
Linux内核6.12为卓越调度和实时操作做好准备
如果您正在开发对时间敏感的应用程序,或者使用 Raspberry Pi 5,请查看 Linux 内核 6.12。
云云众生s
2024/10/11
7820
Rust for Linux 源码导读 | Rust 驱动开发与通用时钟管理框架抽象
Rust for Linux 这个项目的目的就是为了将 Rust 引入 Linux,让 Rust 成为 C 语言之后的第二语言。但它最初的目的是:实验性地支持Rust来写内核驱动。
张汉东
2022/03/29
1.2K0
Rust 接棒 C 语言 :Rust for Linux 中正在发生的技术变革
Linus: 我们有在去年合并了 Rust 初始基础设施,它一直在不断增长,但是内核还没有真正依赖它的部分。但 Rust 对我来说,更重要的是,作为内核和开发人员,我们并没有停滞不前。我总是因为尝试新事物而感到兴奋。目前 Rust 并没有真正释放出它的能力,但是我认为明年(2024)我们实际上会开始会积极使用 Rust 来集成驱动程序甚至一些主要的子系统(Major Subsystems),所以这需要数年时间的积累才能让 Rust 成为内核的重要组成部分,Rust 肯定会成为其中之一。
张汉东
2023/12/14
4140
Rust 接棒  C 语言 :Rust for Linux 中正在发生的技术变革
Facebook 流量路由最佳实践:从公网入口到内网业务的全路径 XDP/BPF 基础设施
本文翻译自 Facebook 在 LPC 2021 大会上的一篇分享:From XDP to Socket: Routing of packets beyond XDP with BPF[1]。
米开朗基杨
2021/12/11
1.2K0
Facebook 流量路由最佳实践:从公网入口到内网业务的全路径 XDP/BPF 基础设施
四两拨千斤 —— Ubuntu kernel eBPF 0day分析
 中国武术博大精深,其中太极作为不以拙力胜人的功夫备受推崇。同样如果从攻击的角度窥视漏洞领域,也不难看出攻防之间的博弈不乏“太极”的身影,轻巧稳定易利用的漏洞与工具往往更吸引黑客,今天笔者要着墨分析的就是这样一个擅长“四两拨千斤”的0day漏洞。 
腾讯安全应急响应中心
2018/06/27
8780
四两拨千斤 —— Ubuntu kernel eBPF 0day分析
宋宝华:为了不忘却的纪念,评Linux 5.13内核
Linux 5.14于14小时之前发布了,而我5.13的总结还没有写出,我早觉得有写一点东西的必要了,这虽然于搬砖的码农毫不相干,但在追求进步的工程师那里,却大抵只能如此而已。为了不忘却的纪念,我们列出5.13内核的数个激动人心的新特性:
Linux阅码场
2021/09/18
1.5K0
宋宝华:为了不忘却的纪念,评Linux 5.13内核
Linux 在自动驾驶中可靠吗
实时分为硬实时和软实时,硬实时要求绝对保证响应时间不超过期限,如果超过期限,会造成灾难性的后果,例如汽车在发生碰撞事故时必须快速展开安全气囊;软实时只需尽力使响应时间不超过期限,如果偶尔超过期限,不会造成灾难性的后果.
用户9732312
2022/05/13
2.4K0
Linux 在自动驾驶中可靠吗
BPF for storage:一种受外核启发的反式
译自:BPF for storage: an exokernel-inspired approach
charlieroro
2021/04/23
9730
[译] Cilium:基于 BPF+EDT+FQ+BBR 更好地带宽网络管理
本文翻译自 KubeCon+CloudNativeCon Europe 2022 的一篇分享:Better Bandwidth Management with eBPF。
用户5166556
2023/03/18
2.1K0
[译] Cilium:基于 BPF+EDT+FQ+BBR 更好地带宽网络管理
推荐阅读
相关推荐
BPF:探索Linux动态调度的新时代(或许携手Rust!)
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 研究预测医生欺诈领域中的重采样方法
  • 过采样SMOTE逻辑回归、SVM、随机森林、AdaBoost和XGBoost对不平衡数据分析预测
  • 解决方案
  • 任务/目标
  • 数据源准备
  • 特征转换
  • 划分训练集和测试集
  • 建模
  • 基于AIC的模型初步筛选
  • 模型优化
  • SMOTE逻辑回归、SVM、随机森林、AdaBoost和XGBoost分析严重不平衡的破产数据|附数据代码
    • 数据预处理
      • 数据导入与探索
      • 数据不平衡性
      • 缺失值处理
      • 多重共线性检查
      • 异常值处理
    • 数据探索与聚类分析
      • K-means聚类
    • 数据重采样
      • SMOTE技术
    • 模型评估与选择
      • 模型应用
      • 性能比较
    • 结论
  • Python信贷风控模型:梯度提升Adaboost,XGBoost,SGD, GBOOST, SVC,随机森林, KNN预测金融信贷违约支付和模型优化|附数据代码
    • 第1步:导入
    • 第2步:数据预处理和清理
    • 步骤3.数据可视化和探索性数据分析
    • 男女按年龄分布
    • 步骤4.找到相关性
    • 步骤5:将数据分割为训练和测试集
  • 步骤6:规范化数据:特征标准化
    • 步骤7:应用机器学习模型
  • 应用具有100棵树和标准熵的随机森林
  • 步骤8:分析和比较机器学习模型的训练时间
  • 步骤9.模型优化
  • 参数调整
  • 验证曲线的解释
  • 结论
  • 分析师
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档