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知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

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

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

相关文章

Debezium-MySqlConnectorTask

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 MySqlConnectorTask,用于读取MySQL的二进制日志并生成对应的数据变更事件 整体架构流程 技术名词解释 数据库模式(Database Schema) 数据库模式是指数据库中数据的组织结构和定义&…

SDF,一个从1978年运行至今的公共Unix Shell

关于SDF 最近发现了一个很古老的公共Unix Shell服务器,这个项目从1978年运行至今,如果对操作系统,对Unix感兴趣,可以进去玩一玩体验一下 SDF Public Access UNIX System - Free Shell Account and Shell Access 注册方式 我一…

逆向攻防世界CTF系列41-EASYHOOK

逆向攻防世界CTF系列41-EASYHOOK 看题目是一个Hook类型的,第一次接触,虽然学过相关理论,可以看我的文章 Hook入门(逆向)-CSDN博客 题解参考:https://www.cnblogs.com/c10udlnk/p/14214057.html和攻防世界逆向高手题之EASYHOOK-…

C# 面向对象

C# 面向对象编程 面向过程:一件事情分成多个步骤来完成。 把大象装进冰箱 (面向过程化设计思想)。走一步看一步。 1、打开冰箱门 2、把大象放进冰箱 3、关闭冰箱门 面向对象:以对象作为主体 把大象装进冰箱 1、抽取对象 大象 冰箱 门 &#xff0…

【AI图像生成网站Golang】项目架构

AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与调试(等待更新) 四、项目架构 本项目的后端基于Golang和Gin框架开发,主要包括的模块有: backend/ ├── …

Acme PHP - Let‘s Encrypt

Lets Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的SSL/TLS证书。 使用PHP来更新证书: Acme PHP | Rob…

前后端交互之动态列

一. 情景 在做项目时,有时候后会遇到后端使用了聚合函数,导致生成的对象的属性数量或数量不固定,因此无法建立一个与之对应的对象来向前端传递数据,这时可以采用NameDataListVO向前端传递数据。 Data Builder AllArgsConstructo…

【LeetCode 题】只出现一次的数字--其余数字都出现3次

🔶力扣上一道有意思的题,参考了评论区的解法,一起来学习 🍔思路说明: 🌟举例说明 : nums [2,2,3,2] 我们需要把其中的数字 ‘3’ 找出来 1️⃣把每个数都想成32位的二进制数(这里举…

如何在 Ubuntu 上安装 Jupyter Notebook

本篇文章将教你在 Ubuntu 服务器上安装 Jupyter Notebook,并使用 Nginx 和 SSL 证书进行安全配置。 我将带你一步步在云服务器上搭建 Jupyter Notebook 服务器。Jupyter Notebook 在数据科学和机器学习领域被广泛用于交互式编码、可视化和实验。在远程服务器上运行…

一文了解Android的核心系统服务

在 Android 系统中,核心系统服务(Core System Services)是应用和系统功能正常运行的基石。它们负责提供系统级的资源和操作支持,包含了从启动设备、管理进程到提供应用基础组件的方方面面。以下是 Android 中一些重要的核心系统服…

学者观察 | 元计算、人工智能和Web 3.0——山东大学教授成秀珍

导语 成秀珍教授提出元计算是在开放的零信任环境下整合算力资源打通数据壁垒构建自进化智能的新质生产力技术,是一种新计算范式;区块链是Web3.0的核心技术之一,有助于保障开放零信任环境下,用户、设备和服务间去中心化数据流通的…

集群聊天服务器(9)一对一聊天功能

目录 一对一聊天离线消息服务器异常处理 一对一聊天 先新添一个消息码 在业务层增加该业务 没有绑定事件处理器的话消息会派发不出去 聊天其实是服务器做一个中转 现在同时登录两个账号 收到了聊天信息 再回复一下 离线消息 声明中提供接口和方法 张三对离线的李…

MySQL —— MySQL索引介绍、索引数据结构、聚集索引和辅助索引、索引覆盖

文章目录 索引概念索引分类索引数据结构种类Innodb 索引数据结构聚集索引和辅助索引(非聚集索引)聚集索引辅助索引(非聚集索引) 索引覆盖 索引概念 索引是对数据库表中一列或多列的值进行排序后的一种数据结构。用于帮助 mysql 提…

4A架构之间的关系和集成

首先我们还是来看业务架构业务域,大家都知道在业务架构里面其实有三个核心的内容,一个是价值流,一个是业务能力,一个是业务流程。 价值流往往就是顶端的流程,业务能力的分解往往是2~4级,对于详细的业务流程…

RadSystems 自定义页面全攻略:个性化任务管理系统的实战设计

系列文章目录 探索RadSystems:低代码开发的新选择(一)🚪 探索RadSystems:低代码开发的新选择(二)🚪 探索RadSystems:低代码开发的新选择(三)&…

([LeetCode仓颉解题报告] 661. 图片平滑器

[LeetCode仓颉解题报告] 661. 图片平滑器 一、 题目1. 题目描述2. 原题链接 二、 解题报告1. 思路分析2. 复杂度分析3. 代码实现 三、 本题小结四、 参考链接 一、 题目 1. 题目描述 2. 原题链接 链接: 661. 图片平滑器 二、 解题报告 1. 思路分析 由于只需要3*39个格子&am…

若依权限控制

springbootvue2项目中的权限控制(若依项目) 步骤: 1.登录管理员账号,为普通用户增加权限按钮 绿色部分为权限控制字符 2.在后端对应的方法上增加权限控制(这里以删除操作为例):PreAuthorize(“ss.hasPermi(‘area:store:remove’)”) 3.在前端对应的按钮上增加权限控制:v-ha…

gvim添加至右键、永久修改配置、放大缩小快捷键、ctrl + c ctrl +v 直接复制粘贴、右键和还原以前版本(V)冲突

一、将 vim 添加至右键 进入安装目录找到 vim91\install.exe 管理员权限执行 Install will do for you:1 Install .bat files to use Vim at the command line:2 Overwrite C:\Windows\vim.bat3 Overwrite C:\Windows\gvim.bat4 Overwrite C:\Windows\evim.bat…

使用 OpenAI 进行数据探索性分析(EDA)

探索性数据分析(Exploratory Data Analysis, 简称 EDA)是数据分析中不可或缺的环节,帮助分析师快速了解数据的分布、特征和潜在模式。传统的 EDA 通常需要手动编写代码或使用工具完成。现在,通过 OpenAI 的 GPT-4 模型&#xff0c…

汽车资讯新篇章:Spring Boot技术启航

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…