用于改进筛查的乳腺癌异常检测

news2024/7/6 19:55:32

介绍

乳腺癌是一种严重的疾病,影响着全世界数以百万计的妇女。即使医学领域有了进步,对乳腺癌进行识别和治疗是可能的,但发现它并在早期阶段治疗它仍然是不可能的。

通过使用异常检测技术,我们可以识别出乳腺癌中肉眼可能看不到的微小但重要的模式。通过提高筛查方法的准确性,可以挽救许多生命,我们可以帮助他们战胜乳腺癌。

在这一代计算机控制的医疗保健中,异常检测是一种强大的工具,可以改变我们处理乳腺癌筛查和治疗的方式。

679475a93cb40c68c90a6fc524927f1d.jpeg

学习目标

在本文中,我们将执行以下操作:

  1. 我们将探索数据并识别任何潜在的异常情况。

  2. 我们将创建可视化效果以更好地了解数据及其异常情况。

  3. 我们将训练并建立一个模型来检测任何异常数据点。

  4. 我们将分析和解释我们的结果,以得出关于乳腺癌的有意义的结论。

什么是乳腺癌?

当乳腺细胞不受控制地生长并且可以在乳房的各个部位发现时,乳腺癌就会发生。它可以通过血管和淋巴管扩散到身体的其他部位,从而发生转移。

为什么早期发现乳腺癌至关重要?

当我们忽视或不关心癌症症状或延迟治疗时,生存机会就会很低。与此相关的问题会更多,在后期或最后阶段,治疗可能无效,医疗保健费用也会增加。早期治疗可能有助于战胜癌症,因此尽早治疗非常重要。

乳腺癌有哪些类型?

有几种类型的乳腺癌,其中一些是:

  • IDC(浸润性导管癌)

  • ILC(浸润性小叶癌)

  • IBC(炎性乳腺癌)

  • TNBC(三阴性乳腺癌)

  • MBC(转移性乳腺癌)

  • DCIS(导管原位癌)

  • LCIS(小叶原位癌)

乳腺癌的症状

  • 在腋下或乳房形成新的肿块。

  • 乳房或部分乳房会肿胀。

  • 乳房附近的刺激。

  • 乳头或乳房附近的皮肤可能会变干。

  • 乳房区域可能有疼痛。

乳腺癌的诊断

对于乳腺癌的诊断,需要进行以下操作:

  • 乳房检查:在此过程中,医生将检查双侧乳房是否有肿块或任何其他异常。

  • 乳房 X 光检查:乳房 X 光检查称为乳房 X 光检查。这些通常用于筛查乳腺癌。如果在 X 光片中发现任何异常,医生会建议进行进一步手术所需的治疗。

  • 乳房超声检查:进行乳房超声检查以检查形成的肿块是实性肿块还是充满液体的囊肿。

  • 样品采集:这个过程称为活检。在此过程中,使用专门的针头装置对肿块进行取样,并从患处提取肿块的核心。

检测乳腺癌的最佳方法

活组织检查,即乳房 X 光检查是识别乳腺癌的最佳方法之一。另一个最好的方法据说是MRI(磁共振成像),通过它我们可以识别出乳腺癌的风险程度。

我们如何使用机器学习检测乳腺癌?

我们可以使用许多机器学习算法来检测乳腺癌疾病,这些算法包括支持向量机、决策树和神经网络。

使用这些算法,我们可以在早期预测癌症,这将有助于减缓疾病的传播并增加挽救患者生命的可能性。

理解数据和问题陈述

本项目使用的数据集来自 UCI 机器学习库,包含 569 个乳腺癌实例和 30 个属性。感兴趣的读者可以点击以下链接下载数据集:https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Diagnostic)

该数据集在 scikit-learn 库中可用,scikit-learn 库是一个流行的 Python 机器学习库。通过阅读此博客,读者将更好地了解检测乳腺癌数据异常所涉及的复杂性,以及如何有效地将数据集用于机器学习目的。

问题陈述——乳腺癌异常检测

该项目的目标是了解数据并找出不规则乳腺癌的发生。在这里,我们将使用Python中的孤立森林库来构建和训练模型,以找到数据集中不均匀的数据点。

最终,我们将研究并阐明我们的结果,以从数据中得出有意义的结论。

项目的管道

项目管道包括多个步骤,它们是:

  • 导入库

  • 加载数据集

  • 探测数据分析

  • 数据预处理

  • 可视化数据

  • 将数据拆分为训练和测试数据集

  • 使用 IsolationForest 预测异常

  • 使用 LocalOutlierFactor 预测异常

第 1 步:导入库

import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns12345python

第 2 步:加载和读取数据集

df = pd.read_csv('data.csv')
df.head(5)

输出:

f3834fea3326335c0b8fe9dec27b682a.jpeg

第 3 步:探测数据分析

3.1:获取数据中的前5条记录

df.head(5)

输出:

2b3d6080ca59599f36d869be58f80626.jpeg

3.2:找出数据集中的列数

df.columns

输出:

Index(['id', 'diagnosis', 'radius_mean', 'texture_mean', 'perimeter_mean',
'area_mean', 'smoothness_mean', 'compactness_mean', 'concavity_mean',
'凹点_均值','对称_均值','分形_维数_均值',
'radius_se', 'texture_se', 'perimeter_se', 'area_se', 'smoothness_se',
'compactness_se', 'concavity_se', '凹点_se', 'symmetry_se',
'fractal_dimension_se', 'radius_worst', 'texture_worst',
'perimeter_worst', 'area_worst', 'smoothness_worst',
'compactness_worst', 'concavity_worst', 'concave points_worst',
'symmetry_worst', 'fractal_dimension_worst', 'Unnamed: 32'],
dtype='对象')
1234567891011蟒蛇

3.3:求数据长度

print('length of data is', len(df))

输出:

数据长度为569

3.4:获取数据的形状

df.shape

输出:

(569, 33)

3.5:数据信息

df.info()

输出:

ecaeb2aa7f18f9d318b53997bdc558ed.jpeg

3.6:列的数据类型

df.dtypes

输出:

6036d6e8d2af94d69659bbb4a25a8e6c.jpeg

3.7:查找数据集是否有空值

np.sum(df.isnull().any(axis=1))

输出:

0

3.8:数据集中的行数和列数

print('Count of columns in the data is: ', len(df.columns))
print('Count of rows in the data is: ', len(df))

输出:

数据中的列数为:31

数据中的行数是:569

3.9:检查诊断的唯一值

df['diagnosis'].unique()

输出:

array([1, 0])

3.10:诊断值个数

df['diagnosis'].nunique()

输出:

2个

第 4 步:数据预处理

4.1:处理缺失值

在预处理过程中,如果数据集包含缺失值,处理缺失值是最重要的步骤之一。缺失值的存在会导致许多问题,例如它可能会导致程序出错,或者只是数据一开始就不可用。根据数据的性质,有许多技术可以处理错误类型。

基本上,有些技术总是适合处理缺失值。在某些情况下,如果缺失值非常少或非常多或与给定数据无关或可能对构建模型没有用,我们会删除行或列。我们将使用 is.null() 函数来查找缺失值。

def null_values(data): 
  null_values = data.isnull().sum() 
  null_values = null_values[null_values > 0] 
  null_values.sort_values(inplace=True) 
  print(null_values) 
null_values(datas)

输出:

Series([ ], dtype: int64)

数据中没有缺失值。

4.2:编码数据

在数据预处理阶段,下一步涉及将数据编码为适合模型构建的形式。此步骤涉及将分类变量转换为数字形式,即,将变量的数据类型从对象更改为 int64,将数据缩小到标准范围,或应用任何其他转换来创建干净的数据集。

在这个基于项目的博客中,我们将使用 sklearn 中的 LabelEncoder 方法。预处理库将分类变量转换为数值变量,以便我们可以在训练模型时使用该变量。

为了进一步详细说明数据预处理步骤,对数据进行编码甚至可视化非常重要。许多图不会使用分类变量来解释结果,因为它们是基于数值计算的。虽然我们在这个基于项目的博客中使用的是LabelEncoder方法,但我们也可以根据模型的需要使用one-hot encoding、binary encoding等方法。

将数据缩放到标准范围对于确保变量的权重相等,以及我们的模型不偏向某个特定特征非常必要。这可以使用标准化或规范化等方法来实现。

在下面的代码中,我们首先从 sklearn 导入 LabelEncoder。预处理然后创建该方法的对象。最后我们将使用该对象调用 fit_transform 函数将指定变量转换为数值数据类型。

from sklearn.preprocessing import LabelEncoder
le=LabelEncoder()
data['diagnosis']=le.fit_transform(data['diagnosis'])
df.head()

输出:

0e9e557a8efdba5b6feca0aefb180133.jpeg

第 5 步:可视化数据

为了更好地理解数据及其异常,我们将尝试不同类型的可视化。在这些可视化中,我们可以执行散点图、直方图、箱线图等。通过这种方式,我们可以识别不太可能与原始数据相关的数据异常值和模式。这些将主要帮助我们构建有效的异常检测模型。

除此之外,我们还可以使用其他技术(例如聚类或回归分析)来进一步分析数据并了解模型的各种属性。

总的来说,我们的主要目标是建立一个独特且可靠的模型,该模型可以准确地检测并引导我们发现数据中的任何异常或意外模式,这有助于我们在可能造成任何重大损害之前发现可能出现的问题。

#Number of Malignant(M) and Benign(B) cells

plt.figure(figsize=(8, 6))

sns.countplot(x='diagnosis', data=df, palette= ['#FFC0CB', '#ADD8E6'],  
            edgecolor='black', linewidth=1.5)

plt.title('Diagnosis Count', fontsize=20, fontweight='bold')
plt.xlabel('Diagnosis', fontsize=14)
plt.ylabel('Count', fontsize=14)

ax = plt.gca()

for patch in ax.patches:
    plt.text(x=patch.get_x()+0.4, y=patch.get_height()+2, 
    s=str(int(patch.get_height())), fontsize=12)

输出:

2192ce9ca31539f114563322657e3752.jpeg
plt.figure(figsize=(25,15))
sns.heatmap(df.corr(),annot=True, cmap='coolwarm')

输出:

c10e939c9e63057790e31c63a5a6bbb9.jpeg

核密度估计图显示了乳腺癌数据集中良性和恶性肿瘤中“radius_mean”的分布

def plot_distribution(df, var, target, **kwargs):
    row = kwargs.get('row', None)
    col = kwargs.get('col', None)
    facet = sns.FacetGrid(df, hue=target, aspect=4, row=row, col=col)
    facet.map(sns.kdeplot, var, shade=True)
    facet.set(xlim=(0, df[var].max()))
    facet.add_legend()
    plt.show()
plot_distribution(df, var='radius_mean', target='diagnosis')

输出:

75b2496d54ec948b02f969a562af942e.jpeg

散点图显示了乳腺癌数据集的良性和恶性肿瘤中“radius_mean”和“texture_mean”之间的关系。

def plot_scatter(df, var1, var2, target, **kwargs):
    row = kwargs.get('row', None)
    col = kwargs.get('col', None)
    facet = sns.FacetGrid(df, hue=target, aspect=4, row=row, col=col)
    facet.map(plt.scatter, var1, var2, alpha=0.5)
    facet.add_legend()
    plt.show()
plot_scatter(df, var1='radius_mean', var2='texture_mean', target='diagnosis')

输出:

b11333b167e22f21c9120ad108e5d651.jpeg
import plotly.express as px
fig = px.parallel_coordinates(df, dimensions=['radius_mean', 'texture_mean', 'perimeter_mean', 
          'area_mean', 'smoothness_mean', 'compactness_mean', 
          'concavity_mean', 'concave points_mean', 'symmetry_mean', 
          'fractal_dimension_mean'],
      color='diagnosis', color_continuous_scale=px.colors.sequential.Plasma, 
    labels={'radius_mean': 'Radius Mean', 'texture_mean': 'Texture Mean', 
  perimeter_mean': 'Perimeter Mean', 'area_mean': 'Area Mean', 
  'smoothness_mean': 'Smoothness Mean', 'compactness_mean': 'Compactness Mean', 
   'concavity_mean': 'Concavity Mean', 'concave points_mean': 'Concave Points Mean', 
   symmetry_mean': 'Symmetry Mean', 'fractal_dimension_mean': 'Fractal Dimension Mean'},
   title='Breast Cancer Diagnosis by Mean Characteristics')

fig.show()

输出:

abbca487be45d3a3ff3e6aad8290f05f.jpeg

第 6 步:模型开发

模型开发过程利用 Python 的 scikit-learn 库来训练和开发识别隐藏数据点的孤立模型。使用了一种称为孤立森林的无监督学习算法,该算法以其在异常检测中的有效性而闻名。它涉及创建一个随机的孤立树森林,用随机选择的数据子集对每个树进行训练。根据数据点的平均路径长度检测异常值。

通过使用这种技术,我们可以识别数据中未在原始数据中立即识别的隐藏异常值和模式。总的来说,我们可以说孤立森林算法是一种强大的乳腺癌数据异常检测工具,它还能够彻底改变我们筛查和治疗这种疾病的方法。

6.1:将数据拆分为特征和目标

from sklearn.feature_selection import SelectKBest, f_classif
# Split the data into features and target
X = df.drop(['diagnosis'], axis=1)
y = df['diagnosis']

6.2:打印X和Y值:

x.head()

输出:

ccf22b6f59b05dadd6783d7ecb634ed5.jpeg
y.head()

输出:

输出

6.3:使用 SelectKBest 和 f_classif 进行特征选择

# Performing feature selection using SelectKBest and f_classif
selector = SelectKBest(score_func=f_classif, k=5)
selector.fit(X, y)

输出:

SelectKBest

SelectKBest(k=5)

6.4:获取所选特征的索引

# Getting the indices of the selected features
selected_indices = selector.get_support(indices=True)

6.5:获取选中特征的名称并打印

# Getting the names of the selected features
selected_features = X.columns[selected_indices].tolist()
# Printing the selected features
print(selected_features)

输出:

[‘perimeter_mean’, ‘concave points_mean’, ‘radius_worst’, ‘perimeter_worst’, ‘concave points_worst’]

第 7 步:将数据拆分为训练和测试数据集

x = df[selected_features]
y = df['diagnosis']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.3)

第 8 步:使用 IsolationForest 预测异常

8.1:在训练数据上拟合孤立森林模型

from sklearn.ensemble import IsolationForest
from sklearn.metrics import classification_report
# Fit an Isolation Forest model on the training data
clf = IsolationForest(n_estimators=100, max_samples="auto", contamination="auto", random_state=42)
clf.fit(X_train)

输出:

IsolationForest

IsolationForest(random_state=42)

8.2:使用模型预测测试数据中的异常值

# Using the model to predict outliers in the test data
y_pred = clf.predict(X_test)
y_pred = np.where(y_pred == -1, 1, 0)  # Convert -1 (outlier) to 1, and 1 (inlier) to 0

输出:

array([1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0])

8.3:绘制异常值

# plot the outliers keep in  red color
plt.figure(figsize=(10,10))
plt.hist(y_test[y_pred==0], bins=20, alpha=0.5, label="Inliers")
plt.hist(y_test[y_pred==1], bins=20, alpha=0.5, label="Outliers")
plt.xlabel("Diagnosis (0: benign, 1: malignant)")
plt.ylabel("Frequency")
plt.title("Outliers detected by Isolation Forest")
plt.legend()
plt.show()

输出:

2f2a951c85bc0270773142352f523e32.jpeg

第 9 步:使用 LocalOutlierFactor 预测异常

9.1:预测异常

import plotly.graph_objs as go
from sklearn.neighbors import LocalOutlierFactor

model = LocalOutlierFactor(n_neighbors=20, contamination=0.05)
model.fit(X)
# Predicting anomalies
y_pred1 = model.fit_predict(X)

9.2:创建散点图并为注释添加图例

# Creating scatter plot
fig = go.Figure()

fig.add_trace(
    go.Scatter(
        x=X.iloc[:, 0],
        y=X.iloc[:, 1],
        mode='markers',
        marker=dict(
            color=y_pred1,
            colorscale='viridis'
        ),
        hovertemplate='Feature 1: %{x}<br>Feature 2: %{y}<extra></extra>'
    )
)

fig.update_layout(
    title='Local Outlier Factor Anomaly Detection',
    xaxis_title='Feature 1',
    yaxis_title='Feature 2'
)

# Add legend annotations
normal_points = go.Scatter(x=[], y=[], mode='markers', 
            marker=dict(color='yellow'), showlegend=True, name='Normal')
anomaly_points = go.Scatter(x=[], y=[], 
        mode='markers', marker=dict(color='darkviolet'), showlegend=True, name='Anomaly')
  
for i in range(len(X)):
    if y_pred1[i] == 1:
        normal_points['x'] += (X.iloc[i, 0],)
        normal_points['y'] += (X.iloc[i, 1],)
    else:
        anomaly_points['x'] += (X.iloc[i, 0],)
        anomaly_points['y'] += (X.iloc[i, 1],)

fig.add_trace(normal_points)
fig.add_trace(anomaly_points)

fig.show()

输出:

664f1aeb4d6df8260eb4010af02ff81d.jpeg

结论

在这个基于项目的博客中,我们研究了乳腺癌数据中的异常检测。我们使用 Python 的 Scikit-learn 库构建和训练孤立森林模型,以检测数据集中的隐藏数据点。该模型能够发现数据中的异常值和隐藏模式,并帮助我们得出有意义的结论。

通过改进筛查方法的准确性,我们有可能挽救无数生命并帮助他们抗击乳腺癌。通过使用这些机器学习和数据可视化技术,我们可以更好地理解与检测乳腺癌数据异常相关的并发症,我们可以在学习有效治疗方法方面领先一步。总而言之,该项目取得了显著成功,并为乳腺癌数据分析和异常检测找到了一种新方法。

关键要点

  • 通过使用异常检测方法,我们可以识别乳腺癌数据中微妙但重要的模式。

  • 通过提高筛查方法的准确性,我们可以挽救许多生命并帮助战胜乳腺癌。

  • Isolation Forest 算法是检测乳腺癌数据异常的强大工具,有可能彻底改变我们对这种疾病进行筛查和治疗的方法。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

de43fb8d1101cc608965dae93ff911a2.jpeg

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

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

相关文章

STM32——关于EXTI讲解及标准库应用(基础篇)

简介&#xff1a; STM32的中断包括EXTI外部中断、TIM定时器、ADC模数转换器、USART串口&#xff0c;SPI通信、I2C通信等一系列的外设。这篇主要来讲解关于EXTI外部中断的概念和应用。EXTI&#xff08;External Interrupt&#xff09;是一个非常重要的外部中断模块&#xff0c;…

chatgpt赋能python:Python多条图形绘制在一张图里的实现方法及应用

Python多条图形绘制在一张图里的实现方法及应用 作为一款优秀的编程语言&#xff0c;Python在数据可视化方面有着非常出色的表现。然而有时候我们需要在一张图里绘制多条不同的图形&#xff0c;这时候Python又有什么好的解决方案呢&#xff1f;本文将介绍多种方法实现Python在…

10个最流行的可生成图像嵌入向量的预训练AI模型

迁移学习的出现进一步加速了计算机视觉——图像分类用例的快速发展。 在大型图像数据集上训练计算机视觉神经网络模型需要大量的计算资源和时间。 幸运的是&#xff0c;通过使用预训练模型可以缩短时间和资源。 利用预训练模型的特征表示的技术称为迁移学习。 预训练通常使用高…

《MySQL(三):基础篇- 函数》

文章目录 3. 函数3.1 字符串函数3.2 数值函数3.3 日期函数3.4 流程函数 3. 函数 函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着&#xff0c;这一段程序或代码在MySQL中 已经给我们提供了&#xff0c;我们要做的就是在合适的业务场景调用对应的函数完成对应…

Vue.js 中的响应式原理是什么?

Vue.js 中的响应式原理是什么&#xff1f; Vue.js 是一种流行的前端框架&#xff0c;它使用了一种称为“响应式”的技术来实现数据绑定。这意味着当数据发生变化时&#xff0c;Vue.js会自动更新相关的视图&#xff0c;而无需手动操作DOM。在本文中&#xff0c;我们将深入探讨V…

【SCI征稿】Elsevier旗下中科院2区TOP, 仅1周见刊, 6月11日截稿 (文末有好)~

一、【期刊简介】 中科院2区智能计算类SCI (TOP/6.11截稿) 【期刊概况】IF:8.0-9.0, JCR1区, 中科院2区&#xff1b; 【终审周期】走期刊部系统&#xff0c;3-5个月左右录用&#xff1b; 【检索情况】SCI&EI双检&#xff1b;正刊&#xff1b; 【数据库收录年份】2001年…

RHCE练习题目【更新至】

文章目录 第一题、安装和配置ansible第二题、创建和运行ansible临时命令第三题、使用剧本安装软件包第四题、使用RHEL系统脚色第一问、配置时间同步第二问、配置selinux 第五题、使用Ansible Galaxy安装角色第六题、创建和使用角色第七题、从Ansible Galaxy使用角色第八题、创建…

一文搞定国民N32G435高负载串口通信

副标题&#xff1a;USRAT无硬件双缓冲条件下的软件双缓冲 一、前言 在单片机中&#xff0c;USART的通信一般都是最常用也最先去接触的串口外设&#xff0c;在一般的小数据量应用中一般不需要考虑USART串口&#xff08;以下简称为串口&#xff09;的高负载能力&#xff0c;比如…

第六十五天学习记录:高等数学:函数与极限(宋浩板书)

C语言学习后&#xff0c;曾为先学C还是数据结构纠结了半天。在看数据结构前言的时候&#xff0c;发现学习数据结构之前还需要一定的数学基础。虽然涉及到的数学基础不多&#xff0c;但想到以前大学高数&#xff0c;现代不是60分万岁就是不到80分&#xff0c;好像就概率论稍微了…

【Python】Python系列教程-- Python3 循环语句(十七)

文章目录 前言while 循环无限循环while 循环使用 else 语句简单语句组for 语句for...elserange() 函数break 和 continue 语句及循环中的 else 子句pass 语句 前言 往期回顾&#xff1a; Python系列教程–Python3介绍&#xff08;一&#xff09;Python系列教程–Python3 环境…

Treap C++代码实现

一、全部代码 #include <iostream> #include <cstdlib> #include <time.h>using namespace std;//Treap结构 struct TreapNode {TreapNode *pLeft, *pRight;int value, fix; };//左旋 void TreapLeftRotate(TreapNode* &pCur){//首先&#xff0c;找到当…

平衡树原理讲解

平衡树——Treap 文章目录 平衡树——TreapBST定义性质操作插入insert(o, v)删除del(o, v)找前驱 / 后继get_prev(o)、get_next(o)查找最大 / 最小值get_min(o)、get_max(o)求元素排名get_rank(o)查找排名为 k k k的元素get_value_by_rank 平衡树左旋、右旋zag(o)、zig(o)左旋右…

Vue路由(vue-router)详细讲解指南

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成&#xff0c;让构建单页面应用变得易如反掌。路由实际上就是可以理解为指向&#xff0c;就是我在页面上点击一个按钮需要跳转到对应的页面&#xff0c;这就是路由跳转&#xff1b; 首先我们来学习三个单词&…

运维小白必学篇之基础篇第八集:LVM实验

LVM实验 实验一&#xff1a; 使用/dev/sdb磁盘完成以下操作&#xff1a; 1、创建5个物理卷&#xff0c;组成大小为10G的卷组vgtest 2、创建大小为3G的逻辑卷lv1&#xff0c;格式化xfs文件系统&#xff0c;实现开机自动挂载 3、为lv1逻辑卷扩容至5G&#xff0c;然后查看扩容之…

男子路遇“纸片鸟”,AI帮忙免惹祸

据报道&#xff0c;近日&#xff0c;河南洛阳一网友在路边偶遇一只“纸片鸟”&#xff0c;小鸟远看像一张纸片&#xff0c;样子十分奇特&#xff0c;而且还死死地盯着自己&#xff0c;像是求救&#xff0c;后来他用手机一查发现是二级保护动物“黄斑苇鳽”&#xff0c;便报警处…

排水管网监测预警系统:为城市排水建设提质增效

最近&#xff0c;城市生命线安全工程占据着行业的头条榜单&#xff0c;与民众生活密不可分的城市基础设施&#xff0c;包括城市的燃气、桥梁、供水、排水、供热、综合管廊等被称为城市生命线。城市生命线安全工程是城市更新和新型城市基础设施建设的重要内容&#xff0c;其主要…

数说故事×中广协丨广告代言人内容商业沙龙走进大湾区

以“娱时俱进&#xff0c;内容赋能”为主题的广告代言人内容商业沙龙&#xff08;大湾区站&#xff09;&#xff0c;近日在广州市白云区美湾广场成功举行。 沙龙由中国广告协会作为指导单位&#xff0c;广东省广告协会与中国广告协会广告代言人工作委员会联合主办&#xff0c;广…

机器视觉陶瓷板外观缺陷检测系统应用

随着科技的不断发展&#xff0c;机器视觉技术在工业领域的应用越来越广泛。其中&#xff0c;机器视觉陶瓷板外观缺陷检测系统是一项十分重要的技术。该系统利用计算机视觉技术对陶瓷板表面的缺陷进行自动化检测&#xff0c;大大提高了生产效率和产品质量。 机器视觉陶瓷板外观…

智能应用搭建平台——LCHub低代码表单 vs 流程表单 vs 仪表盘

1. LCHub低代码如何选择 「流程表单」:填报数据,并带有流程审批功能,适合报销、请假申请或其他工作流; 「表单」:填报数据,并带有数据协作功能,如修改、删除、导入、导出,并可以给不同的人不同的管理权限; 「仪表盘」:数据分析处理、结果展示功能,如数据汇总、趋…

如何实现Web3去中心化云计算的大规模采用?

随着区块链技术的迅猛发展&#xff0c;Web3去中心化云计算正在逐渐崭露头角。它以分布式、安全和透明的特点&#xff0c;为用户和企业提供了许多独特的优势。 然而&#xff0c;要实现Web3去中心化云计算的大规模采用&#xff0c;仍然面临着一些挑战。本文将探讨这些挑战&#x…