基于python的机器学习(二)—— 使用Scikit-learn库

目录

一、样本及样本划分

1.1 划分样本的方法

1.1.1 train_test_split()函数

1.1.2 时间序列划分

1.1.3 交叉验证

二、导入或创建数据集

2.1 导入Sklearn自带的样本数据集

2.2 利用Sklearn生成随机的数据集

2.3 读入自己创建的数据集

2.3.1 用Python直接读取文本文件

2.3.2 用pandas库读取Excel或文本文件

三、数据预处理

3.1 归一化函数 MinMaxScaler()

3.2 z-score 标准化函数

3.2.1 sklearn.preprocessing.scale()函数

3.2.2 sklearn.preprocessing.StandardScaler()对象

3.3 二值化函数 Binarizer()

3.4 正则化函数 Normalizer()

3.5 独热编码函数

四、数据降维


一、样本及样本划分

在机器学习中,样本是指用于训练和评估模型的各种数据。样本可以是具体的数据点,也可以是一组数据点的集合。

样本划分是将样本集划分为训练集和测试集的过程。训练集用于模型的训练和参数的调整,而测试集用于评估模型在未见过的数据上的表现。

在样本划分时,通常会将样本集按照一定的比例划分为训练集和测试集。常见的划分比例是将样本集的70%用作训练集,30%用作测试集。划分比例的选择可以根据具体的问题和数据情况来决定。

在一些情况下,还可以将样本集划分为训练集、验证集和测试集。训练集用于模型的训练,验证集用于调整模型的超参数,而测试集用于最终评估模型的性能。这种划分方式可以帮助防止模型在训练集上过拟合,并且能够更好地衡量模型的泛化能力。

样本划分的目的是为了评估模型在未见过的数据上的表现,并且能够判断出模型是否存在过拟合或欠拟合的问题。样本划分要保证训练集和测试集是相互独立的,并且能够代表整个样本集的特征。

1.1 划分样本的方法

划分样本的方法可以根据具体的任务和数据情况选择。

1.1.1 train_test_split()函数

train_test_split()函数是sklearn库中提供的用于划分样本的函数。它可以将样本数据集划分为训练集和测试集,并可以指定划分的比例、随机种子、是否进行洗牌等参数。

函数的基本使用方式如下:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

参数说明:

  • X为特征数据,y为目标变量或标签。
  • test_size参数指定了测试集所占的比例,可以是0到1之间的浮点数或整数。
  • random_state参数用于指定随机种子,确保每次划分的结果一致。

默认情况下,train_test_split()函数会进行洗牌(shuffle),即将样本随机打乱后再划分,以避免数据的有序性对划分结果产生影响。

train_test_split()函数返回划分后的训练集和测试集的特征数据(X_train, X_test)以及对应的目标变量或标签(y_train, y_test)。

除了基本的划分特征和标签数据外,train_test_split()函数还可以同时划分多个数据集,如划分特征数据、目标变量和样本权重等。

1.1.2 时间序列划分

在时间序列问题中,样本的划分需要考虑时间的顺序性,以确保模型在未来的预测中能够正确地使用过去的信息。以下是两种常用的时间序列划分方法:

  1. 时间窗口划分(Time window splitting):在时间窗口划分中,数据集按时间顺序被分成固定大小的连续时间窗口。每个时间窗口通常包含连续的时间段,比如一天、一周或一个月。划分时可以设置窗口的大小和重叠度。训练集通常包含前面的时间窗口,而测试集包含后面的时间窗口。这种划分方法适用于以时间为主要维度的数据集,如股票价格、气象数据等。

  2. 时间点划分(Time point splitting):在时间点划分中,数据集按照特定的时间点进行划分。通常,将数据集分为训练集、验证集和测试集。训练集用于模型的训练,验证集用于调整模型的超参数和进行模型选择,而测试集用于最终评估模型的性能。时间点划分可以根据实际需求灵活选择时间点,如按照日期、季度或年份等进行划分。

在python中,可以使用train_test_split()函数手动进行时间序列的划分。如果数据量较大且时间序列较长,建议使用train_test_split()函数,设置相应的参数进行时间窗口划分。如果数据量较小或时间序列较短,可以选择手动划分时间点。

以下是使用train_test_split()函数进行时间窗口划分的示例代码:

from sklearn.model_selection import train_test_split

# 假设data为时间序列数据,target为对应的目标值
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, shuffle=False)

# 可以根据实际需求设置窗口的大小
window_size = 7
# 根据窗口大小进行时间窗口划分
X_train = [data[i-window_size:i] for i in range(window_size, len(X_train))]
X_test = [data[i-window_size:i] for i in range(window_size, len(X_test))]
y_train = y_train[window_size:]
y_test = y_test[window_size:]

在上述代码中,data为时间序列数据,target为对应的目标值。test_size参数设置测试集的比例,这里为0.2,即占总体数据的20%。shuffle参数设置为False,确保按照时间顺序进行划分。

1.1.3 交叉验证

交叉验证是一种常用的样本划分方法,用于评估和选择机器学习模型的性能。它将数据集划分为多个互不重叠的子集,然后对模型进行多次训练和评估。以下是两种常见的交叉验证方法:

  1. K折交叉验证(K-fold Cross Validation):在K折交叉验证中,数据集被划分为K个互不重叠的子集,称为折。每次训练时,选择K-1个折作为训练集,剩下的一个折作为验证集。重复K次,每次选择不同的验证集,最后将K次的评估结果取平均值作为最终模型的性能指标。K折交叉验证可以更充分地利用数据集,减少因单次划分带来的偶然性。

  2. 留一交叉验证(Leave-One-Out Cross Validation):在留一交叉验证中,每次训练时,将一条样本作为验证集,剩下的样本作为训练集。重复N次,N为样本的数量。留一交叉验证适用于样本量较小的情况,它基本上遍历了所有可能的训练集和测试集组合,但计算开销较大。

在Python中,可以使用scikit-learn中的cross_val_score()函数来进行交叉验证。

以下是使用K折交叉验证进行模型评估的示例代码:

from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.linear_model import LogisticRegression

# 假设X为特征数据,y为目标变量
kfold = KFold(n_splits=5, shuffle=True, random_state=42)  # 设置折数、是否打乱数据和随机状态
model = LogisticRegression()  # 假设使用逻辑回归模型

scores = cross_val_score(model, X, y, cv=kfold)  # 进行交叉验证评估
print("交叉验证准确率: %0.2f" % scores.mean())  # 打印平均准确率

在上述代码中:

  • n_splits参数表示划分为5折交叉验证,即将数据集分为5个子集。
  • shuffle参数设置为True,表示在划分前是否打乱数据集。
  • random_state参数用于设置随机状态,以便重现结果。
  • model为机器学习模型,这里使用逻辑回归模型作为示例。
  • cross_val_score()函数对模型进行交叉验证评估,并返回每次验证的性能指标,最后通过取平均值得到最终的评估结果。

交叉验证是一种常用的模型评估方法,可以更准确地评估模型的性能,并帮助选择最优的模型参数。在实际应用中,可以根据数据集的大小和问题的需求选择合适的交叉验证方法。

二、导入或创建数据集

2.1 导入Sklearn自带的样本数据集

使用sklearn.datasets模块中的函数来导入Sklearn自带的样本数据集。这个模块提供了一些常见的数据集,可以用于机器学习和数据分析的实验和练习。

以下是导入Sklearn自带样本数据集的示例代码:

from sklearn import datasets

# 导入Iris数据集
iris = datasets.load_iris()
X_iris = iris.data  # 特征数据
y_iris = iris.target  # 目标变量

# 导入波士顿房价数据集
boston = datasets.load_boston()
X_boston = boston.data  # 特征数据
y_boston = boston.target  # 目标变量

# 导入手写数字数据集(MNIST)
digits = datasets.load_digits()
X_digits = digits.data  # 特征数据
y_digits = digits.target  # 目标变量

在上述代码中,datasets.load_iris()函数导入了Iris(鸢尾花)数据集。这个数据集包含了150个样本,每个样本有4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),还有一个目标变量(花的种类)。

类似地,通过datasets.load_boston()函数可以导入波士顿房价数据集,该数据集包含了506个样本和13个特征,目标变量是房价。最后,datasets.load_digits()函数导入了手写数字数据集(MNIST),它包含了1797个样本和64个特征(8x8像素图像表示的手写数字),目标变量是0到9之间的整数。

2.2 利用Sklearn生成随机的数据集

要生成随机的数据集,可以使用Sklearn中的datasets模块。Sklearn提供了几种常用的数据集生成器,包括回归数据、分类数据和聚类数据等。

  1. make_regression():生成回归问题的合成数据集。可以控制数据集的样本数量、特征数量、噪声等参数。

  2. make_classification():生成分类问题的合成数据集。多类单标签数据集,为每个类分配一个或多个正态分布(球形)的点集。提供了为数据添加噪声的方式,可以控制数据集的样本数量、特征数量、类别数量、噪声等参数。

  3. make_blobs():生成聚类问题的合成数据集。多类单标签数据集,为每个类分配一个或多个正态分布(球形)的点集,可以控制数据集的样本数量、聚类数量、特征数量、噪声等参数。

  4. make_circles():生成环形分类问题的合成数据集。产生二维二元分类数据集,也可以为数据集添加噪声,可以为二元分类器产生一些环形判决界面的数据。

  5. make_moons():生成半月形分类问题的合成数据集。其他特征同 make_circles()。

  6. make_gaussian_quantiles():将一个单高斯分布的点集划分为两个数量均等的点集,作为两类。

  7. make_hastie-10-2():产生一个,相似的二元分类数据集,有10个维度。

这些函数返回的数据集都是一个二维数组,其中每一行表示一个样本,每一列表示一个特征。同时,还可以通过调整参数来控制数据集的相关性、噪声等属性。

利用Sklearn生成环形、月亮形和环形数据集

示例代码:

from sklearn.datasets import make_circles
from sklearn.datasets import make_moons
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(12,4))

plt.subplot (131)
x1,y1 = make_circles(n_samples= 1000, factor=0.5, noise=0.1)
# factor表示里圈和外圈的距离之比   每圈有n_samples/2个点
plt.scatter(x1[:,0],x1[:,1], marker='o',c=y1)

plt.subplot (132)
x1,y1 = make_moons (n_samples= 1000, noise=0.1)
plt.scatter(x1[:,0],x1[:,1], marker='o',c=y1)

plt.subplot (133)
x1,y1 = make_blobs(n_samples=100,n_features= 2,centers=3)
plt.scatter(x1[:,0],x1[:,1],c=y1);
plt.show()

输出结果:

2.3 读入自己创建的数据集

2.3.1 用Python直接读取文本文件

Python内置了文件操作函数,先用 loadDataSet()函数先打开文件,然后依次读取文本文件中的每一行,再利用 split()方法分割一行中的每个数据,最后将这些数据依次添加到数组中,这样程序就和数据独立了,代码如下。

def loadDataSet():
    dataMat=[]          # 保存特征属性
    labelMat=[]         # 保存标签属性
    fr=open('G:\\1r2.txt')             # 打开文本文件 1r2.txt (自己的文件路径)
    for line in fr.readlines():        # 依次读取文本文件中的一行
        lineArr=line.strip().split()            # 根据空格分割一行中的每列
        dataMat.append([float (lineArr[0]),float(lineArr[1])])
        labelMat.append(int(lineArr[2]))
return dataMat,labelMat

2.3.2 用pandas库读取Excel或文本文件

可以使用pandas库的read_excel()方法来读取Excel文件,使用read_csv()方法来读取文本文件。

下面是一个使用pandas读取Excel和文本文件的示例:

import pandas as pd

# 读取Excel文件
df_excel = pd.read_excel('data.xlsx')

# 读取文本文件
df_csv = pd.read_csv('data.csv')

# 打印Excel文件的前几行数据
print(df_excel.head())

# 打印文本文件的前几行数据
print(df_csv.head())

在上述示例中,read_excel()方法和read_csv()方法分别读取了名为data.xlsxdata.csv的文件,并将结果存储在DataFrame对象中。然后,使用head()方法打印了前几行数据。

三、数据预处理

数据预处理在数据分析和机器学习领域中扮演着至关重要的角色。原始数据中常常存在着各种问题,如缺失值、重复值、异常值、不一致的格式等,这些问题可能导致模型的性能下降或产生错误的结论。因此,需要进行数据预处理来清洗和转换数据,以提高数据的质量和可用性。

3.1 归一化函数 MinMaxScaler()

在Python的机器学习库scikit-learn中,可以使用MinMaxScaler()函数实现归一化。该函数将数据中的每个特征转换为指定的范围内。

公式如下:

X_scaled = (X - X_min) / (X_max - X_min)

参数说明:

  • X表示原始数据集;
  • X_scaled表示归一化后的数据集;
  • X_min表示每个特征的最小值;
  • X_max表示每个特征的最大值。

下面是一个使用MinMaxScaler()函数进行数据归一化的示例:

from sklearn.preprocessing import MinMaxScaler
import pandas as pd

# 创建数据集
data = {'A': [10, 20, 30, 40, 50],
        'B': [1, 2, 3, 4, 5],
        'C': [100, 200, 300, 400, 500]}
df = pd.DataFrame(data)

# 创建MinMaxScaler对象
scaler = MinMaxScaler()

# 对数据进行归一化
df_scaled = scaler.fit_transform(df)

# 将归一化后的数据集转换为DataFrame
df_normalized = pd.DataFrame(df_scaled, columns=df.columns)

print(df_normalized)

注意:

  • MinMaxScaler()函数默认将数据进行按列归一化,即每列的最小值和最大值用于计算归一化的范围。如果需要按行归一化,可以指定参数axis=1。

MinMaxScaler()函数还提供了inverse_transform()函数,用于将归一化后的数据还原为原始数据。

3.2 z-score 标准化函数

标准化有两种实现方式:一是调用 sklearn.preprocessing.scale()函数;二是实例化一个sklearn.preprocessing.StandardScaler()对象,后者的好处是可以保存训练得到的参数(均值、方差),直接使用其对象对测试数据进行转换。

3.2.1 sklearn.preprocessing.scale()函数

sklearn库中的preprocessing模块提供了scale()函数来实现z-score标准化(也称为标准化)。

下面是使用scale()函数进行标准化的示例代码:

from sklearn.preprocessing import scale

# 原始数据
data = [1, 2, 3, 4, 5]

# 标准化后的数据
scaled_data = scale(data)

print(scaled_data)

输出结果:

[-1.41421356 -0.70710678  0.          0.70710678  1.41421356]
# 原始数据经过scale()函数处理后,得到了标准化的数据。
# 每个数据点的值都被减去了原始数据的均值,然后除以了原始数据的标准差,得到了具有均值为0,标准差为1的数据

如果需要对二维或多维数据进行标准化,可以将数据传递给scale()函数的第一个参数。例如:

from sklearn.preprocessing import scale

# 原始数据
data = [[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]]

# 标准化后的数据
scaled_data = scale(data)

print(scaled_data)

输出结果:

[[-1.22474487 -1.22474487 -1.22474487]
 [ 0.          0.          0.        ]
 [ 1.22474487  1.22474487  1.22474487]]
# 二维数据每个特征维度都进行了标准化处理

3.2.2 sklearn.preprocessing.StandardScaler()对象

sklearn中的preprocessing模块还提供了StandardScaler类来实现标准化。

下面是使用StandardScaler类进行标准化的示例代码:

from sklearn.preprocessing import StandardScaler

# 创建StandardScaler对象
scaler = StandardScaler()

# 原始数据
data = [[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]]


# 调用fit_transform()方法来计算数据的均值和标准差,并进行标准化处理
scaled_data = scaler.fit_transform(data)

print(scaled_data)

输出结果:

[[-1.22474487 -1.22474487 -1.22474487]
 [ 0.          0.          0.        ]
 [ 1.22474487  1.22474487  1.22474487]]

注意:

  • 由于fit_transform()方法返回的是一个新的数组,因此需要将结果赋值给一个新的变量(在上述示例中,将结果赋值给scaled_data)。

与scale()函数不同,StandardScaler类还提供了一些其他方法和属性,例如:

  • scaler.mean_:返回数据的均值。
  • scaler.var_:返回数据的方差。
  • scaler.transform():对新的数据进行标准化,使用之前计算得到的均值和标准差。

通过使用StandardScaler类,可以更灵活地对数据进行标准化处理,并且可以保存标准化的参数以便后续使用。

3.3 二值化函数 Binarizer()

在sklearn.preprocessing模块中,Binarizer()函数不是用于二值化特征的,而是用于二值化样本的。 具体来说,Binarizer()函数将连续型的特征值根据一个阈值进行二值化处理。

函数的语法如下:

sklearn.preprocessing.Binarizer(threshold=0.0, copy=True)

参数说明:

  • threshold:阈值,默认为0.0。
  • copy:是否复制,默认为True。

使用Binarizer()函数的示例如下:

from sklearn.preprocessing import Binarizer

X = [[1, -1, 2],
     [2, 0, 0],
     [0, 1, -1]]

# 创建Binarizer对象,并指定阈值为1.5
binarizer = Binarizer(threshold=1.5)

# 将样本进行二值化
X_binarized = binarizer.transform(X)

print(X_binarized)

运行结果为:

[[0 0 1]
 [1 0 0]
 [0 0 0]]
# 样本中的特征值大于1.5的被转化为1,小于等于1.5的被转化为0

3.4 正则化函数 Normalizer()

在sklearn.preprocessing模块中,Normalizer()函数用于对特征矩阵进行正则化处理,即将每个样本的特征向量缩放到单位范数(即每个特征向量的L2范数等于1)。

函数的语法如下:

sklearn.preprocessing.Normalizer(norm='l2', copy=True)

参数说明:

  • norm:正则化方式,默认为'l2',表示按L2范数进行正则化。还可以选择'l1'表示按L1范数进行正则化。
  • copy:是否复制,默认为True。

使用Normalizer()函数的示例如下:

from sklearn.preprocessing import Normalizer
import numpy as np

X = np.array([[1, 2],
              [2, 3],
              [3, 4]])

# 创建Normalizer对象,默认按L2范数正则化
normalizer = Normalizer()

# 对特征矩阵进行正则化
X_normalized = normalizer.transform(X)

print(X_normalized)

运行结果为:

[[0.4472136  0.89442719]
 [0.5547002  0.83205029]
 [0.6        0.8       ]]
# 每个样本的特征向量被缩放到了单位范数

3.5 独热编码函数

独热编码(One-Hot Encoding)是一种常用的特征编码方法,可以将离散特征的取值转换为一个特征向量,以便机器学习算法能够更好地理解和利用这些特征。 但需要注意的是,独热编码会增加特征维度,可能导致特征空间的维度爆炸。因此,在使用独热编码之前,可以考虑对离散特征进行特征选择或者降维,以减少特征维度

在sklearn.preprocessing模块中,可以使用OneHotEncoder()函数进行独热编码。

函数的语法如下:

sklearn.preprocessing.OneHotEncoder(categories='auto', drop=None, sparse=True, dtype=<class 'numpy.float64'>, handle_unknown='error')

参数说明:

  • categories:指定要编码的特征的取值范围,默认为'auto',表示根据输入数据自动推断。
  • drop:指定是否删除其中一列,默认为None,表示不删除。可以选择'first'或'if_binary',表示删除第一列或者删除所有二进制特征。
  • sparse:指定是否返回稀疏矩阵,默认为True,表示返回稀疏矩阵。可以选择False表示返回密集矩阵。
  • dtype:指定编码后矩阵的数据类型,默认为numpy.float64。
  • handle_unknown:指定处理未知取值的方式,默认为'error',表示遇到未知取值时抛出错误。可以选择'ignore'表示忽略未知取值。

使用OneHotEncoder()函数的示例如下:

from sklearn.preprocessing import OneHotEncoder
import numpy as np

X = np.array([[1, 'A'],
              [2, 'B'],
              [3, 'A'],
              [1, 'B']])

# 创建OneHotEncoder对象
encoder = OneHotEncoder()

# 对特征矩阵进行独热编码
X_encoded = encoder.fit_transform(X)

print(X_encoded.toarray())

运行结果为:

[[1. 0. 1. 0. 0.]
 [0. 1. 0. 1. 0.]
 [0. 0. 1. 0. 0.]
 [1. 0. 0. 1. 0.]]
# 每个离散特征的取值都被转换为了一个特征向量,其中每个特征向量中只有一个元素为1,表示该样本的特征取值

四、数据降维

数据降维是指通过某种特定的方法或算法将高维数据转换为低维数据的过程。在机器学习和数据分析中,数据降维可以用于减少数据的维度,提取数据中的主要特征,去除冗余信息,以便更好地进行可视化、建模和分析。

常用的数据降维方法包括主成分分析(Principal Component Analysis, PCA)线性判别分析(Linear Discriminant Analysis, LDA)等。

  • 主成分分析(PCA)是一种无监督的降维方法,它通过线性变换将原始特征映射到新的特征空间,使得新的特征具有最大的方差。PCA可以用于去除数据中的冗余信息,提取出最主要的特征。

  • 线性判别分析(LDA)是一种有监督的降维方法,它通过线性变换将原始特征映射到新的特征空间,以使得同类样本之间的距离尽可能小,异类样本之间的距离尽可能大。LDA可以用于提取最具判别性的特征。

在sklearn.decomposition模块中,可以使用PCA()函数进行主成分分析降维。

函数的语法如下:

sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None)

参数说明:

  • n_components:指定降维后的维度,默认为None,表示保留所有主成分。
  • copy:指定是否复制输入数据,默认为True,表示复制。
  • whiten:指定是否使用白化,默认为False,表示不使用。
  • svd_solver:指定使用的SVD算法,默认为'auto',表示根据数据的大小和维度自动选择算法。
  • tol:指定SVD算法的收敛阈值,默认为0.0。
  • iterated_power:指定幂迭代的次数,默认为'auto',表示根据数据的维度自动选择次数。
  • random_state:指定随机数生成器的种子,默认为None,表示使用当前系统时间作为种子。

使用PCA()函数的示例如下:

from sklearn.decomposition import PCA
import numpy as np

X = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

# 创建PCA对象
pca = PCA(n_components=2)

# 对数据进行降维
X_reduced = pca.fit_transform(X)

print(X_reduced)

运行结果为:

[[-1.73205081  0.        ]
 [ 0.          0.        ]
 [ 1.73205081  0.        ]]
# 原始数据被降维为一个二维的特征向量

注意:

  • 在进行数据降维之前,可以先对数据进行标准化或归一化,以保证不同特征之间的尺度一致,避免因为尺度不一致而对降维结果产生影响。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Webpack5常用配置

1、序言 Webpack属于构建工具&#xff0c;可以将开发者代码转化成浏览器能识别的代码&#xff0c;让开发者专注代码实现&#xff0c;不用过多关注浏览器兼容性问题。 Webpack常见功能&#xff1a; 模块打包&#xff1a;Webpack 可以将项目中的所有模块&#xff08;包括 JavaScr…

DFA算法实现敏感词过滤

DFA算法实现敏感词过滤 需求&#xff1a;检测一段文本中是否含有敏感词。 比如检测一段文本中是否含有&#xff1a;“滚蛋”&#xff0c;“滚蛋吧你”&#xff0c;“有病”&#xff0c; 可使用的方法有&#xff1a; 遍历敏感词&#xff0c;判断文本中是否含有这个敏感词。 …

索引基础篇

前言 通过本篇博客的学习&#xff0c;我希望大家可以了解到 “索引” 是为了提高数据的查询效率。 索引的介绍 索引是为了提高查询数据效率的数据结构 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维护着…

【设计模式系列】外观模式(十四)

一、什么是外观模式 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;其核心目的是为一个复杂的子系统提供一个简化的接口。这种模式通过定义一个外观类来封装子系统内复杂的操作&#xff0c;隐藏系统内部的复杂性&#xff0c;并向客户端提供…

哪些因素会影响 DC/DC 转换电路快速测试的性能?-纳米软件

DC/DC 转换电路在现代电子设备中起着至关重要的作用&#xff0c;其性能的快速准确测试对于确保电子系统的可靠性和稳定性至关重要。然而&#xff0c;有许多因素会影响 DC/DC 转换电路快速测试的性能。 电路复杂性和参数多样性 单片 DC/DC 转换器由于功能模块和参数复杂性&…

从0开始深度学习(25)——多输入多输出通道

之前我们都只研究了一个通道的情况&#xff08;二值图、灰度图&#xff09;&#xff0c;但实际情况中很多是彩色图像&#xff0c;即有标准的RGB三通道图片&#xff0c;本节将更深入地研究具有多输入和多输出通道的卷积核。 1 多输入通道 当输入包含多个通道时&#xff0c;需要…

2025天津市考8日报名,建议收藏好报名流程

天津市2025年招考2043名公务员公告 35周岁以下&#xff08;1988年11月至2006年11月期间出生&#xff09;&#xff0c;2025年应届硕士、博士研究生报考的&#xff0c;年龄可放宽到40周岁&#xff08;1983年11月以后出生&#xff09;&#xff1b; 报名时间&#xff1a;2024年11月…

25中海油笔试测评春招秋招校招暑期实习社招笔试入职测评行测题型微测网题型分享

中海油笔试一般采用线上机考的形式。考试时间为 120 分钟&#xff0c;满分 100 分。笔试内容主要包括思想素质测评和通用能力测评两个科目。以下是具体介绍&#xff1a; 1. 思想素质测评&#xff1a; ✅价值观&#xff1a;考察考生对工作、职业、企业等方面的价值观念和态度&…

使用Docker Compose构建多容器应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Docker Compose构建多容器应用 引言 Docker Compose 简介 安装 Docker Compose 创建基本配置 运行多容器应用 查看服务状态 …

【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)

本篇文章分享关于如何使用STM32单片机对彩色摄像头&#xff08;OV7725/OV2604&#xff09;采集的图像数据进行分析处理&#xff0c;最后实现颜色的识别和检测。 目录 一、什么是颜色识别 1、图像采集识别的一些基本概念 1. 像素&#xff08;Pixel&#xff09; 2. 分辨率&am…

精心整理教育研究专题数据资源大全-最新出炉_附下载链接

教育研究专题数据资源大全V1.0 下载链接-点它&#x1f449;&#x1f449;&#x1f449;&#xff1a;教育研究专题数据资源大全-最新出炉.zip 资源介绍 一、中国教育统计年鉴面板数据 简介&#xff1a;《中国教育统计年鉴》是由教育部发展规划司根据全国各省、自治区、直辖市…

【论文速读】| PathSeeker:使用基于强化学习的越狱攻击方法探索大语言模型的安全漏洞

基本信息 原文标题: PathSeeker: Exploring LLM Security Vulnerabilities with a Reinforcement Learning-Based Jailbreak Approach 原文作者: Zhihao Lin, Wei Ma, Mingyi Zhou, Yanjie Zhao, Haoyu Wang, Yang Liu, Jun Wang, Li Li 作者单位: Beihang University, Nany…

越权访问漏洞

V2Board Admin.php 越权访问漏洞 ## 漏洞描述 V2board面板 Admin.php 存在越权访问漏洞&#xff0c;由于部分鉴权代码于v1.6.1版本进行了修改&#xff0c;鉴权方式变为从Redis中获取缓存判定是否存在可以调用… V2Board Admin.php 越权访问漏洞 漏洞描述 V2board面板 Admin.ph…

27.旅游推荐管理系统(基于springboot和vue)

目录 1.系统的受众说明 2. 系统需求分析 2.1 任务概述 2.2 功能性需求 2.3 非功能性需求 2.3.1正确性需求 2.3.2安全性需求 2.3.3界面需求 2.3.4时间特殊性需求 2.3.5稳定性需求 2.3.6故障处理能力需求 2.4 开发技术简介 2.4.1 开发工具简介 2.4.2 开发技术…

CCS下载安装(以12.3.0版本为例)

Code Composer Studio 是一个集成开发环境 (IDE)&#xff0c;简称CCS软件。支持 TI 的微控制器和嵌入式处理器产品的开发。Code Composer Studio 包含一整套用于开发和调试嵌入式应用程序的工具。 CCS9.3.0及以上版本不需要License文件&#xff0c;但是CCS旧版本比如CCS5.5.0需…

基于单片机的变频空调系统设计(论文+源码)

1系统总体方案设计 本次基于单片机的变频空调系统设计&#xff0c;选用STC89C52单片机作为系统的主控核心&#xff0c;结合DHT11温湿度传感器实现家居环境中温湿度数据的检测&#xff0c;并设有自动和手动两种模式&#xff0c;在自动模式下&#xff0c;系统会根据按键设定的温…

Visual Studio Code从安装到正常使用

Visual Studio Code的汉化 下载的Visual Studio Code的话可以去应用商店也可以去官网下载。 Visual Studio Code只是一个编译器&#xff0c;不具备编译器功能。因此需要下载一个编译器MinGW MinGW的安装 官网链接MinGW官网链接 一步到位的链接 添加环境变量 进入cmd界面…

图神经网络初步实验

实验复现来源 https://zhuanlan.zhihu.com/p/603486955 该文章主要解决问题&#xff1a; 1.加深对图神经网络数据集的理解 2.加深对图神经网络模型中喂数据中维度变化的理解 原理问题在另一篇文章分析&#xff1a; 介绍数据集&#xff1a;cora数据集 其中的主要内容表示为…

雪花算法生成的ID在返回给前端之后和生成的不一样,到底是什么原因?

一、背景&#xff1a; 最近在做项目的时候发现用雪花算法生成的id传给前端以后跟生成的不一样&#xff0c;就纳闷&#xff0c;在想为什么会出现这样的问题&#xff1f; 二、问题分析&#xff1a; 最开始以为是序列化的问题导致的仔细对比以后发现前端是后几位不一样都是0&…

【大数据学习 | kafka高级部分】kafka中的选举机制

controller的选举 首先第一个选举就是借助于zookeeper的controller的选举 第一个就是controller的选举&#xff0c;这个选举是借助于zookeeper的独享锁实现的&#xff0c;先启动的broker会在zookeeper的/contoller节点上面增加一个broker信息&#xff0c;谁创建成功了谁就是主…