k-近邻算法(K-Nearest Neighbors, KNN)详解:机器学习中的经典算法

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:机器学习分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:k-近邻算法(K-Nearest Neighbors, KNN)详解:机器学习中的经典算法

文章目录

    • 引言
    • 一、基本原理
      • 1.1 工作机制
      • 1.2 距离度量
      • 1.3 k值的选择
      • 1.4 优缺点
    • 二、数学模型
      • 2.1 数据表示
      • 2.2 距离计算
      • 2.3 k-近邻算法的分类模型
      • 2.4 k-近邻算法的回归模型
      • 2.5 模型评估
      • 2.6 小结
    • 三、实现步骤
      • 3.1 数据准备
      • 3.2 选择k值
      • 3.3 模型训练
      • 3.4 预测
      • 3.5 模型评估
      • 3.6 调整与优化
      • 3.7 小结
    • 四、应用场景
      • 4.1 图像识别
      • 4.2 推荐系统
      • 4.3 医疗诊断
    • 总结

在这里插入图片描述

引言

  在机器学习的广阔领域中,k-近邻算法(K-Nearest Neighbors, KNN)以其简单易懂和直观的特性,成为了许多初学者和专业人士的首选算法之一。作为一种基于实例的学习方法,k-近邻算法不需要复杂的模型训练过程,而是通过存储训练数据并在预测时进行距离计算来进行分类或回归。这种方法使得k-近邻算法在处理小规模数据集时表现出色,尤其在图像识别、推荐系统和医疗诊断等应用场景中得到了广泛的应用。

  尽管k-近邻算法的基本原理相对简单,但其在实际应用中的表现却受到多个因素的影响,如特征选择、距离度量和k值的选择等。因此,深入理解k-近邻算法的原理、数学模型及其实现步骤,对于提升模型的性能至关重要。本文将全面探讨k-近邻算法的各个方面,帮助读者更好地掌握这一经典算法,并在实际项目中灵活应用。

一、基本原理

  k-近邻算法(K-Nearest Neighbors, KNN)是一种基于实例的学习方法,其核心思想是通过比较待分类样本与训练集中样本之间的相似性来进行分类或回归。以下将详细阐述k-近邻算法的基本原理,包括其工作机制、距离度量、k值的选择以及优缺点。

1.1 工作机制

  k-近邻算法的工作机制可以分为两个主要阶段:训练阶段和预测阶段。

训练阶段

  在训练阶段,k-近邻算法并不进行显式的模型训练,而是简单地存储训练数据集。每个样本由特征向量和对应的标签组成。此阶段的主要任务是准备好数据,以便在预测阶段进行有效的相似性比较。

预测阶段

  在预测阶段,k-近邻算法的工作流程如下:

  1. 输入待分类样本:接收一个待分类的样本,其特征向量为 x x x
  2. 计算距离:计算待分类样本与训练集中所有样本之间的距离。常用的距离度量方法包括欧氏距离、曼哈顿距离和闵可夫斯基距离。
  3. 选择k个最近邻:根据计算得到的距离,选择距离待分类样本最近的k个训练样本。
  4. 投票机制
    • 分类任务:对这k个样本的类别进行投票,选择出现次数最多的类别作为预测结果。
    • 回归任务:对这k个样本的值进行平均,得到预测值。

1.2 距离度量

  距离度量是k-近邻算法的关键部分,影响着算法的性能和预测结果。以下是几种常用的距离度量方法:

  • 欧氏距离:最常用的距离度量,适用于连续特征。计算公式为:
    d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x, y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2} d(x,y)=i=1n(xiyi)2

  • 曼哈顿距离:适用于特征值较小或特征之间差异较大的情况。计算公式为:
    d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d(x, y) = \sum_{i=1}^{n}|x_i - y_i| d(x,y)=i=1nxiyi

  • 闵可夫斯基距离:是欧氏距离和曼哈顿距离的推广,参数 p p p决定了距离的类型。计算公式为:
    d ( x , y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 / p d(x, y) = \left(\sum_{i=1}^{n}|x_i - y_i|^p\right)^{1/p} d(x,y)=(i=1nxiyip)1/p

  选择合适的距离度量对于k-近邻算法的效果至关重要,通常需要根据具体问题进行实验和调整。

1.3 k值的选择

  k值的选择直接影响k-近邻算法的性能。k值过小可能导致模型对噪声敏感,容易出现过拟合;而k值过大则可能导致模型过于平滑,无法捕捉到数据的局部结构。选择合适的k值通常可以通过以下方法:

  • 交叉验证:使用交叉验证技术,在不同的k值下评估模型的性能,选择表现最佳的k值。
  • 经验法则:一般情况下,k值可以选择为样本总数的平方根,或者在小范围内进行调整。

1.4 优缺点

优点

  • 简单易懂:k-近邻算法的原理直观,易于实现和理解。
  • 无参数模型:不需要进行复杂的模型训练,适合小规模数据集。
  • 适应性强:可以处理多类别问题,适用于分类和回归任务。

缺点

  • 计算复杂度高:在预测阶段需要计算所有训练样本的距离,随着数据集规模的增大,计算成本显著增加。
  • 对噪声敏感:k-近邻算法对异常值和噪声数据较为敏感,可能影响预测结果。
  • 特征选择影响:特征的尺度和选择对距离计算有较大影响,可能需要进行特征标准化。

二、数学模型

  k-近邻算法(K-Nearest Neighbors, KNN)的数学模型主要围绕样本之间的距离计算、投票机制以及模型评估等方面展开。以下将详细阐述k-近邻算法的数学模型,包括其基本公式、分类和回归的具体实现,以及模型评估方法。

2.1 数据表示

  在k-近邻算法中,数据集通常表示为一个包含多个样本的集合,每个样本由特征向量和标签组成。假设我们有一个训练集 D D D,其中包含 N N N 个样本,每个样本由特征向量 x i x_i xi 和对应的标签 y i y_i yi 组成:

D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } D = \{(x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N)\} D={(x1,y1),(x2,y2),,(xN,yN)}

  其中, x i ∈ R m x_i \in \mathbb{R}^m xiRm 表示样本的特征向量, y i y_i yi 表示样本的类别(分类任务)或值(回归任务)。

2.2 距离计算

  在k-近邻算法中,距离计算是核心步骤之一。常用的距离度量包括:

  欧氏距离:是最常用的距离度量,适用于连续特征。其计算公式为:

d ( x , y ) = ∑ j = 1 m ( x j − y j ) 2 d(x, y) = \sqrt{\sum_{j=1}^{m}(x_j - y_j)^2} d(x,y)=j=1m(xjyj)2

  曼哈顿距离:适用于特征值较小或特征之间差异较大的情况,计算公式为:

d ( x , y ) = ∑ j = 1 m ∣ x j − y j ∣ d(x, y) = \sum_{j=1}^{m}|x_j - y_j| d(x,y)=j=1mxjyj

  闵可夫斯基距离:是欧氏距离和曼哈顿距离的推广,计算公式为:

d ( x , y ) = ( ∑ j = 1 m ∣ x j − y j ∣ p ) 1 / p d(x, y) = \left(\sum_{j=1}^{m}|x_j - y_j|^p\right)^{1/p} d(x,y)=(j=1mxjyjp)1/p

  其中, p p p 是一个参数, p = 2 p=2 p=2 时为欧氏距离, p = 1 p=1 p=1 时为曼哈顿距离。

2.3 k-近邻算法的分类模型

在分类任务中,k-近邻算法的预测过程可以用以下步骤表示:

  1. 计算距离:对于待分类样本 x x x,计算其与训练集中所有样本的距离 d ( x , x i ) d(x, x_i) d(x,xi)
  2. 选择k个最近邻:根据距离从小到大排序,选择距离最近的k个样本 N k = { x i 1 , x i 2 , … , x i k } N_k = \{x_{i_1}, x_{i_2}, \ldots, x_{i_k}\} Nk={xi1,xi2,,xik}
  3. 投票机制:对这k个样本的类别进行投票,预测类别 y ^ \hat{y} y^ 为出现次数最多的类别:

y ^ = mode ( y i 1 , y i 2 , … , y i k ) \hat{y} = \text{mode}(y_{i_1}, y_{i_2}, \ldots, y_{i_k}) y^=mode(yi1,yi2,,yik)

2.4 k-近邻算法的回归模型

在回归任务中,k-近邻算法的预测过程与分类类似,但预测值的计算方式不同:

  1. 计算距离:同样计算待预测样本 x x x 与训练集中所有样本的距离。
  2. 选择k个最近邻:选择距离最近的k个样本 N k = { x i 1 , x i 2 , … , x i k } N_k = \{x_{i_1}, x_{i_2}, \ldots, x_{i_k}\} Nk={xi1,xi2,,xik}
  3. 平均值计算:对这k个样本的值进行平均,得到预测值 y ^ \hat{y} y^

y ^ = 1 k ∑ j = 1 k y i j \hat{y} = \frac{1}{k} \sum_{j=1}^{k} y_{i_j} y^=k1j=1kyij

2.5 模型评估

在k-近邻算法中,模型评估是判断算法性能的重要步骤。常用的评估指标包括:

分类任务评估指标

  • 准确率(Accuracy):正确分类的样本占总样本的比例:

Accuracy = TP + TN TP + TN + FP + FN \text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{TN} + \text{FP} + \text{FN}} Accuracy=TP+TN+FP+FNTP+TN

其中,TP(True Positive)为真正例,TN(True Negative)为真反例,FP(False Positive)为假正例,FN(False Negative)为假反例。

  • 精确率(Precision):预测为正类的样本中实际为正类的比例:

Precision = TP TP + FP \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} Precision=TP+FPTP

  • 召回率(Recall):实际为正类的样本中被正确预测为正类的比例:

Recall = TP TP + FN \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} Recall=TP+FNTP

  • F1-score:精确率和召回率的调和平均数:

F 1 = 2 ⋅ Precision ⋅ Recall Precision + Recall F1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} F1=2Precision+RecallPrecisionRecall

回归任务评估指标

  • 均方误差(Mean Squared Error, MSE):预测值与真实值之间差异的平方的平均值:

MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2

  • 均方根误差(Root Mean Squared Error, RMSE):均方误差的平方根,表示预测误差的标准差:

RMSE = MSE \text{RMSE} = \sqrt{\text{MSE}} RMSE=MSE

  • 决定系数(R²):表示模型对数据变异的解释程度,值越接近1表示模型越好:

R 2 = 1 − ∑ i = 1 n ( y i − y ^ i ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2} R2=1i=1n(yiyˉ)2i=1n(yiy^i)2

2.6 小结

  k-近邻算法的数学模型主要围绕样本之间的距离计算、投票机制和模型评估展开。通过合理的距离度量和k值选择,k-近邻算法能够有效地进行分类和回归任务。理解其数学模型对于优化算法性能和应用于实际问题至关重要。

三、实现步骤

  k-近邻算法(K-Nearest Neighbors, KNN)的实现步骤相对简单,主要包括数据准备、模型训练、预测、评估等环节。以下将详细阐述k-近邻算法的实现步骤。

3.1 数据准备

  数据准备是k-近邻算法实施的第一步,主要包括数据收集、数据预处理和特征选择。

数据收集

  首先,需要收集相关的数据集。数据集可以来源于公开数据集、企业内部数据或通过爬虫技术获取。确保数据集的质量和代表性是成功实施k-近邻算法的基础。

数据预处理

  数据预处理包括以下几个方面:

  • 缺失值处理:检查数据集中是否存在缺失值,并采取适当的处理方法,如删除缺失值、用均值或中位数填充等。

  • 数据清洗:去除重复样本和异常值,确保数据的准确性。

  • 特征标准化:由于k-近邻算法依赖于距离计算,不同特征的尺度可能会影响结果。因此,通常需要对特征进行标准化处理,使其均值为0,标准差为1,或将特征缩放到相同的范围(如[0, 1])。

    常用的标准化方法包括:

    • Z-score标准化
      x ′ = x − μ σ x' = \frac{x - \mu}{\sigma} x=σxμ
      其中, μ \mu μ为特征的均值, σ \sigma σ为标准差。

    • Min-Max标准化
      x ′ = x − min ( x ) max ( x ) − min ( x ) x' = \frac{x - \text{min}(x)}{\text{max}(x) - \text{min}(x)} x=max(x)min(x)xmin(x)

特征选择

特征选择是提高模型性能的重要步骤。可以通过以下方法进行特征选择:

  • 相关性分析:计算特征与目标变量之间的相关性,选择相关性较高的特征。
  • 特征重要性评估:使用树模型等方法评估特征的重要性,选择重要性较高的特征。
  • 降维技术:如主成分分析(PCA)等,减少特征维度,保留主要信息。

3.2 选择k值

  选择合适的k值是k-近邻算法的重要环节。k值的选择可以通过以下方法进行:

  • 交叉验证:将数据集划分为训练集和验证集,使用不同的k值进行训练和验证,选择在验证集上表现最佳的k值。

  • 经验法则:通常情况下,k值可以选择为样本总数的平方根,或者在小范围内进行调整(如3、5、7等)。

3.3 模型训练

  k-近邻算法的训练过程相对简单,因为它不需要显式的模型训练。主要步骤如下:

  1. 存储训练数据:将预处理后的训练数据集存储在内存中,以便在预测阶段进行距离计算。

3.4 预测

  在预测阶段,k-近邻算法的主要步骤如下:

  1. 输入待分类样本:接收一个待分类的样本,其特征向量为 x x x

  2. 计算距离:计算待分类样本与训练集中所有样本之间的距离,使用选择的距离度量方法(如欧氏距离、曼哈顿距离等)。

  3. 选择k个最近邻:根据计算得到的距离,从小到大排序,选择距离最近的k个样本 N k = { x i 1 , x i 2 , … , x i k } N_k = \{x_{i_1}, x_{i_2}, \ldots, x_{i_k}\} Nk={xi1,xi2,,xik}

  4. 投票机制

    • 分类任务:对这k个样本的类别进行投票,选择出现次数最多的类别作为预测结果:
      y ^ = mode ( y i 1 , y i 2 , … , y i k ) \hat{y} = \text{mode}(y_{i_1}, y_{i_2}, \ldots, y_{i_k}) y^=mode(yi1,yi2,,yik)

    • 回归任务:对这k个样本的值进行平均,得到预测值:
      y ^ = 1 k ∑ j = 1 k y i j \hat{y} = \frac{1}{k} \sum_{j=1}^{k} y_{i_j} y^=k1j=1kyij

3.5 模型评估

  模型评估是判断k-近邻算法性能的重要步骤。可以使用以下指标进行评估:

分类任务评估指标

  • 准确率(Accuracy):计算正确分类的样本占总样本的比例。
  • 精确率(Precision)召回率(Recall)F1-score:用于评估模型在不平衡数据集上的表现。

回归任务评估指标

  • 均方误差(MSE)均方根误差(RMSE)决定系数(R²):用于评估回归模型的预测性能。

3.6 调整与优化

  根据模型评估的结果,可以进行以下调整与优化:

  • 调整k值:根据评估结果,适当调整k值以提高模型性能。
  • 特征选择:重新评估特征的重要性,选择更优的特征组合。
  • 距离度量:尝试不同的距离度量方法,观察对模型性能的影响。

3.7 小结

  k-近邻算法的实现步骤包括数据准备、选择k值、模型训练、预测、模型评估以及调整与优化等环节。通过合理的步骤和方法,可以有效地应用k-近邻算法解决分类和回归问题。理解这些实现步骤对于成功应用k-近邻算法至关重要。

四、应用场景

  k-近邻算法(K-Nearest Neighbors, KNN)因其简单性和有效性,广泛应用于多个领域。以下是一些典型的应用案例,包括图像识别、推荐系统和医疗诊断,每个案例都结合具体代码进行详细阐述。

4.1 图像识别

  图像识别是k-近邻算法的一个经典应用场景。通过计算图像特征之间的距离,k-近邻算法可以有效地对图像进行分类。常见的数据集包括MNIST手写数字数据集。

示例代码

  以下是使用k-近邻算法对MNIST数据集进行手写数字识别的示例代码:

import numpy as np
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 加载MNIST数据集
mnist = fetch_openml('mnist_784', version=1)
X, y = mnist['data'], mnist['target']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建k-近邻分类器
k = 5
knn = KNeighborsClassifier(n_neighbors=k)

# 训练模型
knn.fit(X_train, y_train)

# 进行预测
y_pred = knn.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'准确率: {accuracy:.2f}')

4.2 推荐系统

  k-近邻算法也被广泛应用于推荐系统中。通过分析用户的历史行为,k-近邻算法可以为用户推荐相似的产品或内容。常见的应用包括电影推荐、商品推荐等。

示例代码

  以下是使用k-近邻算法进行简单商品推荐的示例代码,假设我们有一个用户-商品评分矩阵:

import numpy as np
from sklearn.neighbors import NearestNeighbors

# 用户-商品评分矩阵
ratings = np.array([[5, 4, 0, 0, 2],
                    [0, 0, 4, 5, 0],
                    [3, 0, 0, 0, 4],
                    [0, 2, 3, 0, 0],
                    [0, 0, 5, 4, 0]])

# 创建k-近邻模型
knn = NearestNeighbors(n_neighbors=2, metric='cosine')
knn.fit(ratings)

# 假设我们要为用户0推荐商品
user_id = 0
distances, indices = knn.kneighbors(ratings[user_id].reshape(1, -1))

# 输出推荐的用户
print("为用户0推荐的相似用户ID:", indices.flatten()[1:])

4.3 医疗诊断

  在医疗领域,k-近邻算法可以根据病人的症状和历史数据进行疾病分类。通过分析病人的特征,k-近邻算法能够帮助医生做出更准确的诊断。

示例代码

  以下是使用k-近邻算法进行简单医疗诊断的示例代码,假设我们有一个包含病人症状和疾病标签的数据集:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report

# 假设我们有一个简单的医疗数据集
data = {
    'symptom1': [1, 0, 1, 1, 0],
    'symptom2': [0, 1, 1, 0, 1],
    'symptom3': [1, 1, 0, 0, 1],
    'disease': ['A', 'B', 'A', 'B', 'A']
}

df = pd.DataFrame(data)

# 特征和标签
X = df[['symptom1', 'symptom2', 'symptom3']]
y = df['disease']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建k-近邻分类器
k = 3
knn = KNeighborsClassifier(n_neighbors=k)

# 训练模型
knn.fit(X_train, y_train)

# 进行预测
y_pred = knn.predict(X_test)

# 评估模型
print(classification_report(y_test, y_pred))

总结

  k-近邻算法(KNN)作为一种经典的机器学习算法,以其简单易懂和直观的特性,广泛应用于多个领域,包括图像识别、推荐系统和医疗诊断等。通过计算样本之间的距离,k-近邻算法能够有效地进行分类和回归任务,帮助解决实际问题。尽管k-近邻算法在小规模数据集上表现良好,但在处理大规模数据时可能面临计算复杂度高和对噪声敏感等挑战。因此,在实际应用中,合理选择距离度量、k值以及进行适当的数据预处理和特征选择是提高模型性能的关键。通过本文的探讨,希望读者能够更深入地理解k-近邻算法的原理、实现步骤及其应用场景,从而在实际项目中灵活运用这一强大的工具。


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

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

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

相关文章

UE5 umg学习(四) 将UI控件显示到关卡中

视频资料 7、将UI控件渲染到关卡_哔哩哔哩_bilibili 在前三节里,创建了用户的控件蓝图Widget_BP 目标是运行的时候,开始运行这个蓝图,因此需要在开始事件触发运行 首先,回到主页,点击关卡蓝图 要从事件开始运行时 …

StarRocks Summit Asia 2024 全部议程公布!

随着企业数字化转型深入,云原生架构正成为湖仓部署的新标准。弹性扩展、资源隔离、成本优化,帮助企业在云上获得了更高的灵活性和效率。与此同时,云原生架构也为湖仓与 AI 的深度融合奠定了基础。 在过去一年,湖仓技术与 AI 的结…

【CSS】opacity 影响 z-index 不生效

准备知识 一般来说,z-index 不生效的原因有: 父元素的 position 属性: z-index 只对 position 属性为 relative、absolute 或 fixed 的元素有效。 其他元素的 z-index: 如果页面中有其他元素也设置了较高的 z-index,…

2024 年(第 7 届)“泰迪杯”数据分析技能赛B 题 特殊医学用途配方食品数据分析 完整代码 结果 可视化分享

一、背景特殊医学用途配方食品简称特医食品,是指为满足进食受限、消化吸收障碍、代谢素乱或者特定疾病状态人群对营养素或者膳食的特殊需要,专门加工配置而成的配方食品,包括0月龄至12月龄的特殊医学用途婴儿配方食品和适用于1岁以上的特殊医…

【MYSQL】数据库日志 (了解即可)

一、错误日志 可以通过 tail查看文件的日志的,如果发生错误,就会在日志里出现问题。 二、二进制日志(binlog) BINLOG记录了insert delete update 以及 alter create drop 等语句。作用是灾难时的数据恢复,还有就是主…

STM32 创建一个工程文件(寄存器、标准库)

首先到官网下载对应型号的固件包: 像我的STM32F103C8T6的就下载这个: 依次打开: .\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 可以看到: 这…

C语言 char 字符串 - C语言零基础入门教程

目录 一.char 字符串简介 二.字符和字符串区别 1.取值范围相同2.字符串由多个字符构成3.字符串和字符使用 printf 函数 三.char 字符串遍历四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.char 字符串简介 在C 语言中,除了前面介绍…

Python——NumPy库的简单用法,超级详细教程使用

一、什么是NumPy库 NumPy:它是python的一个科学计算库函数,它是由c语言编写的 它应用于数据处理、机器学习、图像处理、文件操作等等 二、array函数 这里导入库numpy,命名为np,后面的np都是代表着是numpy函数 array函数表示创建…

Python学习26天

集合 # 定义集合 num {1, 2, 3, 4, 5} print(f"num:{num}\nnum数据类型为:{type(num)}") # 求集合中元素个数 print(f"num中元素个数为:{len(num)}") # 增加集合中的元素 num.add(6) print(num) # {1,2,3,4,5,6} # 删除…

【数字图像处理+MATLAB】基于 Sobel 算子计算图像梯度并进行边缘增强:使用 imgradientxy 函数

引言 在图像处理中,边缘通常是图像中像素强度变化最大的地方,这种变化可以通过计算图像的梯度来量化。梯度是一个向量,它的方向指向像素强度增加最快的方向,它的大小(或者说幅度)表示像素强度增加的速度。…

从社交媒体到元宇宙:Facebook未来发展新方向

Facebook,作为全球最大的社交媒体平台之一,已经从最初的简单互动工具发展成为一个跨越多个领域的科技巨头。无论是连接人与人之间的社交纽带,还是利用大数据、人工智能等技术为用户提供个性化的体验,Facebook一直引领着社交网络的…

微信小程序——01开发前的准备和开发工具

文章目录 一、开发前的准备1注册小程序账号2安装开发者工具 二、开发者工具的使用1创建项目2 工具的使用3目录结构4各个页面之间的关系5 权限管理6提交审核和发布 一、开发前的准备 开发前需要进行以下准备: 1 注册小程序账号2激活邮箱3 信息登记4 登录小程序管理后…

SQL慢查询优化方式

目录 一、SQL语句优化 1.避免使用 SELECT * ,而是具体字段 2.避免使用 % 开头的 LIKE 的查询 3.避免使用子查询,使用JOIN 4.使用EXISTS代替IN 5.使用LIMIT 1优化查询 6.使用批量插入、优化INSERT操作 7.其他方式 二、SQL索引优化 1.在查询条件…

【51单片机】LCD1602液晶显示屏

学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602(Liquid Crystal Display)液晶显示屏是…

git入门环境搭建和gui使用

git下载 git官网地址:https://git-scm.com/ 如果没有魔法的话,官网这个地址能卡死你 这里给个国内的git镜像链接 git历史版本镜像链接 然后一路next 默认路径 默认勾选就行。 今天就写到这吧,11点多了该睡了,,&#…

python调用MySql详细步骤

一、下载MySql MySQL :: Download MySQL Installerhttps://dev.mysql.com/downloads/windows/installer/8.0.html点击上面链接,进入MySQL8.0的下载页面,选择离线安装包下载。 不需要登陆,直接点击下方的 No thanks,just start my download. …

【go从零单排】通道select、通道timeout、Non-Blocking Channel Operations非阻塞通道操作

🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 select 语句是 Go 的一种控制结构,用于等待多个通道操作。它类似于 s…

FPGA实现PCIE采集电脑端视频转SFP光口万兆UDP输出,基于XDMA+GTX架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案10G Ethernet Subsystem实现万兆以太网物理层方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频PCIE视频采集QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存UDP视频组包发送UDP协议栈MAC…

C++数据结构算法学习

C ,orient(面向) object , object entity(实体) Visible(可见的) or invisible(不可见) 变量用来保存数据 objects attribute(属性) services(服务) C STL 容器 vector, list() vector底层是数组,类似双向链表和list底层 map/s…

基于Java Springboot图书馆管理系统

一、作品包含 源码数据库文档全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据库:MySQL8.0 数据…