人工智能知识分享第六天-机器学习_逻辑回归(Logistic Regression)
简介
在机器学习中,分类问题是一种常见的任务,目标是根据输入特征将数据点分配到不同的类别中。为了实现分类,我们需要训练一个分类器,该分类器能够根据输入数据的特征进行预测。
逻辑回归(Logistic Regression)是一种常用的分类算法,尤其适用于二分类问题。逻辑回归的核心思想是通过对数几率函数(logistic function)将线性回归的输出映射到概率空间,从而实现分类。
注意:逻辑回归虽然名字中有回归二字,但是它不是回归算法,而是分类算法。
逻辑回归理解
逻辑回归(Logistic Regression)是一种广泛使用的分类算法,它的主要思想是将输入变量的线性组合映射到0到1之间的概率,用于预测二元输出变量的概率。
逻辑回归模型的举例:
- 假设我们有一个二元分类问题,需要预测一个样本属于两个类别中的哪一个。
- 逻辑回归模型使用一个参数化函数来计算给定输入变量的输出概率。该函数称为 sigmoid 函数,它将输入变量的线性组合映射到0到1之间的值,表示预测样本属于正例的概率。
- 训练模型的过程就是通过最大化似然函数来估计模型的权重。似然函数是一个关于模型参数的函数,表示给定模型下,样本的概率。
- 为了最大化似然函数,我们可以使用梯度下降算法来更新模型的权重。梯度下降算法通过反复迭代来最小化损失函数,直到找到最优解。
- 损失函数通常使用对数损失函数(log loss)来衡量模型的性能。
- 训练模型后,我们可以使用模型来预测新的样本的类别标签。预测类别标签的方法是,将新样本的特征向量代入 sigmoid 函数,计算输出概率,如果概率大于0.5,则预测为正例,否则预测为负例。
逻辑回归模型简单而直观,易于理解和实现,常用于二元分类问题的建模
sigmoid 函数
sigmoid 函数的数学形式为:其中,z 是输入变量的线性组合,可以表示为: 其中, 是模型的权重(即系数), 是输入变量的值。
sigmoid 函数的数学形式为:
它是一个定义域为 (−∞, +∞) ,值域为 (0,1) 的严格单调递增函数,其图像如下图所示:
其中,z 是输入变量的线性组合,可以表示为:Z=b+W1X1+W2X2+…+WnXn其中,Wi是模型的权重(即系数),Xi是输入变量的值。
在逻辑回归中,我们将输入变量通过线性组合得到 z 值,然后将 z 值代入 sigmoid 函数中,得到一个介于 0 和 1 之间的概率值,表示预测为正类的概率。sigmoid 函数的特性使其能够将任意实数映射到 (0, 1) 区间,因此适用于二分类问题的概率预测。
似然函数
似然函数是一个关于模型参数的函数,表示给定模型下,样本的概率。在逻辑回归中,似然函数可以表示为:
其中,Zi是第i个样本的线性组合,Yi是对应的类别标签(0或1)
极大似然估计
核心思想:
设模型中含有待估参数w,可以取很多值。已经知道了样本观测值,从w的一切可能值中(选出一个使该观察值出现的概率为最大的值,作为w参数的估计值,这就是极大似然估计。(顾名思义:就是看上去那个是最大可能的意思)
举个例子:
假设有一枚不均匀的硬币,出现正面的概率和反面的概率是不同的。假定出现正面的概率为𝜃, 抛了6次得到如下现象 D = {正面,反面,反面,正面,正面,正面}。每次投掷事件都是相互独立的。 则根据产生的现象D,来估计参数𝜃是多少?
对数函数
逻辑回归原理
原理
逻辑回归概念 Logistic Regression
• 一种分类模型,把线性回归的输出,作为逻辑回归的输入。
• 输出是(0, 1)之间的值
• 基本思想
- 利用线性模型 f(x) = wx + b 根据特征的重要性计算出一个值
- 再使用 sigmoid 函数将 f(x) 的输出值映射为概率值
- 设置阈值(eg:0.5),输出概率值大于 0.5,则将未知样本输出为 1 类
- 否则输出为 0 类
3.逻辑回归的假设函数
h(w) = sigmoid(wx + b )
线性回归的输出,作为逻辑回归的输入
在逻辑回归中,当预测结果不对的时候,我们该怎么衡量其损失呢?
我们来看下图(下图中,设置阈值为0.6),
那么如何去衡量逻辑回归的预测结果与真实结果的差异?
损失函数
逻辑回归API
API介绍
sklearn.linear_model.LogisticRegression(solver='liblinear', penalty=‘l2’, C = 1.0)
solver 损失函数优化方法:
训练速度:liblinear 对小数据集场景训练速度更快,sag 和 saga 对大数据集更快一些。 2 正则化:
- newton-cg、lbfgs、sag、saga 支持 L2 正则化或者没有正则化
- 2liblinear 和 saga 支持 L1 正则化
penalty:正则化的种类,l1 或者 l2
C:正则化力度
默认将类别数量少的当做正例
癌症分类案例
- 数据介绍
(1)699条样本,共11列数据,第一列用语检索的id,后9列分别是与肿瘤相关的医学特征,
最后一列表示肿瘤类型的数值。
(2)包含16个缺失值,用”?”标出。
(3)2表示良性,4表示恶性
数据描述
(1)699条样本,共11列数据,第一列用语检索的id,后9列分别是与肿瘤
相关的医学特征,最后一列表示肿瘤类型的数值。
(2)包含16个缺失值,用”?”标出。
- 案例分析
1.获取数据
2.基本数据处理
2.1 缺失值处理
2.2 确定特征值,目标值
2.3 分割数据
3.特征工程(标准化)
4.机器学习(逻辑回归)
5.模型评估
- 代码实现
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScalerdef dm01_LogisticRegression():# 1. 获取数据.data = pd.read_csv('data/breast-cancer-wisconsin.csv')data.info()# 2. 数据预处理.# data = data.replace(to_replace='?', value=np.NAN)data = data.replace('?', np.NaN)data = data.dropna()data.info()# 3. 确定特征值和目标值.x = data.iloc[:, 1:-1]y = data.Classprint(f'x.head(): {x.head()}')print(f'y.head(): {y.head()}')# 3. 分割数据.x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=21)# 4. 特征处理.transfer = StandardScaler()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test)# 5. 模型训练.estimator = LogisticRegression()estimator.fit(x_train, y_train)# 6. 模型预测y_predict = estimator.predict(x_test)print(f'预测值: {y_predict}')# 7. 模型评估print(f'准确率: {estimator.score(x_test, y_test)}')print(f'准确率: {accuracy_score(y_test, y_predict)}')if __name__ == '__main__':dm01_LogisticRegression()
分类评估方法
混淆矩阵
混淆矩阵作用在测试集样本集中:
- 真实值是 正例 的样本中,被分类为 正例 的样本数量有多少,这部分样本叫做真正例(TP,True Positive)
- 真实值是 正例 的样本中,被分类为 假例 的样本数量有多少,这部分样本叫做伪反例(FN,False Negative)
- 真实值是 假例 的样本中,被分类为 正例 的样本数量有多少,这部分样本叫做伪正例(FP,False Positive)
- 真实值是 假例 的样本中,被分类为 假例 的样本数量有多少,这部分样本叫做真反例(TN,True Negative)
True Positive :表示样本真实的类别
Positive :表示样本被预测为的类别
例子:
样本集中有 6 个恶性肿瘤样本,4 个良性肿瘤样本,我们假设恶性肿瘤为正例,则:
模型 A: 预测对了 3 个恶性肿瘤样本,4 个良性肿瘤样本
- 真正例 TP 为:3
- 伪反例 FN 为:3
- 伪正例 FP 为:0
- 真反例 TN:4
模型 B: 预测对了 6 个恶性肿瘤样本,1个良性肿瘤样本
- 真正例 TP 为:6
- 伪反例 FN 为:0
- 伪正例 FP 为:3
- 真反例 TN:1
我们会发现:TP+FN+FP+TN = 总样本数量
from sklearn.metrics import confusion_matrix, precision_score, recall_score, f1_score
import pandas as pddef dm01_混淆矩阵四个指标():# 1. 定义样本集, 6个恶性肿瘤样本, 4个良性肿瘤样本y_true = ['恶性', '恶性', '恶性', '恶性', '恶性', '恶性', '良性', '良性', '良性', '良性']# 2. 定义标签labels = ['恶性', '良性']# 3. 模型A => 预测对了 3个恶性, 4个良性.y_pred_A = ['恶性', '恶性', '恶性', '良性', '良性', '良性', '良性', '良性', '良性', '良性']result = confusion_matrix(y_true, y_pred_A)print(pd.DataFrame(result, index=labels, columns=labels))# 4. 模型B => 预测对了6个恶性肿瘤样本, 1个良性肿瘤样本.y_pred_B = ['恶性', '恶性', '恶性', '恶性', '恶性', '恶性', '恶性', '恶性', '恶性', '良性']result = confusion_matrix(y_true, y_pred_B)print(pd.DataFrame(result, index=labels, columns=labels))# 5. 计算精确率 (precision)print(f'模型A精确率: {precision_score(y_true, y_pred_A, pos_label="恶性")}')print(f'模型B精确率: {precision_score(y_true, y_pred_B, pos_label="恶性")}')# 6. 计算召回率 (recall)print(f'模型A召回率: {recall_score(y_true, y_pred_A, pos_label="恶性")}')print(f'模型B召回率: {recall_score(y_true, y_pred_B, pos_label="恶性")}')# 7. 计算F1值print(f'模型A F1值: {f1_score(y_true, y_pred_A, pos_label="恶性")}')print(f'模型B F1值: {f1_score(y_true, y_pred_B, pos_label="恶性")}')if __name__ == '__main__':dm01_混淆矩阵四个指标()
Precision(精确率)
精确率也叫做查准率,指的是对正例样本的预测准确率。比如:我们把恶性肿瘤当做正例样本,则我们就需要知道模型对恶性肿瘤的预测准确率。
例子:
样本集中有 6 个恶性肿瘤样本,4 个良性肿瘤样本,我们假设恶性肿瘤为正例,则:
模型 A: 预测对了 3 个恶性肿瘤样本,4 个良性肿瘤样本
- 真正例 TP 为:3
- 伪反例 FN 为:3
- 假正例 FP 为:0
- 真反例 TN:4
- 精准率:3/(3+0) = 100%
模型 B: 预测对了 6 个恶性肿瘤样本,1个良性肿瘤样本
- 真正例 TP 为:6
- 伪反例 FN 为:0
- 假正例 FP 为:3
- 真反例 TN:1
- 精准率:6/(6+3) = 67%
Recall(召回率)
召回率也叫做查全率,指的是预测为真正例样本占所有真实正例样本的比重。例如:我们把恶性肿瘤当做正例样本,则我们想知道模型是否能把所有的恶性肿瘤患者都预测出来。
例子:
样本集中有 6 个恶性肿瘤样本,4 个良性肿瘤样本,我们假设恶性肿瘤为正例,则:
模型 A: 预测对了 3 个恶性肿瘤样本,4 个良性肿瘤样本
- 真正例 TP 为:3
- 伪反例 FN 为:3
- 假正例 FP 为:0
- 真反例 TN:4
- 精准率:3/(3+0) = 100%
- 召回率:3/(3+3)=50%
模型 B: 预测对了 6 个恶性肿瘤样本,1个良性肿瘤样本
- 真正例 TP 为:6
- 伪反例 FN 为:0
- 假正例 FP 为:3
- 真反例 TN:1
- 精准率:6/(6+3) = 67%
- 召回率:6/(6+0)= 100%
F1-score
如果我们对模型的精度、召回率都有要求,希望知道模型在这两个评估方向的综合预测能力如何?则可以使用 F1-score 指标。
样本集中有 6 个恶性肿瘤样本,4 个良性肿瘤样本,我们假设恶性肿瘤为正例,则:
模型 A: 预测对了 3 个恶性肿瘤样本,4 个良性肿瘤样本
- 真正例 TP 为:3
- 伪反例 FN 为:3
- 假正例 FP 为:0
- 真反例 TN:4
- 精准率:3/(3+0) = 100%
- 召回率:3/(3+3)=50%
- F1-score:(2*3)/(2*3+3+0)=67%
模型 B: 预测对了 6 个恶性肿瘤样本,1个良性肿瘤样本
- 真正例 TP 为:6
- 伪反例 FN 为:0
- 假正例 FP 为:3
- 真反例 TN:1
- 精准率:6/(6+3) = 67%
- 召回率:6/(6+0)= 100%
- F1-score:(2*6)/(2*6+0+3)=80%
ROC曲线和AUC指标
ROC 曲线
ROC 曲线:我们分别考虑正负样本的情况:
-
正样本中被预测为正样本的概率,即:TPR (True Positive Rate)
-
负样本中被预测为正样本的概率,即:FPR (False Positive Rate)
ROC 曲线图像中,4 个特殊点的含义: -
(0, 0) 表示所有的正样本都预测为错误,所有的负样本都预测正确
-
(1, 0) 表示所有的正样本都预测错误,所有的负样本都预测错误
-
(1, 1) 表示所有的正样本都预测正确,所有的负样本都预测错误
-
(0, 1) 表示所有的正样本都预测正确,所有的负样本都预测正确
绘制 ROC 曲线
假设:在网页某个位置有一个广告图片或者文字,该广告共被展示了 6 次,有 2 次被浏览者点击了。每次点击的概率如下:
样本 | 是否被点击 | 预测点击概率 |
---|---|---|
1 | 1 | 0.9 |
2 | 0 | 0.7 |
3 | 1 | 0.8 |
4 | 0 | 0.6 |
5 | 0 | 0.5 |
6 | 0 | 0.4 |
根据预测点击概率排序之后:
样本 | 是否被点击 | 预测点击概率 |
---|---|---|
1 | 1 | 0.9 |
3 | 1 | 0.8 |
2 | 0 | 0.7 |
4 | 0 | 0.6 |
5 | 0 | 0.5 |
6 | 0 | 0.4 |
绘制 ROC 曲线:
阈值:0.9
- 原本为正例的 1、3 号的样本中 3 号样本被分类错误,则 TPR = 1/2 = 0.5
- 原本为负例的 2、4、5、6 号样本没有一个被分为正例,则 FPR = 0
阈值:0.8
- 原本为正例的 1、3 号样本被分类正确,则 TPR = 2/2 = 1
- 原本为负例的 2、4、5、6 号样本没有一个被分为正例,则 FPR = 0
阈值:0.7
- 原本为正例的 1、3 号样本被分类正确,则 TPR = 2/2 = 1
- 原本为负类的 2、4、5、6 号样本中 2 号样本被分类错误,则 FPR = 1/4 = 0.25
阈值:0.6
- 原本为正例的 1、3 号样本被分类正确,则 TPR = 2/2 = 1
- 原本为负类的 2、4、5、6 号样本中 2、4 号样本被分类错误,则 FPR = 2/4 = 0.5
阈值:0.5
- 原本为正例的 1、3 号样本被分类正确,则 TPR = 2/2 = 1
- 原本为负类的 2、4、5、6 号样本中 2、4、5 号样本被分类错误,则 FPR = 3/4 = 0.75
阈值 0.4
- 原本为正例的 1、3 号样本被分类正确,则 TPR = 2/2 = 1
- 原本为负类的 2、4、5、6 号样本全部被分类错误,则 FPR = 4/4 = 1
(0, 0.5)、(0, 1)、(0.25, 1)、(0.5, 1)、(0.75, 1)、(1, 1)
由 TPR 和 FPR 构成的 ROC 图像为:
AUC 值
- 我们发现:图像越靠近 (0,1) 点则模型对正负样本的辨别能力就越强
- 我们发现:图像越靠近 (0, 1) 点则 ROC 曲线下面的面积就会越大
- AUC 是 ROC 曲线下面的面积,该值越大,则模型的辨别能力就越强
- AUC 范围在 [0, 1] 之间
- 当 AUC= 1 时,该模型被认为是完美的分类器,但是几乎不存在完美分类器
AUC 值主要评估模型对正例样本、负例样本的辨别能力.
分类评估报告api
sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None )'''y_true:真实目标值y_pred:估计器预测目标值labels:指定类别对应的数字target_names:目标类别名称return:每个类别精确率与召回率'''
AUC计算API
from sklearn.metrics import roc_auc_scoresklearn.metrics.roc_auc_score(y_true, y_score)计算ROC曲线面积,即AUC值y_true:每个样本的真实类别,必须为0(反例),1(正例)标记y_score:预测得分,可以是正例的估计概率、置信值或者分类器方法的返回值
【实践】电信客户流失预测
学习目标:
1.了解案例的背景信息
2.知道案例的处理流程
3.动手实现电信客户流失案例的代码
数据集介绍
- 流失用户指的使用过产品因为某些原因不再使用该产品。随着产品的更新迭代,都会存在一定的流失情况,这时正常现象。流失用户的比例和变化趋势能够反映该产品当前是否存在问题以及未来的发展趋势。
- 当用户群体庞大时,有限的人力和精力不能为每个用户都投入大量的时间。如果公司可以预测哪些用户可能提前流失,这样就能将主要精力聚焦于这些用户,实施有效的用户挽留策略,提高用户粘性。
- 本项目旨在通过分析特征属性确定用户流失的原因,以及哪些因素可能导致用户流失。建立预测模型来判断用户是否流失,并提出用户流失预警策略。
- 具体数据说明如下:数据集中总计7043条数据,21个特征字段,最终分类特征为Churn:用户是否流失,具体内容如下所示:
customerID:用户ID
gender:性别
SeniorCitizen:是否是老人
Partner:是否有伴侣
Dependents:是否有需要抚养的孩子
tenure:任职
PhoneService:是否办理电话服务
MultipleLines:是否开通了多条线路
InternetService:是否开通网络服务和开通的服务类型(光纤、电话拨号)
TechSupport:是否办理技术支持服务
OnlineBackup:是否办理在线备份服务
OnlineSecurity:是否办理在线安全服务
DeviceProtection:是否办理设备保护服务
StreamingTV:是否办理电视服务
StreamingMovies:是否办理电影服务
Contract:签订合约的时长
PaperlessBilling:是否申请了无纸化账单
PaymentMethod:付款方式(电子支票、邮寄支票、银行自动转账、信用卡自动转账)
MonthlyCharges:月消费
TotalCharges:总消费
Churn:用户是否流失
处理流程
1、数据基本处理
查看数据的基本信息
对类别数据数据进行one-hot处理
查看标签分布情况
2、特征筛选
分析哪些特征对标签值影响大
初步筛选出对标签影响比较大的特征,形成x、y
3、模型训练
模型训练
交叉验证网格搜索等
4、模型评估
精确率
Roc_AUC指标计算
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, roc_auc_score# 1. 定义函数, 表示: 数据基本处理
def dm01_数据基本处理():# 1. 读取数据, 查看数据的基本信息.churn_pd = pd.read_csv('data/churn.csv')# churn_pd.info()# print(f'churn_pd.describe(): {churn_pd.describe()}')# print(f'churn_pd: {churn_pd}')# 2. 处理类别型的数据, 类别型数据做 one-hot编码(热编码).churn_pd = pd.get_dummies(churn_pd)churn_pd.info()# print(f'churn_pd: {churn_pd}')# 3. 去除列 Churn_No, gender_Malechurn_pd.drop(['Churn_No', 'gender_Male'], axis=1, inplace=True) # 按列删除print(f'churn_pd: {churn_pd}')# 4. 列标签重命名, 打印列名churn_pd.rename(columns={'Churn_Yes': 'flag'}, inplace=True)print(f'列名: {churn_pd.columns}')# 5. 查看标签的分布情况 0.26用户流失value_counts = churn_pd.flag.value_counts()print(value_counts)# 2. 定义函数, 表示: 特征筛选
def dm02_特征筛选():# 1. 读取数据churn_pd = pd.read_csv('data/churn.csv')# 2. 处理类别型的数据, 类别型数据做 one-hot编码(热编码).churn_pd = pd.get_dummies(churn_pd)# 3. 去除列 Churn_No, gender_Malechurn_pd.drop(['Churn_No', 'gender_Male'], axis=1, inplace=True)# 4. 列标签重命名churn_pd.rename(columns={'Churn_Yes': 'flag'}, inplace=True)# 5. 查看标签的分布情况value_counts = churn_pd.flag.value_counts()print(value_counts)# 6. 查看Contract_Month 是否预签约流失情况sns.countplot(data=churn_pd, x='Contract_Month', hue='flag')plt.show()# 3. 定义函数, 表示: 模型训练 和 评测
def dm03_模型训练和评测():# 1. 读取数据churn_pd = pd.read_csv('data/churn.csv')# 2. 数据预处理# 2.1 处理类别型的数据, 类别型数据做 one-hot编码(热编码).churn_pd = pd.get_dummies(churn_pd)# 2.2 去除列 Churn_No, gender_Malechurn_pd.drop(['Churn_No', 'gender_Male'], axis=1, inplace=True)# 2.3 列标签重命名churn_pd.rename(columns={'Churn_Yes': 'flag'}, inplace=True)# 3. 特征处理.# 3.1 提取特征和标签x = churn_pd[['Contract_Month', 'internet_other', 'PaymentElectronic']]y = churn_pd['flag']# 3.2 训练集和测试集的分割x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=21)# 4. 模型训练.estimator = LogisticRegression()estimator.fit(x_train, y_train)# 5. 模型预测y_predict = estimator.predict(x_test)print(f'预测结果: {y_predict}')# 6. 模型评估print(f'准确率: {accuracy_score(y_test, y_predict)}')print(f'准确率: {estimator.score(x_test, y_test)}')# 计算值.print(f'AUC值: {roc_auc_score(y_test, y_predict)}')if __name__ == '__main__':# dm01_数据基本处理()# dm02_特征筛选()dm03_模型训练和评测()
坚持分享 共同进步
相关文章:

人工智能知识分享第六天-机器学习_逻辑回归(Logistic Regression)
简介 在机器学习中,分类问题是一种常见的任务,目标是根据输入特征将数据点分配到不同的类别中。为了实现分类,我们需要训练一个分类器,该分类器能够根据输入数据的特征进行预测。 逻辑回归(Logistic Regression&…...

基于Springboot + vue实现的校园周边美食探索及分享平台
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...

初学STM32 --- 外部SRAM
目录 SRAM简介 SRAM特性: XM8A51216 功能框图 8080并口读时序编辑 8080并口写时序 SRAM 读写操作步骤 FSMC介绍 FSMC时序介绍 FSMC控制器对内核地址映射编辑 FSMC HAL库相关驱动 SRAM驱动步骤 SRAM简介 静态随机存取存储器(Static Random-Access Memory&am…...

创龙3588——debian根文件系统制作
文章目录 build.sh debian 执行流程build.sh源码流程 30-rootfs.sh源码流程 mk-rootfs-bullseys.sh源码流程 mk-sysroot.sh源码流程 mk-image.sh源码流程 post-build.sh 大致流程系统制作步骤 build.sh debian 执行流程 build.sh 源码 run_hooks() {DIR"$1"shiftf…...

javacript中function (res) {}与箭头函数表达式(res) =>{}的区别
javacript中function (res) {}与(res) >{}的区别 function (res) {} 代码演示 let shape {name:长方形,say:function(){console.log(我是this.name)setTimeout(function(){console.log(3秒后输出我是: this.name); //this.name为undefined}, 3000)} }shape.sa…...

kylin安装docker
1. 前言 本文详细介绍如何在kylin v10上安装docker。系统环境如下: dockder: 20.10.7 linux os: kylinv 10 (GFB) linux kernel: 4.19.90-52.23.v2207.gfb01.ky10.aarch642. 安装docker 2.1. 下载docker二进制包 wget https://mirror.nju.edu.cn…...

【Yarn】通过JMX采集yarn相关指标的Flink任务核心逻辑
通过JMX采集yarn相关指标的Flink任务核心逻辑 文章目录 通过JMX采集yarn相关指标的Flink任务核心逻辑通过jmx接口查询Yarn队列指标请求JMX配置项核心处理流程输出到kafka格式通过jmx接口查询ResourceManager核心指标请求JMX读取配置yaml配置文件核心处理逻辑输出Kafka格式彩蛋 …...

鸿蒙HarmonyOS开发:基于Swiper组件和自定义指示器实现多图片进度条轮播功能
文章目录 一、概述1、场景介绍2、技术选型 二、实现方案1、图片区域实现2、底部导航点设计3、手动切换 三、所有代码1、设置沉浸式2、外层Tabs效果3、ImageSwiper组件 四、效果展示 一、概述 在短视频平台上,经常可以见到多图片合集。它的特点是:由多张…...

Excel 身份证号计算年龄
1. 设置身份证号列格式 复制身份证列值到记事本或其他地方重新设置身份证号列单元格格式为“文本”将复制出去的身份证号重新复制粘贴回来 2. 年龄列单元格中添加公式 DATEDIF(DATE(LEFT(MID(A2, 7, 8), 4), MID(MID(A2, 7, 8), 5, 2), RIGHT(MID(A2, 7, 8), 2)), TODAY(), …...

【2024年-6月-14日-开源社区openEuler实践记录】探索 test - tools:高效测试的开源宝库
开篇引言 大家好,我是 fzr123,在软件开发领域深耕多年,一直致力于探索各种提升效率的工具与技术。今天,我将为大家深入介绍一款在测试领域极具价值的开源项目——test - tools,它为开发者们提供了一系列强大的测试功能…...

2022浙江大学信号与系统笔记
原视频地址:2022浙江大学信号与系统(含配套课件和代码) - 胡浩基老师-哔哩哔哩 ⭐⭐⭐ 我的笔记:飞书链接 - 信号与系统 基于视频,记得笔记,加了点自己的补充(有的是问 ChatGPT 的)…...

DeepSeek-VL2
《DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding》是 DeepSeek-AI 团队发布的关于视觉语言模型 DeepSeek-VL2 的论文,以下是对该论文的详细介绍: 研究背景与动机 多模态理解的重要性:在当…...

前端⾯试⼋股⽂
1.http 和 https 的基本概念 - http: 是⼀个客⼾端和服务器端请求和应答的标准(TCP),⽤于从 WWW 服务器传输超⽂本到本地浏 览器的超⽂本传输协议。 - https:是以安全为⽬标的 HTTP 通道,即 HTTP 下 加⼊ SSL 层进⾏加密。其作⽤…...

【Rust自学】8.6. HashMap Pt.2:更新HashMap
8.6.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构,这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的,这也意味着这些集合的数据大小无需在编…...

Python异常处理详解:概念、语法与实践
1. 异常的概念 在Python中,异常(Exception)是程序运行时出现的错误或不正常情况。异常通常表示程序在运行时遇到了无法继续执行的条件。Python通过 try/except 语句来捕获和处理异常。 异常可以分为两类: 内建异常:…...

Kotlin在医疗大健康域的应用实例探究与编程剖析(上)
一、引言 1.1 研究背景与意义 在当今数字化时代,医疗行业正经历着深刻的变革。随着信息技术的飞速发展,尤其是人工智能、大数据、物联网等新兴技术的广泛应用,医疗行业数字化转型已成为必然趋势。这种转型旨在提升医疗服务的效率和质量,优化医疗资源配置,为患者提供更加…...

QT----------QT Data Visualzation
实现思路: 配置项目:在 .pro 文件中添加 QT datavisualization 以引入 QT Data Visualization 模块。创建主窗口:使用 QMainWindow 作为主窗口,添加 Q3DScatter、Q3DBars 和 Q3DSurface 等三维视图组件。初始化和创建三维图表&a…...

什么是Sight Words(信号词)
🧡什么是Sight Words(信号词) 简单来说,Sight Words就是我们在日常英语中常用的一些基本词汇。可以把它想象成是学练英语的“基础词汇”,这些词在各种考试中经常出现,也是在生活中必不可少的。 …...

SpringBoot日志快速集成详解-生产实战
SpringBoot日志快速集成详解 1. 添加依赖2. 创建 logback-spring.xml 配置文件示例 logback-spring.xml 配置: 3. 启用 Spring Boot 自动配置4. 配置 Spring Boot 启动日志级别5. 运行与验证 博文专注于最快速的实战,没有那么多逼逼叨叨的理论࿰…...

路由技术在网络中的作用及特点
作用:路径选择:在复杂的网络拓扑结构中,路由技术能够根据网络的当前状态和目标地址,为数据报文选择一条最佳的传输路径,确保数据能够快速、准确地到达目的地。例如,在互联网中,当用户访问一个网…...

【Python系列】Flask 与 FastAPI:两个 Python Web 框架的对比分析
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

云手机:虚拟技术的革命性应用与实体手机的优劣对比
在近年来,随着互联网的火速发展,云手机作为一种新兴的技术产品,在游戏行业特别是手游市场中掀起了一股热潮。云手机,顾名思义,是架设在ARM虚拟服务器上的手机,其独特的虚拟技术为用户带来了前所未有的使用体…...

3. C语言 数据类型
本章目录: 前言:C语言中的数据类型分类1. 基本数据类型1.1 整数类型1.2 浮点类型1.3 字符型常量1.4 字符串常量 2. 枚举类型3. void 类型void类型的使用示例: 4. 类型转换4.1 隐式类型转换4.2 显式类型转换类型转换的注意事项 5. 小结 前言&a…...

npm install 安装选项 -d -s -g
在使用 npm install 时,-d、-g 和 -s 是不同的选项,它们分别代表不同的安装模式或行为。以下是它们的详细解释: 1. -d:--save-dev 含义:将包安装为开发依赖(devDependencies)。使用场景&#…...

pdf预览兼容问题- chrome浏览器105及一下预览不了
使用的"tato30/vue-pdf": "^1.11.2"预览插件,发现chrome浏览器105及一下预览不了 pdfPreview预览组件: <template><div id"vue_pdf_view"><div class"tool_tip"><template v-if"pa…...

【可实战】需求分析-测试计划↓-测试设计-测试执行-测试总结↓(包含测试计划、测试总结模板,以公司要求为准)
一、完成软件测试工作的必要步骤 需求分析-测试计划-测试设计-测试执行-测试总结 二、测试计划 (一)测试计划模版 模板在线查看: https://docs.qq.com/doc/DV2hTamxJWnNDaUFF 模板(百度网盘): 链接&…...

MySQL 03 章——基本的SELECT语句
一、SQL概述 (1)SQL背景知识 SQL(Structured Query Language,结构化查询语言)是使用关系模型的数据库应用语言,与数据直接打交道不同的数据库管理系统生产厂商都支持SQL语句,但都有特有内容 …...

【项目】智能BI洞察引擎 测试报告
目录 一、项目背景BI介绍问题分析项目背景 二、项目功能三、功能测试1、登录测试测试用例测试结果 2、注册测试测试用例测试结果出现的bug 3、上传文件测试测试用例测试结果 4、AI生成图表测试测试用例测试结果 5、分析数据页面测试(异步)测试用例测试结…...

javaEE-文件操作和IO-文件
目录 一.什么是文件 1.文件就是硬盘(磁盘)上的文件。 2.计算机中存储数据的设备: 3.硬盘的物理特征 4.树型结构组织和⽬录 5.文件路径 文件路径有两种表示方式: 6.文件的分类 二、java中文件系统的操作 1.File类中的属性: 2.构造方…...

2025跨年倒计时
<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>2025年跨年倒计时</title><style>/* 页…...