机器学习深度学学习分类模型中常用的评价指标总结记录与代码实现说明

在机器学习深度学习算法模型大开发过程中,免不了要对算法模型进行对应的评测分析,这里主要是总结记录分类任务中经常使用到的一些评价指标,并针对性地给出对应的代码实现,方便读者直接移植到自己的项目中。

【混淆矩阵】

混淆矩阵(Confusion Matrix)是评价分类模型性能的一种常用工具,它展示了模型的预测结果与真实标签之间的关系。混淆矩阵是一个二维矩阵,行表示真实标签,列表示模型的预测结果。

混淆矩阵的原理如下:

假设我们有一个二分类模型,类别分别为正例和负例。混淆矩阵的四个元素分别表示:

  • 真正例(True Positive,TP):模型将正例正确地预测为正例的数量。
  • 假正例(False Positive,FP):模型将负例错误地预测为正例的数量。
  • 假负例(False Negative,FN):模型将正例错误地预测为负例的数量。
  • 真负例(True Negative,TN):模型将负例正确地预测为负例的数量。

下面是一个示例混淆矩阵:

              预测结果|   正例  |   负例  |
真实标签  正例 |   TP    |   FN    |负例 |   FP    |   TN    |

混淆矩阵的优点:

  • 提供了对分类模型性能的全面评估,可以直观地展示模型的预测结果和错误类型。
  • 可以计算多种评价指标,如准确率、精确率、召回率等,从不同角度分析模型的性能。

混淆矩阵的缺点:

  • 只适用于分类任务,对于回归任务无法直接使用。
  • 当类别数量较多时,混淆矩阵会变得更加复杂,不易直观解读。

Demo代码实现如下所示:

import numpy as np
from sklearn.metrics import *# 真实标签
true_labels = [0, 1, 1, 0, 1, 0, 0, 1, 1, 1]
# 模型预测结果
predicted_labels = [0, 1, 0, 0, 1, 1, 0, 1, 1, 0]# 计算混淆矩阵
cm = confusion_matrix(true_labels, predicted_labels)
print("Confusion Matrix:")
print(cm)

【准确率】

准确率(Accuracy)是评价分类模型性能的常用指标之一,它表示模型正确分类的样本数量与总样本数量之间的比例。

准确率的计算公式为:

准确率 = (TP + TN) / (TP + TN + FP + FN)

其中,TP表示真正例的数量,TN表示真负例的数量,FP表示假正例的数量,FN表示假负例的数量。

准确率的优点:

  • 直观易懂:准确率可以直观地衡量模型的整体分类性能,它给出的是模型正确分类的比例。
  • 平衡性:准确率考虑了模型对所有类别样本的分类情况,能够反映模型的整体性能。

准确率的缺点:

  • 对样本不平衡敏感:当数据集中的样本分布不均衡时,准确率可能会给出误导性的结果。例如,在一个二分类问题中,如果负样本占大多数,模型只需预测为负样本即可获得很高的准确率,但对于正样本的分类效果可能很差。
  • 忽略了错误类型:准确率无法区分模型的错误类型,无法告诉我们模型在预测中的具体偏差。

Demo代码实现如下所示:

from sklearn.metrics import accuracy_score# 真实标签
true_labels = [0, 1, 1, 0, 1, 0, 0, 1, 1, 1]
# 模型预测结果
predicted_labels = [0, 1, 0, 0, 1, 1, 0, 1, 1, 0]# 计算准确率
accuracy = accuracy_score(true_labels, predicted_labels)
print("Accuracy:", accuracy)

【精确率】

精确率(Precision)是机器学习和深度学习分类模型常用的评价指标之一,它衡量的是模型在预测为正例的样本中真正为正例的比例。

精确率的计算公式为:

精确率 = TP / (TP + FP)

其中,TP表示真正例的数量,FP表示假正例的数量。

精确率的优点:

  • 强调正例的准确性:精确率专注于模型将负例错误预测为正例的情况,它能够评估模型在预测为正例的样本中的准确性。
  • 适用于正例重要的场景:在一些应用中,正例的预测结果更为重要,如罕见疾病的诊断。精确率可以帮助我们衡量模型在这些场景下的性能。

精确率的缺点:

  • 忽略了假负例:精确率无法区分模型的假负例情况,即模型将正例错误地预测为负例的情况。在一些应用中,假负例的影响可能非常重要,如癌症的诊断。因此,仅仅使用精确率来评估模型可能会忽略这些重要的错误预测。

Demo代码实现如下所示:

from sklearn.metrics import precision_score# 真实标签
true_labels = [0, 1, 1, 0, 1, 0, 0, 1, 1, 1]
# 模型预测结果
predicted_labels = [0, 1, 0, 0, 1, 1, 0, 1, 1, 0]# 计算精确率
precision = precision_score(true_labels, predicted_labels)
print("Precision:", precision)

【召回率】

召回率(Recall),也称为灵敏度(Sensitivity)或真正例率(True Positive Rate),是机器学习和深度学习分类模型常用的评价指标之一。它衡量的是模型在所有真实正例中能够正确预测为正例的比例。

召回率的计算公式为:

召回率 = TP / (TP + FN)

其中,TP表示真正例的数量,FN表示假负例的数量。

召回率的优点:

  • 关注正例的识别能力:召回率可以评估模型对正例的识别能力,即模型能够正确找出多少个真实正例。
  • 适用于假负例重要的场景:在一些应用中,假负例的影响较为重要,如癌症的诊断。召回率可以帮助我们衡量模型在这些场景下的性能。

召回率的缺点:

  • 忽略了假正例:召回率无法区分模型的假正例情况,即模型将负例错误地预测为正例的情况。在一些应用中,假正例的影响可能非常重要,如垃圾邮件过滤。因此,仅仅使用召回率来评估模型可能会忽略这些重要的错误预测。

Demo代码实现如下所示:

from sklearn.metrics import recall_score# 真实标签
true_labels = [0, 1, 1, 0, 1, 0, 0, 1, 1, 1]
# 模型预测结果
predicted_labels = [0, 1, 0, 0, 1, 1, 0, 1, 1, 0]# 计算召回率
recall = recall_score(true_labels, predicted_labels)
print("Recall:", recall)

【F1值】

F1值是机器学习和深度学习分类模型中常用的综合评价指标,它同时考虑了模型的精确率(Precision)和召回率(Recall)。F1值的计算公式为:

F1 = 2 * (Precision * Recall) / (Precision + Recall)

其中,精确率和召回率的计算方式如下:

精确率 = TP / (TP + FP)
召回率 = TP / (TP + FN)

F1值的优点:

  • 综合考虑了精确率和召回率:F1值综合了精确率和召回率,可以更全面地评估模型的分类性能。它能够同时衡量模型的正例识别能力和负例识别能力,对于不平衡数据集和分类任务来说是一个较好的评价指标。
  • 适用于正负样本不平衡的场景:在一些分类任务中,正负样本的比例可能会存在较大的不平衡。F1值对于这类场景非常有用,因为它能够平衡考虑模型对正负样本的预测能力。

F1值的缺点:

  • 对精确率和召回率平衡要求较高:F1值假设精确率和召回率具有相同的重要性,并且对两者的平衡要求较高。在某些应用场景下,精确率和召回率的重要性可能不同,因此仅仅使用F1值来评估模型的性能可能会忽略这种差异。
  • 受数据分布影响较大:F1值的计算受到数据分布的影响,特别是在正负样本不平衡的情况下。当数据分布发生变化时,F1值的结果也会随之变化,因此在评估模型时需要谨慎考虑数据的分布情况。

Demo代码实现如下所示:

from sklearn.metrics import f1_score# 真实标签
true_labels = [0, 1, 1, 0, 1, 0, 0, 1, 1, 1]
# 模型预测结果
predicted_labels = [0, 1, 0, 0, 1, 1, 0, 1, 1, 0]# 计算F1值
f1 = f1_score(true_labels, predicted_labels)
print("F1 Score:", f1)

【ROC曲线】

ROC曲线(Receiver Operating Characteristic curve)是机器学习和深度学习分类模型中常用的评价指标,用于衡量分类模型的性能。ROC曲线通过绘制真正例率(True Positive Rate,TPR)和假正例率(False Positive Rate,FPR)之间的关系图来评估模型的分类准确性。

TPR和FPR的计算方式如下:

  • TPR = TP / (TP + FN)
  • FPR = FP / (FP + TN)

其中,TP表示真正例(模型正确预测为正例的样本数),FN表示假负例(模型错误预测为负例的样本数),FP表示假正例(模型错误预测为正例的样本数),TN表示真负例(模型正确预测为负例的样本数)。

ROC曲线的绘制过程如下:

  1. 计算模型预测结果的置信度(概率或得分)。
  2. 选择不同的阈值将置信度映射为二分类的预测结果。
  3. 根据不同的阈值计算对应的TPR和FPR。
  4. 绘制TPR-FPR曲线,横轴为FPR,纵轴为TPR。

ROC曲线的优点:

  • 不受分类阈值的影响:ROC曲线通过绘制TPR和FPR之间的关系图,不依赖于分类阈值的选择,能够全面地评估模型在不同阈值下的性能。
  • 直观反映分类模型的性能:ROC曲线能够直观地展示模型在正负样本之间的权衡关系,帮助我们理解模型的分类能力。

ROC曲线的缺点:

  • 无法直接比较模型的性能:ROC曲线可以用于比较同一模型在不同阈值下的性能,但不能直接比较不同模型之间的性能差异。为了比较不同模型的性能,需要使用其他指标,如曲线下面积(AUC)。
  • 受样本分布影响较大:ROC曲线的计算受到样本分布的影响,特别是在正负样本不平衡的情况下。当数据分布发生变化时,ROC曲线的形状和结果也会随之变化,因此在评估模型时需要注意数据的分布情况。

Demo代码实现如下所示:

import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, roc_auc_score# 真实标签
true_labels = [0, 1, 1, 0, 1, 0, 0, 1, 1, 1]
# 模型预测结果的置信度(概率或得分)
predicted_scores = [0.2, 0.8, 0.6, 0.3, 0.7, 0.4, 0.1, 0.9, 0.7, 0.5]# 计算TPR和FPR
fpr, tpr, thresholds = roc_curve(true_labels, predicted_scores)# 计算AUC
auc = roc_auc_score(true_labels, predicted_scores)# 绘制ROC曲线
plt.plot(fpr, tpr, label=f'AUC = {auc:.2f}')
plt.plot([0, 1], [0, 1], 'k--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc='lower right')
plt.show()

【AUC值】

AUC(Area Under the Curve)是机器学习模型评价中常用的指标之一,用于评估二分类模型的性能。AUC值表示了分类模型在不同阈值下的预测能力,即正确地将正例排在负例前面的能力。AUC的取值范围在0到1之间,数值越接近1表示模型的性能越好,数值越接近0.5则表示模型的性能越差。

AUC的计算方法是通过绘制ROC曲线(Receiver Operating Characteristic curve)来得到的。ROC曲线以模型的真正例率(True Positive Rate,也称为召回率)作为纵轴,以模型的假正例率(False Positive Rate)作为横轴,将模型在不同阈值下的表现绘制成曲线。AUC值则表示ROC曲线下的面积大小。

AUC的优点包括:

  1. 对分类器的输出结果不敏感:AUC值只受到模型的排序能力影响,而不受到具体的分类阈值影响,因此对于不同的阈值选择不敏感。
  2. 适用于不平衡数据集:AUC在处理不平衡数据集时比准确率(Accuracy)等指标更加稳定,能够更好地评估模型的性能。

AUC的缺点包括:

  1. 无法直接解释模型的性能:AUC仅仅是对模型的排序能力进行评估,无法提供模型在实际任务中的准确性。
  2. 对于类别不平衡的数据集,AUC可能会高估模型的性能:当数据集中的正例和负例比例严重失衡时,AUC可能会给出不准确的评估结果。

Demo代码实现如下所示:

from sklearn.metrics import roc_auc_score# 假设y_true是真实的标签,y_pred是模型的预测概率
y_true = [0, 1, 0, 1]
y_pred = [0.2, 0.8, 0.3, 0.6]# 计算AUC值
auc = roc_auc_score(y_true, y_pred)
print("AUC:", auc)

【KS( Kolmogorov-Smirnov)曲线】

KS(Kolmogorov-Smirnov)曲线是机器学习模型评价中常用的指标之一,用于评估二分类模型的性能。KS曲线基于累积分布函数(CDF)的比较,可以帮助我们确定最佳的分类阈值。

KS曲线的原理是通过比较正例和负例的累积分布函数来评估模型的分类能力。具体而言,KS曲线以模型的预测概率作为横轴,以累积正例比例和累积负例比例的差值(也称为KS统计量)作为纵轴,绘制出模型在不同阈值下的性能曲线。KS统计量表示了模型在不同概率阈值下正例和负例之间的最大差异。

KS曲线的优点包括:

  1. 直观易懂:KS曲线直观地展示了正例和负例之间的差异,可以帮助我们选择最佳的分类阈值。
  2. 对于不平衡数据集较为敏感:KS曲线能够更好地评估模型在不平衡数据集中的性能,因为它关注的是正例和负例之间的差异。

KS曲线的缺点包括:

  1. 无法直接解释模型的性能:KS曲线仅仅是对模型在不同阈值下的分类能力进行评估,无法提供模型在实际任务中的准确性。
  2. 对于类别不平衡的数据集,KS曲线可能会高估模型的性能:当数据集中的正例和负例比例严重失衡时,KS曲线可能会给出不准确的评估结果。

Demo代码实现如下所示:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve# 假设y_true是真实的标签,y_pred是模型的预测概率
y_true = np.array([0, 1, 0, 1])
y_pred = np.array([0.2, 0.8, 0.3, 0.6])# 计算正例和负例的累积分布函数
fpr, tpr, thresholds = roc_curve(y_true, y_pred)
ks = np.max(np.abs(tpr - fpr))# 绘制KS曲线
plt.plot(thresholds, tpr, label="TPR")
plt.plot(thresholds, fpr, label="FPR")
plt.xlabel("Threshold")
plt.ylabel("Rate")
plt.title("KS Curve (KS = {:.3f})".format(ks))
plt.legend()
plt.show()

【PR曲线】

PR(Precision-Recall)曲线是机器学习分类模型中常用的性能评价指标之一,用于评估二分类模型的性能。PR曲线以召回率(Recall)为横轴,精确率(Precision)为纵轴,描述了在不同阈值下模型的性能变化。

PR曲线的原理是通过比较模型在不同阈值下的精确率和召回率来评估模型的性能。精确率定义为模型预测为正例的样本中真正为正例的比例,召回率定义为模型正确预测为正例的样本占所有真实正例样本的比例。通过改变分类阈值,可以得到一系列精确率和召回率的值,从而绘制PR曲线。

PR曲线的优点包括:

  1. 对于不平衡数据集较为敏感:PR曲线能够更好地评估模型在不平衡数据集中的性能,因为它关注的是正例样本的预测准确性和召回率。
  2. 直观易懂:PR曲线直观地展示了模型在不同阈值下的性能变化,可以帮助我们选择最佳的分类阈值。

PR曲线的缺点包括:

  1. 不适用于比较不同模型:PR曲线不能直接用于比较不同模型的性能,因为不同模型的基准线可能不同。在比较模型性能时,可以使用PR曲线下面积(AUC-PR)作为指标。
  2. 无法直接解释模型的准确性:PR曲线仅仅是对模型在不同阈值下的性能进行评估,无法提供模型在实际任务中的准确性。

Demo代码实现如下所示:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve# 假设y_true是真实的标签,y_pred是模型的预测概率
y_true = np.array([0, 1, 0, 1])
y_pred = np.array([0.2, 0.8, 0.3, 0.6])# 计算精确率和召回率
precision, recall, thresholds = precision_recall_curve(y_true, y_pred)# 绘制PR曲线
plt.plot(recall, precision)
plt.xlabel("Recall")
plt.ylabel("Precision")
plt.title("PR Curve")
plt.show()

【Lift值】

Lift值是机器学习和数据挖掘领域中常用的评价指标之一,用于评估分类模型的性能。Lift值可以帮助我们了解模型在不同预测概率范围内的效果相比于随机选择的效果有多好。

Lift值的原理是通过比较模型预测结果与随机选择结果之间的差异来评估模型的性能。具体而言,Lift值是用模型的预测结果中正例比例与随机选择结果中正例比例的比值表示。这个比值可以告诉我们模型在不同预测概率范围内相比于随机选择的效果有多好。

Lift值的优点包括:

  1. 直观易懂:Lift值可以直观地表示模型的性能相对于随机选择的提升程度。
  2. 可解释性:Lift值可以帮助我们了解模型在不同预测概率范围内的效果,对于业务场景的解释具有一定的帮助。

Lift值的缺点包括:

  1. 无法直接解释模型的准确性:Lift值仅仅是对模型相对于随机选择的效果进行评估,无法提供模型在实际任务中的准确性。
  2. 受数据分布影响较大:Lift值对数据分布敏感,当数据分布发生变化时,Lift值的解释可能会有所变化。

Demo代码实现如下所示:

import numpy as np# 假设y_true是真实的标签,y_pred是模型的预测概率
y_true = np.array([0, 1, 0, 1])
y_pred = np.array([0.2, 0.8, 0.3, 0.6])# 将预测概率按从大到小排序
sorted_indices = np.argsort(y_pred)[::-1]
sorted_y_true = y_true[sorted_indices]# 计算正例比例和随机选择结果中的正例比例
positive_ratio = np.cumsum(sorted_y_true) / np.sum(sorted_y_true)
random_positive_ratio = np.arange(1, len(y_true) + 1) / len(y_true)# 计算Lift值
lift = positive_ratio / random_positive_ratioprint("Lift values:", lift)

【Kappa系数】

Kappa系数(Kappa coefficient)是一种用于评估分类模型性能的指标,常用于衡量分类器的准确性与判断的一致性。Kappa系数考虑了分类器的准确性与随机选择之间的差异,可以帮助我们判断模型的性能是否超过了随机选择的水平。

Kappa系数的原理是通过比较分类器的预测结果与真实标签之间的一致性来评估模型的性能。Kappa系数的取值范围为[-1, 1],其中1表示完全一致,0表示与随机选择一样,-1表示完全不一致。Kappa系数的计算考虑了分类器的预测结果与真实标签之间的一致性,同时考虑了随机选择的效果。

Kappa系数的优点包括:

  1. 考虑了随机选择的效果:Kappa系数通过与随机选择进行比较,可以帮助我们判断模型的性能是否优于随机选择的水平。
  2. 对不平衡数据集较为鲁棒:Kappa系数相对于准确率等指标对不平衡数据集更为鲁棒,因为它考虑了分类器的预测结果与真实标签之间的一致性。

Kappa系数的缺点包括:

  1. 无法解释模型的准确性:Kappa系数仅仅是对分类器的一致性进行评估,无法提供模型在实际任务中的准确性。
  2. 受类别不平衡的影响:Kappa系数对类别不平衡较为敏感,当类别不平衡较为严重时,Kappa系数的解释可能会受到影响。

Demo代码实现如下所示:

from sklearn.metrics import cohen_kappa_score# 假设y_true是真实的标签,y_pred是模型的预测结果
y_true = [0, 1, 0, 1]
y_pred = [0, 1, 1, 1]# 计算Kappa系数
kappa = cohen_kappa_score(y_true, y_pred)print("Kappa coefficient:", kappa)

【宏平均、维平均】

宏平均(Macro-average)和微平均(Micro-average)是常用的评价分类模型性能的指标,用于计算多类别分类模型的准确率、召回率和F1值等指标。

宏平均的原理是先计算每个类别的准确率、召回率和F1值,然后对所有类别的指标进行平均。宏平均对每个类别都赋予了相同的权重,无论类别的样本数量多少,都被视为同等重要。宏平均适用于各个类别的重要性相同的情况。

宏平均的优点包括:

  1. 公平性:宏平均对每个类别都赋予了相同的权重,能够平等对待各个类别,适用于各个类别的重要性相同的情况。
  2. 直观易懂:宏平均计算简单,对于理解模型在不同类别上的性能有一定帮助。

宏平均的缺点包括:

  1. 不考虑类别的样本数量:宏平均不考虑类别的样本数量差异,对于样本数量不平衡的情况,可能无法准确反映模型的性能。
  2. 对小类别影响较大:宏平均对每个类别都赋予相同的权重,对于小类别的性能表现可能会被大类别的性能表现所主导。

微平均的原理是将所有类别的预测结果合并后计算准确率、召回率和F1值。微平均将所有类别的样本都视为一个整体,对每个样本赋予相同的权重。微平均适用于样本数量不平衡的情况。

微平均的优点包括:

  1. 考虑样本数量差异:微平均将所有类别的样本视为一个整体,能够考虑样本数量的差异,适用于样本数量不平衡的情况。
  2. 对大类别影响较大:微平均对每个样本都赋予相同的权重,对于大类别的性能表现可能会对整体性能有较大影响。

微平均的缺点包括:

  1. 不公平性:微平均将所有类别的样本都视为一个整体,对每个样本赋予相同的权重,可能不公平对待样本数量较少的类别。
  2. 可能无法准确反映各个类别的性能:由于将所有类别的样本合并计算指标,微平均可能无法准确反映各个类别的性能。

Demo代码实现如下所示:

from sklearn.metrics import precision_score, recall_score, f1_score# 假设y_true是真实的标签,y_pred是模型的预测结果
y_true = [0, 1, 0, 1]
y_pred = [0, 1, 1, 1]# 计算宏平均
macro_precision = precision_score(y_true, y_pred, average='macro')
macro_recall = recall_score(y_true, y_pred, average='macro')
macro_f1 = f1_score(y_true, y_pred, average='macro')# 计算微平均
micro_precision = precision_score(y_true, y_pred, average='micro')
micro_recall = recall_score(y_true, y_pred, average='micro')
micro_f1 = f1_score(y_true, y_pred, average='micro')print("Macro Precision:", macro_precision)
print("Macro Recall:", macro_recall)
print("Macro F1:", macro_f1)
print("Micro Precision:", micro_precision)
print("Micro Recall:", micro_recall)
print("MicroF1:", micro_f1)

如果还有其他相关的指标欢迎评论区留言补充,我一并补充进来。

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

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

相关文章

FreeRTOS-软件定时器

软件定时器 在FreeRTOS中可以设置无数个软件定时器,都是基于系统滴答中断。 使用软件定时器需要指定时间:启动定时器和运行回调函数。启动定时器和运行回调函数的间隔为定时器的周期。 使用软件定时器需要指定类型:一次性(回调函数…

逆天营销!“保温杯”免费送,月赚600万的秘密大揭露!

导语:听说过“免费送”的商业模式吗?现实中就有这样的案例,有人通过“保温杯免费送”的策略,一个月内狂赚600万!你一定想知道这是怎么做到的吧?本文将为你揭示这个神秘商业模式的奥秘! 一、疯狂…

java--抽象类的常见应用场景:模板方法设计模式

1.模板方法设计模式解决了什么问题? ①解决方法中存在重复代码的问题。 2.模板方法设计模式的写法 1、定义一个抽象类。 2、在里面定义2个方法 ①一个是模板方法:把相同代码放里面去。 ②一个是抽象方法:具体实现交给子类完成。 分析&…

PyQt6 QFontComboBox字体组合框控件

​锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计35条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话…

webpack学习-1.起步

webpack学习-1.起步 1.基础设置2.配置文件的引入3.总结 1.基础设置 首先 webpack是干嘛的呢,用官网的一张图 Webpack 是一个现代的静态模块打包工具。它主要用于将前端应用程序中的各种资源(例如 JavaScript、CSS、图片等)打包成一个或多个…

HTML CSS JavaScript的网页设计

一、网页界面效果&#xff1a; 二、HTML代码&#xff1a; <!DOCTYPE html> <!-- 声明文档类型--> <html lang"en"> …

HarmonyOS/OpenHarmony应用开发

OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目, 目标是面向全场景、全连接、全智能时代, 搭建一个智能终端设备操作系统的框架和平台, 促进万物互联产业的繁荣发展。 了解OpenHarmony HarmonyOS是华为通过OpenHarmony项目&#xff0c;结合商业…

java--接口概述

1.认识接口 ①java提供了一个关键字interface&#xff0c;用这个关键字我们可以定义出一个特殊的结构&#xff1a;接口。 ②注意&#xff1a;接口不能创建对象&#xff1b;接口是用来被类实现(implements)的&#xff0c;实现接口的类称为实现类。 ③一个类可以实现多个接口(接…

14、pytest像用参数一样使用fixture

官方实例 # content of test_fruit.py import pytestclass Fruit:def __init__(self, name):self.name nameself.cubed Falsedef cube(self):self.cubed Trueclass FruitSalad:def __init__(self, *fruit_bowl):self.fruit fruit_bowlself._cube_fruit()def _cube_fruit(s…

如何使用Node.js快速创建本地HTTP服务器并实现异地远程访问

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

MySQL基础『数据类型』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; MySQL 学习 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 &#x1f381;软件版本&#xff1a; MySQL 5.7.44 文章目录 1.数据类型一览2.整型2.1.INT2.2.BIT 3.浮点数3.1.FLOAT3.2.DECIMAL3…

倚天屠龙:Github Copilot vs Cursor

武林至尊&#xff0c;宝刀屠龙。号令天下&#xff0c;莫敢不从。倚天不出&#xff0c;谁与争锋&#xff01; 作为开发人员吃饭的家伙&#xff0c;一款好的开发工具对开发人员的帮助是无法估量的。还记得在学校读书的时候&#xff0c;当时流行CS架构的RAD&#xff0c;Delphi和V…

香港虚拟信用卡如何办理,支持香港apple id

什么是虚拟信用卡&#xff1f; 虚拟信用卡&#xff0c;英文称之为Virtual Credit Card Numbers&#xff0c;就是指没有实体卡片&#xff0c;是基于银行卡上面的BIN码所生成的虚拟账号。通常用于进行网络交易&#xff0c;使用起来很方便&#xff0c;也很安全。 它与实体信用卡…

vue之mixin混入

vue之mixin混入 mixin是什么&#xff1f; 官方的解释&#xff1a; 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时&#xff0c;所有混入对象的选项将被“混合”进入该组件本身的…

热门文章采集器【2023】

自媒体成为了许多人追逐的梦想&#xff0c;而爆文则是迈向成功的关键一步。随着越来越多的内容涌现&#xff0c;如何找到独特而引人注目的素材成为了自媒体创作者们面临的难题。本文将深入讲解当下热门的文章采集器&#xff0c;分享使用过的工具经验。 1.文章采集器的作用&…

DevOps搭建(三)-Git安装详细步骤

前面两篇文章我们讲了如何安装swappiness安装和虚拟机。这篇我们详细讲下如何安装Git。 1、YUM源更改为阿里云镜像源 1.1、备份CentOS-Base.repo 先备份原有的 CentOS-Base.repo 文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup…

RAR解压软件|怎么解压文件?|软件教学

咱说正事&#xff0c;之前不是给大家推荐了几个解压软件吗。 但是发现很多小伙伴下载了不会用&#xff0c;所以&#xff01;我来了&#xff01; 之前推荐的解压精灵&#xff0c;真的超级方便&#xff01;我们一般打开压缩文件需要先解压才能查看&#xff0c;很多人都是把文件传…

Linux系统中进程间通信(Inter-Process Communication, IPC)

文章目录 进程间通信介绍进程间通信目的进程间通信发展 管道什么是管道 匿名管道用fork来共享管道原理站在文件描述符角度-深度理解管道站在内核角度-管道本质管道读写规则管道特点 命名管道创建一个命名管道匿名管道与命名管道的区别命名管道的打开规则 命名管道的删除用命名管…

Shopify二次开发之三:liquid语法学习(访问Objects和Schema数据模型)

目录 Objects &#xff08;对象&#xff09; 全局对象 all_products&#xff1a;商店中所有的商品 articles: 商店中的所有文章 collections&#xff1a;商店中所有的集合 模板对象 在product.json&#xff08;配置的section中) 访问product对象 在collection.json中可…

1D和2D布朗运动matlab

布朗运动是一种随机现象&#xff0c;下面的M函数brwnm2.m给出了二维Brown运动&#xff0c;其中[t0,tf]是时间区间&#xff0c;h是采样步长&#xff0c;w(t)&#xff0c;z(t)是布朗运动。function [t,w,z]brwnm2(t0,tf,h) tt0:h:tf; xrandn(size(t))*sqrt(h); yrandn(size(t))*s…