【机器学习】经典数据集鸢尾花的分类识别

embedded/2024/12/22 2:09:21/

机器学习】经典数据集鸢尾花的分类识别

  • 1、数据集介绍
    • 1.1 数据集详情
  • 2、实验内容
    • 2.1 准备数据集
    • 2.2 创建颜色映射对象
    • 2.3 绘制特征散点图
    • 2.4 数据的归一化
    • 2.5 数据的标准化
  • 3、实验截图
    • 提取萼片长度与萼片宽度分类
    • 提取萼片长度与花瓣长度分类
    • 提取萼片长度与花瓣宽度分类
    • 提取萼片宽度与花瓣长度分类
    • 提取萼片宽度与花瓣宽度分类
    • 提取花瓣长度与花瓣宽度分类


1、数据集介绍

       鸢尾花(Iris)是单子叶百合目花卉,是一种比较常见的花,而且鸢尾花的品种较多。鸢尾花数据集(Iris dataset)是非常著名的机器学习数据集之一,常被用来进行分类和模式识别任务的训练和评估。
       鸢尾花数据集最初由Edgar Anderson 测量得到,而后在著名的统计学家和生物学家R.A Fisher于1936年发表的文章中被使用,用其作为线性判别分析(Linear Discriminant Analysis)的一个例子,证明分类的统计方法,从此而被众人所知,尤其是在机器学习这个领域。


1.1 数据集详情

       该数据集包含了三个品种的鸢尾花(Setosa、Versicolor、Virginica)每个品种各有50个样本,共计150个样本。对于每个样本,测量了4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),以及其所属的品种标签。
       数据集包括4个属性,分别为花萼的长、花萼的宽、花瓣的长和花瓣的宽。对花瓣我们可能比较熟悉,花萼是什么呢?花萼是花冠外面的绿色被叶,在花尚未开放时,保护着花蕾。四个属性的单位都是cm,属于数值变量,四个属性均不存在缺失值的情况,字段如下表所示:

字段名称含义
sepal length萼片长度
sepal width萼片宽度
petal length花瓣长度
petal width花瓣宽度
Species品种类别:分别是:Setosa、Versicolour、Virginica

2、实验内容

       目标要求:通过选取鸢尾花的四种特征中的任意两种特征,对鸢尾花数据集进行种类的分类识别,并对识别后的结果进行统一化与标准化。

2.1 准备数据集

       注:在实验前需要注意可视化的中文以及负号显示,使用以下代码:

plt.rcParams['font.sans-serif'] = ['SimHei']    # 显示中文  
plt.rcParams['axes.unicode_minus'] = False      # 显示负号  

       首先使用 load_iris() 函数加载鸢尾花数据集,并将特征矩阵存储在 X 中,分类值存储在 y 中。
       数据集里面的特征依次为花萼长、宽和花瓣长、宽; 而类别标签为0,1,2分别表示山鸢尾(setosa),变色鸢尾(versicolor)和维吉尼亚鸢尾(virginica)
       然后,通过索引操作从 X 中提取了前5条数据,即 X[0:5],以及第二个品种对应的前5条数据: X[50:55]。使用 np.concatenate 函数将这两组数据合并为一个新的特征矩阵 X1。接下来,同样的操作也应用于目标值 y,提取了相应的标签并存储在 y1 中。


2.2 创建颜色映射对象

       使用了 matplotlib.colors.ListedColormap 函数创建了一个颜色映射对象 cm_dark。这个函数接受一个包含颜色名称或颜色代码的列表作为参数。在这里,我传入了一个包含红色、绿色和蓝色的列表 [‘r’, ‘g’, ‘b’]。
       可以将 cm_dark 应用于绘图中的相关元素,以改变它们的颜色显示效果。例如,可以在绘制散点图时使用 cmap=cm_dark 参数将数据点的颜色设置为红、绿、蓝三种颜色之一。


2.3 绘制特征散点图

       使用 plt.scatter 函数绘制了两个特征(萼片长度和萼片宽度)的散点图,并根据目标值 y1 的类别将数据点着色。
       plt.scatter 函数的第一个参数是要绘制的数据点的 x 坐标,即萼片长度(X1[:, 0]);第二个参数是 y 坐标,即萼片宽度(X1[:, 1])。
       通过设置 c=np.squeeze(y1),您将目标值 y1 的类别用作颜色映射的输入。它会根据类别的不同,将数据点着上不同的颜色。edgecolor=‘k’ 设置边缘颜色为黑色。s=50 设置散点的大小为 50。最后,使用 plt.show() 显示绘制的散点图。
在绘制散点图中使用:

plt.grid(color='black', linestyle='--')//添加网格线,颜色为黑色,线型为虚线。
plt.xlabel('sepal length(萼片长度)')  
plt.ylabel('sepal width(萼片宽度)')//分别设置 x 轴和 y 轴的标签。
plt.title("通过提取萼片长度与宽度的分类")//设置图表的标题。
handles, labels = scatter.legend_elements()//获取散点图中的每个类别对应的标记和标签
//定义图例中的标签内容
legend_labels = ['山鸢尾花(Iris-setosa)','变色鸢尾花(Iris-versicolor)']
//创建图例,并将标记和标签添加进去。
plt.legend(handles, legend_labels, loc='best')

下图为一个可视化的示例:

import numpy as np
from matplotlib import pyplot as plt
import matplotlib as mpl
from sklearn.svm import SVCfrom sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']	# 显示中文
plt.rcParams['axes.unicode_minus'] = False		# 显示负号data = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
print(X1)y1 = np.concatenate([y[0:5], y[50:55]])
print(y1)cm_dark = mpl.colors.ListedColormap(['r', 'g', 'b'])#通过提取列表的第一个特征与第二个特征,即萼片长度与萼片宽度
scatter=plt.scatter(X1[:,0],X1[:,1], c=np.squeeze(y1), edgecolor='k', s=50)plt.grid(color='black', linestyle='--')
plt.xlabel('sepal length(萼片长度)')
plt.ylabel('sepal width(萼片宽度)')
plt.title("通过提取萼片长度与宽度的分类")
# 创建图例
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
plt.legend(handles, legend_labels, loc='best')
plt.show()

在这里插入图片描述


2.4 数据的归一化

       归一化(Normalization) 是将数值型数据缩放到一个固定的范围,通常是[0, 1]。归一化可以通过以下公式实现:
                                                                X_norm = (X - X_min) / (X_max - X_min)
       其中,X表示原始数据,X_norm表示归一化后的数据,X_min和X_max分别表示原始数据的最小值和最大值。
       归一化使得不同特征的数据具有相同的尺度范围,避免了某些特征对模型训练产生过大的影响。常见的归一化方法有最大最小值归一化和Z-score归一化。


2.5 数据的标准化

       标准化(Standardization) 是将数值型数据转换为均值为0、标准差为1的分布。标准化可以通过以下公式实现:
                                                                X_std = (X - X_mean) / X_stddev
       其中,X表示原始数据,X_std表示标准化后的数据,X_mean和X_stddev分别表示原始数据的均值和标准差。
       标准化使得数据分布更符合标准正态分布,对异常值和离群点的影响较小。通常情况下,标准化是数据预处理的常用选择。


3、实验截图

       本节放置实验截图,共六张,为四种特征任选两种特征进行数据的可视化以及统一和标准化。

提取萼片长度与萼片宽度分类

import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,0], X1[:,1], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('sepal length(萼片长度)')
ax1.set_ylabel('sepal width(萼片宽度)')
ax1.set_title("通过提取萼片长度与宽度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,0],X1[:,1], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('sepal length(萼片长度)')
ax2.set_ylabel('sepal width(萼片宽度)')
ax2.set_title("通过提取萼片长度与宽度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()

提取萼片长度与萼片宽度<a class=分类" />


提取萼片长度与花瓣长度分类

import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])
#sepal length(萼片长度)
#sepal width(萼片宽度)
#petal length(花瓣长度)
#petal width (花瓣宽度)
# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,0], X1[:,2], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('sepal length(萼片长度)')
ax1.set_ylabel('petal length(花瓣长度)')
ax1.set_title("通过提取萼片长度与花瓣长度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,0],X1[:,2], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('sepal length(萼片长度)')
ax2.set_ylabel('petal length(花瓣长度)')
ax2.set_title("通过提取萼片长度与花瓣长度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()

在这里插入图片描述


提取萼片长度与花瓣宽度分类

import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])
#sepal length(萼片长度)
#sepal width(萼片宽度)
#petal length(花瓣长度)
#petal width (花瓣宽度)
# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,0], X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('sepal length(萼片长度)')
ax1.set_ylabel('petal width (花瓣宽度)')
ax1.set_title("通过提取萼片长度与花瓣宽度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,0],X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('sepal length(萼片长度)')
ax2.set_ylabel('petal width (花瓣宽度)')
ax2.set_title("通过提取萼片长度与花瓣宽度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()

在这里插入图片描述


提取萼片宽度与花瓣长度分类

import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])
#sepal length(萼片长度)
#sepal width(萼片宽度)
#petal length(花瓣长度)
#petal width (花瓣宽度)
# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,1], X1[:,2], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('sepal width(萼片宽度)')
ax1.set_ylabel('petal length(花瓣长度)')
ax1.set_title("通过提取萼片宽度与花瓣长度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,1],X1[:,2], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('sepal width(萼片宽度)')
ax2.set_ylabel('petal length(花瓣长度)')
ax2.set_title("通过提取萼片宽度与花瓣长度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()

在这里插入图片描述


提取萼片宽度与花瓣宽度分类

import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])
#sepal length(萼片长度)
#sepal width(萼片宽度)
#petal length(花瓣长度)
#petal width (花瓣宽度)
# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,1], X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('sepal width(萼片宽度)')
ax1.set_ylabel('petal width(花瓣宽度)')
ax1.set_title("通过提取萼片宽度与花瓣宽度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,1],X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('sepal width(萼片宽度)')
ax2.set_ylabel('petal width(花瓣宽度)')
ax2.set_title("通过提取萼片宽度与花瓣宽度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()

在这里插入图片描述


提取花瓣长度与花瓣宽度分类

import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = load_iris()
X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 = (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])fig = plt.figure(figsize=(10, 4))
gs = gridspec.GridSpec(1, 2, width_ratios=[1, 1])
#sepal length(萼片长度)
#sepal width(萼片宽度)
#petal length(花瓣长度)
#petal width (花瓣宽度)
# 第一个子图
ax1 = plt.subplot(gs[0])
scatter = ax1.scatter(X1[:,2], X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax1.grid(color='black', linestyle='--')
ax1.set_xlabel('petal length(花瓣长度)')
ax1.set_ylabel('petal width (花瓣宽度)')
ax1.set_title("通过提取花瓣长度与花瓣宽度的分类【归一化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax1.legend(handles, legend_labels, loc='best')X = data['data']
y = data['target']# 按照要求提取每50条数据的前5条
X1 = np.concatenate([X[0:5], X[50:55]])
y1 = np.concatenate([y[0:5], y[50:55]])
X1 -= np.mean(X1, axis=0)
X1 /= np.std(X1, axis=0, ddof=1)cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 第二个子图
ax2 = plt.subplot(gs[1])
scatter = ax2.scatter(X1[:,2],X1[:,3], c=np.squeeze(y1), edgecolor='k', s=50)
ax2.grid(color='black', linestyle='--')
ax2.set_xlabel('petal length(花瓣长度)')
ax2.set_ylabel('petal width (花瓣宽度)')
ax2.set_title("通过提取花瓣长度与花瓣宽度的分类【标准化】")
handles, labels = scatter.legend_elements()
legend_labels = ['山鸢尾花(Iris-setosa)', '变色鸢尾花(Iris-versicolor)']
ax2.legend(handles, legend_labels, loc='best')plt.tight_layout()
plt.show()

在这里插入图片描述



http://www.ppmy.cn/embedded/118341.html

相关文章

QT6.7创建Non-Qt Project工程

QT6.7创建Non-Qt Project工程

Cluade 3.5 Sonnet 提示词泄露

prompt 翻译&#xff1a; The notebook currently demonstrates support for a two agent setup. Support for GroupChat is currently in development.

探索未来IT技术的浩瀚星河:一场跨越时代的数字盛宴

探索未来IT技术的浩瀚星河&#xff1a;一场跨越时代的数字盛宴 在这个日新月异的数字时代&#xff0c;IT技术如同璀璨的星辰&#xff0c;不断照亮着人类前行的道路。今天&#xff0c;让我们携手踏入这场跨越时代的数字盛宴&#xff0c;一同领略那些正在重塑世界、引领未来的IT…

RestSharp简介

RestSharp是一个轻量级HTTP客户端库&#xff0c;主要功能是通过HTTP对远程资源进行同步异步调用&#xff0c;可将请求主体序列化为JSON或XML并反序列化相应。 请求主体的方式&#xff1a;JSON、XML和表单数据 参数类型&#xff1a;查询、URL段、标头、cookie、正文 官方的例…

jenkins汉化一部分问题

安装插件 Manage Jenkins - plugin Locale pluginLocalization: Chinese (Simplified): 默认已经安装需要确认 配置语言 Manage Jenkins - Appearance(和以前不一样) 将语言设定为zh_US&#xff0c;Jenkins切换为英文。调用restart重启Jenkins&#xff1a;http://jenkisn网…

zabbix基本概念与组件

文章目录 一、zabbix简介二、​​​​​​​zabbix构成三、​​​​​​​zabbix监控对象四、​​​​​​​zabbix常用术语五、 Zabbix 6.0 新特性1.Zabbix server高可用防止硬件故障或计划维护期的停机2.Kubernetes系统从多个维度采集指标 六、zabbix 工作原理1、主动模式2、…

scrapy之setting文件详解

一、使用项目配置文件的好处 1. 集中管理配置 配置文件将各种设定集中管理&#xff0c;避免了在代码中散布配置参数。这使得开发人员能够方便地找到并修改全局参数&#xff0c;不必在代码的各个部分寻找。 2. 提升代码可维护性 配置文件将程序逻辑与具体的配置解耦&#xff0…

低空经济刚需篇:各种道路不畅地区无人机吊装详解

低空经济作为近年来备受关注的新兴经济形态&#xff0c;其核心在于利用3000米以下的低空空域进行各种飞行活动&#xff0c;以无人机、电动垂直起降飞行器(eVTOL)等为载体&#xff0c;推动交通、物流、巡检、农林植保、应急救援等多领域的变革。在道路不畅的地区&#xff0c;无人…