Python在AI中的应用--使用决策树进行文本分类

Python在AI中的应用--使用决策树进行文本分类

  • 文本分类
  • 决策树
    • 什么是决策树
  • scikit
    • 算法
  • 使用scikit的决策树进行文章分类
    • 一个文本分类的Python代码
    • 使用的scikit APIs说明
      • 装入数据集
      • 决策树算法类
        • 类构造器:
      • 构造决策树分类器
      • 产生输出
      • 评估输出结果
        • 分类准确度
        • 分类文字评估报告

文本分类

文本分类是将文本文档分类为预定义类别的过程。
文本分类涉及,根据文本文档的内容,为其分配预定义的类别或标签。

决策树

决策树是分层树结构,它根据输入特征的值,递归地划分特征空间。由于其简单性、可解释性和处理非线性关系的能力,它们特别适合分类任务。

决策树为文本分类提供了清晰易懂的模型,使其成为可解释性与预测能力同样重要的任务的绝佳选择。然而,它们固有的简单性,可能会在处理非常复杂,或微妙的文本数据时,带来挑战。

什么是决策树

决策树是一种非参数监督学习算法,可用于分类和回归任务。它具有分层的树结构,由根节点、分支、内部节点和叶节点组成。

看下列的一个例子,假设您正在尝试评估是否一个动物是家猫,您可以使用以下决策规则来做出选择:
在这里插入图片描述
这种类型的流程图结构还创建了一种易于理解的决策表示形式,使组织中的不同团队能够更好地理解做出决策的原因。

决策树学习采用分而治之的策略,通过进行贪婪搜索,识别树内的最佳分裂点。然后以自上而下、递归的方式,重复此拆分过程,直到所有,或大多数记录都被分类到特定的类标签下。是否所有数据点都被分类为同质集,很大程度上取决于决策树的复杂性。较小的树更容易获得纯叶节点,即单个类中的数据点。

随着树的大小增长,保持这种纯度变得越来越困难,并且通常会导致给定子树内的数据太少。发生这种情况时,称为数据碎片,通常会导致过度拟合。因此,决策树对小树有偏好,这与奥卡姆剃刀中的简约原则是一致的;也就是说,“如无必要,不应增加实体”。换句话说,决策树仅在必要时,才应增加复杂性,因为最简单的解释通常是最好的。为了降低复杂度,并防止过度拟合,通常会采用剪枝的方法;这是一个过程,它删除了在重要性较低的特征上分裂的分支。然后可以通过交叉验证过程来评估模型的拟合度。

决策树保持准确性的另一种方法是通过随机森林算法形成集成;该分类器可以预测更准确的结果,特别是当各个树彼此不相关时。

scikit

Scikit-learn 是一个流行且强大的机器学习库,拥有大量算法,以及用于 ML 可视化、预处理、模型拟合、选择和评估的工具。

  • 算法:包括各种分类、回归和聚类算法,例如支持向量机、随机森林、梯度提升、k-means 和 DBSCAN
  • 工具:提供模型拟合、选择、评估和数据预处理的工具
  • 集成:与其他 Python 库集成良好,例如 NumPy、SciPy、Pandas 和 Matplotlib
  • 易于使用:拥有一致的 API、广泛的文档和许多在线教程
  • 平台:适用于 Linux、MacOS 和 Windows

算法

Scikit-learn 基于 NumPy、SciPy 和 matplotlib 构建,具有许多用于分类、回归和聚类的有效算法。

其中包括支持

  • 支持向量机(Support Vector Machines),支持向量机 (SVM) 算法是一种监督机器学习算法,通过查找,将数据点分为不同类的超平面,来对数据进行分类。目标是,最大化超平面和每个类最近的数据点之间的距离。

  • 雨林(rain forests), 是一种当数据集太大,而无法容纳在内存中时,通过分割分割数据集,构建决策树的说法,不需要整个数据集,来做出分裂决策,只需要一些汇总信息,比如·一个属性的AVC集,如果有更多内存,可以使为属性 AVC组。

  • 梯度提升(Gradient boosting),梯度提升是一种机器学习算法,它结合多个弱模型,来创建更准确、更高效的预测模型。这是一种强大的技术,用于解决复杂的回归和分类问题。

  • k 均值(K-means),K-means 是一种无监督学习算法。它试图在数据中找到离散的分组,在同一组中的成员彼此尽可能相似,并且与其他组的成员尽可能不同。

  • DBSCAN(Density-based spatial clustering of applications with noise),DBSCAN是一种基于密度的聚类算法,它根据数据点彼此的接近程度,将数据点分组在一起。它的工作原理是,识别核心点,并在它们周围扩展集群,核心点就是指定半径内,具有最少数量相邻点的点。

AVC(Attribute-Value Class)集是RainForest提供了一个重要的概念。 AVC特定n个节点的属性集合,由具有不同属性值a和的数据的数量来表征不同的班级。第n个节点的AVC组是由具有第n个节点的所有AVC集合组成的组合集合。和AVC 集的定义,RainForest 算法设法区分决策树中的可扩展性问题来自决策树的质量问题。

Scikit-learn 因其一致且高效设计的 API、大多数算法的广泛文档,以及大量在线教程而拥有相对易于开发的优势。

当前版本可用于流行的平台,包括 Linux、MacOS 和 Windows。

使用scikit的决策树进行文章分类

在 Python 中使用决策树进行文本分类,我们将使用流行的 20 Newsgroups 数据集。该数据集包含大约 20,000 个新闻组文档,分为 20 个不同的新闻组。我们将使用 scikit-learn 获取数据集,预处理文本,使用 TF-IDF 向量化将其转换为特征向量,然后应用决策树分类器进行分类。

一个文本分类的Python代码

from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report, accuracy_score
import matplotlib.pyplot as plt
import numpy as npclass TEXT_CATALOG():DATA_HOME='C:\devs\python_devs\server_client\multi_threads\scikit_dataset'def load_dataset(self):self.categories = ['sci.crypt', 'rec.autos', 'comp.graphics', 'sci.med', 'misc.forsale']data = self.newsgroups_train = fetch_20newsgroups(data_home=TEXT_CATALOG.DATA_HOME, subset='train', categories=self.categories, remove=('headers', 'footers', 'quotes'))self.newsgroups_test = fetch_20newsgroups(data_home=TEXT_CATALOG.DATA_HOME, subset='test', categories=self.categories, remove=('headers', 'footers', 'quotes'))def feature_extraction(self):vectorizer = TfidfVectorizer(stop_words='english')self.X_train = vectorizer.fit_transform(self.newsgroups_train.data)self.X_test = vectorizer.transform(self.newsgroups_test.data)self.y_train = self.newsgroups_train.targetself.y_test = self.newsgroups_test.targetdef class_plot(self):class_distribution = np.bincount(self.y_train)plt.bar(range(len(class_distribution)), class_distribution)plt.xticks(range(len(class_distribution)), self.newsgroups_train.target_names, rotation=45)plt.title('Distribution of Classes in Training Set')plt.xlabel('Class')plt.ylabel('Number of Documents')plt.show()def decision_tree(self):self.clf = DecisionTreeClassifier(random_state=42)self.clf.fit(self.X_train, self.y_train)def apply_metrics(self):y_pred = self.clf.predict(self.X_test)# Evaluate the modelprint("Accuracy:", accuracy_score(self.y_test, y_pred))print("\nClassification Report:\n", classification_report(self.y_test, y_pred, target_names=self.newsgroups_test.target_names))def run_catalog(self):self.load_dataset()self.feature_extraction()self.decision_tree();self.apply_metrics();self.class_plot()if __name__ == "__main__":cat = TEXT_CATALOG()cat.run_catalog()

使用的scikit APIs说明

装入数据集

scikit-learn提供了20个新闻组文本数据集。该数据集包含关于20个主题的,约18000个新闻组帖子,分为两个子集:一个用于训练,一个用于测试。

为了简单并降低计算成本,我们选择 7 个主题的子集并仅使用训练集。

scikit-learn提供了下列的Python API装入数据集
词法: sklearn.datasets.fetch_20newsgroups(*, data_home=None, subset=‘train’, categories=None, shuffle=True, random_state=42, remove=(), download_if_missing=True, return_X_y=False)

参数说明

  • data_home,str 或类似路径,默认=无,指定数据集的下载和缓存文件夹。如果没有,所有 scikit-learn 数据都存储在“~/scikit_learn_data”子文件夹中。
  • subset,子集{‘训练’,‘测试’,‘全部’},默认=‘训练’,选择要加载的数据集:“train”表示训练集,“test”表示测试集,“all”表示两者,并且排序已打乱。
  • categories,类数组,dtype=str,默认=None如果无(默认),则加载所有类别。如果不是“无”,则要加载的类别名称列表(忽略其他类别)。
  • shufflebool,默认=True,是否对数据进行洗牌:对于假设样本独立且同分布 (i.i.d.) 的模型可能很重要,例如随机梯度下降。
  • random_state,int,RandomState实例或None,默认= 42 确定数据集改组的随机数生成。传递一个 int 以在多个函数调用中实现可重现的输出。请参阅术语表。
  • remove,删除元组,默认=() 可以包含(“页眉”、“页脚”、“引号”)的任何子集。每一种文本都会被检测到并从新闻组帖子中删除,以防止分类器过度拟合元数据。“headers”删除新闻组标题,“footers”删除帖子末尾看起来像签名的块,“quotes”删除似乎引用其他帖子的行。“标题”遵循精确的标准;其他过滤器并不总是正确的
  • download_if_missingbool,默认=True, 如果为 False,则在数据在本地不可用时引发 OSError,而不是尝试从源站点下载数据。
  • return_X_y,bool,默认=False。如果为 True,则返回 (data.data, data.target) 而不是 Bunch 对象。

返回值说明

类似字典的对象,具有以下属性。

  • datalist,形状数据列表 (n_samples,) 学习资料清单。
  • target:,形状为 (n_samples,) 的 ndarray目标标签。
  • filenames,形状列表(n_samples,)数据位置的路径。
  • DESCR, str 数据集的完整描述。
  • target_names:形状列表(n_classes,)目标类的名称。
  • (data, target),元组如果 return_X_y=True,两个 ndarray 的元组。第一个包含形状 (n_samples, n_classes) 的二维数组,每行代表一个样本,每列代表特征。第二个形状数组 (n_samples,) 包含目标样本。

决策树算法类

类构造器:

词法:class sklearn.tree.DecisionTreeClassifier(*, criterion=‘gini’, splitter=‘best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, class_weight=None, ccp_alpha=0.0, monotonic_cst=None)

参数说明

  • criterion,可选择的值为,{“gini”,“entropy”,“log_loss”},默认值为“gini”。测量分割质量的函数。支持:
    “gini”, 基尼杂质
    “log_loss”,香农信息增益
    “entropy”,香农信息增益

  • splitter,可选择的值为,{“best”, “random”},默认值为“best”。用于在每个节点选择分裂的策略。支持的策略是
    “best”,选择最佳分割
    “random”,选择最佳随机分割

  • max_depth,该变量类型是int,默认值为None。表示树的最大深度。如果值为None,则扩展节点,直到所有叶子都是纯的,或直到所有叶子包含少于 min_samples_split 样本。

  • min_samples_split,该变量类型是int 或 float,默认值为2。分裂一个内部节点所需的最小样本数。
    如果是 int,则将 min_samples_split 视为最小数量。
    如果是浮点数,则 min_samples_split 是一个分数,而 ceil(min_samples_split * n_samples) 是每次分割的最小样本数。

  • min_samples_leaf,该变量类型是int 或 float,默认值为1。叶节点所需的最小样本数。任何深度的分割点,只有在左右分支中,至少留下min_samples_leaf训练样本时,才会考虑分割。
    如果是 int,则将 min_samples_leaf 视为最小数量。
    如果是浮点数,则 min_samples_leaf 是一个分数,ceil(min_samples_leaf * n_samples) 是每个节点的最小样本数。

  • min_weight_fraction_leaf,该变量类型是float,默认值为0.0。叶节点处所需的(所有输入样本的)权重总和的最小加权分数。当未提供sample_weight时,样本具有相同的权重。

  • max_features,该变量类型是int、float 或 {“sqrt”、“log2”},默认值为None。寻找最佳分割时,要考虑的特征数量:
    如果是int,则考虑每次分割的max_features个特征。
    如果是浮点型,则 max_features 是一个分数,每次分割考虑 max(1, int(max_features * n_features_in_)) 个特征。
    如果“sqrt”,则 max_features=sqrt(n_features)。
    如果“log2”,则 max_features=log2(n_features)。
    如果None,则 max_features=n_features。

  • random_state,该变量类型是int,RandomState实例或None,默认值为None。控制估计器的随机性。即使分割器设置为“best”,在每次拆分时,总是随机排列这些特征。当 max_features < n_features 时,在找到最佳分割之前,算法将在每次分割时,随机选择 max_features个特征。但是,即使 max_features=n_features,找到的最佳分割,也可能在不同的运行中,有所不同。为了在拟合过程中,获得确定性行为,random_state 必须固定为一个整数。

  • max_leaf_nodes,该变量类型是int,默认值为None。以最佳优先的方式,产生具有 max_leaf_nodes 的树。最佳节点定义为,相对杂质更少的节点。如果值为None,则叶节点数量不受限。

  • min_impurity_decrease,该变量类型是float,默认值为0.0。如果分裂导致杂质减少大于或等于该值,则节点将被分裂。加权杂质减少方程如下:

    N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)

    其中N是样本总数,N_t是当前节点的样本数,N_t_L是左子节点中的样本数,N_t_R是右子节点中的样本数。
    如果传递了sample_weight,则N、N_t、N_t_R和N_t_L均指加权和

  • class_weightdict,dict, list of dict or “balanced”,默认值为None。以{class_label:weight}形式,与类关联的权重。如果值是None,则所有类别的权重都应该为1。对于多输出问题,可以按照与 y 的列相同的顺序,提供字典列表。
    对于多输出,应为其自己的字典中,每列的每个类定义权重。例如,对于四类多标签分类,权重应为 [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}],而不是 [{1:1}、{2:5}、{3:1}、{4:1}]。
    “balanced”模式,使用 y 的值自动调整权重,它们与输入数据中的类别频率成反比,即 n_samples / (n_classes * np.bincount(y))
    对于多输出,y的每一列的权重都会相乘。
    如果指定了sample_weight,这些权重将与sample_weight相乘。

  • ccp_alpha,non-negative float,默认值为0.0。是一个复杂性参数,用于最小成本复杂性剪枝。选择具有最大成本复杂度小于ccp_alpha的子树。默认情况下,不执行剪枝。

  • monotonic_cst,array-like of int of shape (n_features),默认值为None。指示对每个特征强制执行的单调性约束。
    1:单调增加
    0:无限制
    -1:单调递减
    如果 monotonic_cst 为 None,则没有任何约束。

    不支持单调性约束:
    多类分类(即当 n_classes > 2 时),
    多输出分类(即当 n_outputs_ > 1 时),
    对缺失值的数据进行分类训练。

构造决策树分类器

fit(X, y, sample_weight=None, check_input=True),从训练数据集 (X, y) ,构建决策树分类器。

参数说明

  • X,{array-like, sparse matrix} of shape (n_samples, n_features)。X是训练输入样本。在内部,它将转换为 dtype=np.float32 并且如果将稀疏矩阵提供给稀疏 csc_matrix。

  • y,array-like of shape (n_samples,) or (n_samples, n_outputs)。y是目标值或类标签,值为整数,或字符串。

  • sample_weight,形状类似数组 (n_samples,),默认值为None。是样本权重。如果值是None,则样本的权重相等。在每个节点中搜索分割时,如果分割产生的子节点的权重为零或负值,则不进行分割。如果拆分会导致,任何子节点中的任何单个类有负权重,则也不进行分割。

  • check_input,该变量类型是bool,默认值为True。允许绕过多个输入检查。除非您知道自己在做什么,否则不要使用此参数。

产生输出

词法:predict(X, check_input=True)
predict对测试数据集X做出预测,返回类,或回归值。

对于分类模型,返回 X 中每个样本的预测类别。对于回归模型,返回基于 X 的预测值。

参数说明

  • X,{array-like, sparse matrix} of shape (n_samples, n_features)。X是测试的输入样本。在内部,它将转换为 dtype=np.float32。

  • check_input,该变量类型是bool,默认值为True。允许绕过多个输入检查。除非您知道自己在做什么,否则不要使用此参数。

  • 返回值,array-like of shape (n_samples,) or (n_samples, n_outputs)。它是预测类别,或预测值。

评估输出结果

分类准确度

sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None)

accuracy_score给出分类准确度分数。

在多标签分类中,此函数计算子集精度:为样本预测的标签集,必须与 y_true 中相应的标签集完全匹配。

参数说明

  • y_true,1d array-like, or label indicator array / sparse matrix。正确的标签。

  • y_pred,1d array-like, or label indicator array / sparse matrix。预测标签,由分类器返回。

  • normalize,该变量类型是bool,默认值为True。如果为 False,则返回正确分类的样本数。否则,返回正确分类样本的分数。

  • sample_weight,array-like of shape (n_samples,),默认值为None。样本权重。

  • 返回,返回值类型是float or int。
    如果normalize == True,则返回正确分类样本的分数(float),否则,返回正确分类样本的数量(int)。最佳性能为 1。

分类文字评估报告

词法:sklearn.metrics.classification_report(y_true, y_pred, *, labels=None, target_names=None, sample_weight=None, digits=2, output_dict=False, zero_division=‘warn’)

classification_report构建显示主要分类指标的文字报告。

参数说明

  • y_true,1d array-like, or label indicator array / sparse matrix。正确的目标值。

  • y_pred,1d array-like, or label indicator array / sparse matrix。分类器返回的估计目标。

  • labels,array-like of shape (n_labels,),默认值为None。报告中的可选标签索引列表。

  • target_names,array-like of shape (n_labels,), 默认值为None。与标签匹配的可选显示名称,相同顺序。

  • sample_weight,array-like of shape (n_samples,),默认值为None。样本权重。

  • digits,该变量类型是int,默认值为2。用于格式化输出浮点值的位数。当output_dict为True时,这将被忽略,并且返回的值,将不会被舍入。

  • Zero_division,{“warn”, 0.0, 1.0, np.nan},默认值为“warn”。当除零时,zero_division就是返回值。如果设置为“warn”,则其作用为 0,但也会产生警告。

  • output_dict,该变量类型是bool,默认值为False。如果为 True,则以 dict 形式,返回输出。

  • 返回,该返回类型是str 或 dict。每个类别的准确率、召回率、F1 分数的文本摘要。如果 output_dict 为 True,则返回字典。字典具有以下结构:

下面展示一些 内联代码片

{'label 1': {'precision':0.5,'recall':1.0,'f1-score':0.67,'support':1},'label 2': { ... },...
}

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

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

相关文章

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22 引言: 全球最热销的国产游戏-《黑神话: 悟空》不仅给世界各地玩家们带来愉悦&#xff0c;而且对计算机人工智能研究也带来新的思考。在本期的论文速读中&#xff0c;我们带来一篇关于视觉语言模型&#xff0…

漫步者头戴式耳机好用吗?漫步者、西圣、万魔顶级机型测评对比

现在市面上有很多头戴式耳机&#xff0c;它们都基本精进主动降噪功能&#xff0c;以让大家在生活中能更少受到噪音的干扰&#xff0c;所以对于有降噪需求的人来说&#xff0c;头戴式耳机就是很适合他们的一种耳机。作为一名数码测评博主&#xff0c;也有很多人问我漫步者头戴式…

C++的vector优化

1、C中的动态数组一般是特指vector类 2、vector需要优化的原因之一是当我们push_back元素到数组中时&#xff0c;如果原来分配给动态数组的内存不够用了&#xff0c;那么就会找一块更大的内存空间分配给数组&#xff0c;把旧的内容复制到新的内存中去&#xff0c;这就是导致程…

大数据处理从零开始————3.Hadoop伪分布式和分布式搭建

1.伪分布式搭建&#xff08;不会用&#xff0c;了解就好不需要搭建&#xff09; 这里接上一节。 1.1 伪分布式集群概述 伪分布式集群就是只有⼀个服务器节点的分布式集群。在这种模式中&#xff0c;我们也是只需要⼀台机器。 但与本地模式不同&#xff0c;伪分布式采⽤了分布式…

C++简单缓冲区类设计

目录 1.引言 2.静态缓冲区 3.动态缓冲区 4.数据引用类 5.自动数据引用类 6.几种缓冲区的类关系图 7.注意事项 8.完整代码 1.引言 在C中&#xff0c;设计静态和动态缓冲区类时&#xff0c;需要考虑的主要差异在于内存管理的方式。静态缓冲区类通常使用固定大小的内存区域…

红绿灯倒计时读秒数字识别系统源码分享

红绿灯倒计时读秒数字识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of …

Power Automate 设置流Owner不生效的bug

在查找某个功能没生效时&#xff0c;定位到是一个Power automate的流停了&#xff0c;查看原因是因为创建流的owner被disable了 但是当把流的owner更新为可用的用户时&#xff0c;流依旧没被触发&#xff0c;触发的条件很简单&#xff0c;某个表的记录创建时&#xff0c;因为是…

Java流程控制语句——条件控制语句详解(附有流程图)#Java条件控制语句有哪些?#if-else、switch

在 Java 编程中&#xff0c;条件控制语句用于控制程序的执行路径&#xff0c;决定根据某些条件来选择执行某段代码或跳过某段代码。它们是 Java 编程的重要组成部分&#xff0c;帮助开发者根据不同的输入、状态或数据流来编写更加灵活和动态的代码。在本文中&#xff0c;我们将…

CORE MVC 过滤器 (筛选器)

MVC FrameWork MVCFramework MVC Core 过滤器 分 同步、异步 1、 授权筛选器 IAuthorizationFilter&#xff0c;IAsyncAuthorizationFilter 管道中运行的第一类筛选器&#xff0c;用来确定发出请求的用户是否有权限发出当前请求 2、资源筛选器 IResourceFilter &#xff0c;…

部分监督多器官医学图像分割中的标记与未标记分布对齐|文献速递--基于多模态-半监督深度学习的病理学诊断与病灶分割

Title 题目 Labeled-to-unlabeled distribution alignment for partially-supervised multi-organ medical image segmentation 部分监督多器官医学图像分割中的标记与未标记分布对齐 01 文献速递介绍 多器官医学图像分割&#xff08;Mo-MedISeg&#xff09;是医学图像分析…

【Python报错已解决】ModuleNotFoundError: No module named ‘tensorflow‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

DAY16||513.找树左下角的值 |路径总和|从中序与后序遍历序列构造二叉树

513.找树左下角的值 题目&#xff1a;513. 找树左下角的值 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: […

Techub专访顾荣辉教授:解密CertiK的安全战略路线

当 Web3 安全审计公司还在争抢审计份额时&#xff0c;CertiK 已经开始将目光瞄准即将进军 Web3 的传统商业巨头。CertiK 不仅在传统行业进行白帽行动获得如苹果公司的官方感谢&#xff0c;还是 Web3 行业唯一一家拥有 SOC 2 和 ISO 认证的 Web3 的安全公司。基于此&#xff0c;…

猫头虎 分享已解决Bug: || Module not found: Can‘t resolve ‘react‘ 解决方案

&#x1f42f;猫头虎 分享已解决Bug&#xff1a; || Module not found: Cant resolve react 解决方案 摘要: 今天猫头虎带大家解决一个常见的前端问题&#xff0c;尤其是在 React 项目中&#xff0c;很多开发者在安装依赖包时&#xff0c;遇到过 Module not found: Cant resol…

裁剪视频如何让画质不变?一文教会你

当我们想要从一段视频中提取精华&#xff0c;裁剪视频就成了必不可少的技能。 但是&#xff0c;如何做到在裁剪过程中不损害画质&#xff0c;保持视频原有的清晰度和流畅度呢&#xff1f; 这不仅需要技巧&#xff0c;还需要对视频编辑有一定的了解。 本文将为你介绍四种裁剪…

基于SSM的图书管理管理系统的设计与实现 (含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的图书管理管理系统4拥有两种角色&#xff0c;用户可以浏览评论图书、登录注册&#xff0c;管理员可以进行图书馆管理、用户管理、分类管理等功能 1.1 背景描述 图书书店销售管理…

jenkins声明式流水线语法详解

最基本的语法包含 pipeline&#xff1a;所有有效的声明式流水线必须包含在一个 pipeline 块中stages&#xff1a;包含一系列一个或多个stage指令stage&#xff1a;stage包含在stages中进行&#xff0c;比如某个阶段steps&#xff1a;在阶段中具体得执行操作&#xff0c;一个或…

了解网络的相关信息

文章目录 前言了解网络的相关信息1. ip是什么?1.1. 公网IP:1.2. 私有IP:1.2.1. 示例 2. 子网掩码3. 子网掩码的划分网段是什么4. 特殊的回路IP网段(127.0.0.1)5. 端口 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#x…

VIGOSERVO帝人伺服驱动器维修ARN135-F ARS135-25

帝人VIGOSERVO驱动器维修TEIJIN SEIKI伺服驱动器全系列型号修理。 关于VIGOSERVO伺服驱动器维修的相关内容&#xff0c;可以归纳为以下几个方面&#xff1a; 一、维修概述 VIGOSERVO伺服驱动器作为自动化设备组件&#xff0c;多应用于工业机器人、数控加工等高精度传动系统中…

如何实现工业设备联网?天拓四方

一、引言 随着信息技术的快速发展&#xff0c;工业设备联网已成为推动工业4.0和智能制造的核心技术之一。工业设备联网通过将传统的工业设备与互联网、云计算、大数据等技术相结合&#xff0c;实现了设备之间的互联互通&#xff0c;数据共享与智能分析&#xff0c;极大地提高了…