当前位置: 首页 > news >正文

K-Means 聚类算法:用生活场景讲解机器学习的“分组”方法

一、K-Means 算法概述

K-Means 是一种经典的无监督学习聚类算法,目的是将数据集中 n 个样本划分成 K 个簇(cluster),每个样本根据其特征被归入与之最接近的簇。简单来说,这就像在超市购物时,顾客会被根据购物习惯划分为“日用品顾客”“高频食品顾客”和“零食顾客”三类,从而实现有针对性的促销。

“将 n 个样本划分成 K 个簇”的含义
假设你是一位校长,拥有 500 名学生的期中考试成绩数据。你希望根据成绩将学生划分成 3 个组:优秀、中等、需辅导。K-Means 算法会根据每位学生的数学、语文、英语成绩,将这些 500 名学生划分为这 3 个簇(即组)。


二、K-Means 算法步骤

  1. 确定聚类数量 K
    选择 K 个初始聚类中心点(可随机选择,也可以使用改进方法,如 K-Means++)。

  2. 分配样本点
    根据某种距离度量(通常是欧几里得距离),将每个样本点分配给距离最近的聚类中心。例如,在购物中心顾客分群中,距离最近的聚类中心可能代表“购物频率相似”的一类人群。

  3. 更新聚类中心
    计算每个簇中所有点的平均值,更新聚类中心位置。

  4. 重复步骤 2 和 3
    直到聚类中心的位置不再发生变化,或达到最大迭代次数。


三、K-Means 数学原理


四、K-Means 示例代码

1. Python 示例
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt# 生成示例数据集(例如顾客的月消费额和购物频率)
X = np.array([[200, 5], [220, 6], [180, 4], [3000, 15], [3100, 16], [3050, 15]])# 创建 KMeans 模型
kmeans = KMeans(n_clusters=2, random_state=0, n_init='auto').fit(X)# 获取聚类标签
labels = kmeans.labels_
print("每个点的聚类标签:", labels)# 聚类中心
centers = kmeans.cluster_centers_
print("聚类中心坐标:", centers)# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='x', label='聚类中心')
plt.title("K-Means 聚类示例:顾客消费数据分组")
plt.legend()
plt.show()

2. 输出

 


五、K-Means 聚类效果评估方法

  1. SSE(误差平方和)
    SSE 越小,表示聚类效果越好。

  2. 轮廓系数(Silhouette Coefficient)
    评估簇内一致性和簇间分离度,值在 [-1, 1] 之间,越接近 1 聚类效果越好。

  3. Calinski-Harabasz 指数
    衡量簇间方差和簇内方差之比,值越大效果越好。


六、选择最佳 K 值的方法

  1. 肘部法则(Elbow Method)
    通过绘制不同 KK 值对应的 SSE 曲线,找到曲线拐点处的 KK 值:

    sse = []
    for k in range(1, len(X) + 1):  # 让 k 最大值等于样本数量kmeans = KMeans(n_clusters=k, n_init='auto').fit(X)sse.append(kmeans.inertia_)plt.plot(range(1, len(X) + 1), sse, marker='o')
    plt.xlabel('簇数量 K')
    plt.ylabel('SSE')
    plt.title('肘部法则示例')
    plt.show()
    
  2. 轮廓系数法(Silhouette Score)
    计算不同 KK 值的轮廓系数,选择系数最大的 KK 值。

 


七、K-Means 的优缺点

优点
  • 简单易实现,计算效率高,尤其适用于大规模数据集。
  • 对高维数据同样适用。
  • 聚类结果可解释性强。
缺点
  • 需要预先指定 KK 值。
  • 初始中心点选择不同,可能导致不同的聚类结果。
  • 对异常值和噪声敏感,容易受异常数据影响。
  • 聚类簇形状为“球形”的数据效果较好,对于非线性分布效果较差。

八、K-Means 改进方法

  1. K-Means++
    通过优化初始聚类中心的选择,减少随机初始化带来的不稳定问题。

  2. MiniBatch K-Means
    适用于大规模数据集,每次仅使用小批量数据进行聚类,提高计算效率。

  3. 其他算法(如 DBSCAN、GMM)
    当数据簇形状不规则时,可考虑使用密度聚类算法(如 DBSCAN)或概率模型聚类(如 GMM)。


九、K-Means 实际应用场景

1. 图像分割

K-Means 算法可将图像的像素点聚类成不同颜色簇,实现图像简化或压缩。

from sklearn.cluster import KMeans
from skimage import ioimage = io.imread('image.jpg')
image_2d = image.reshape(-1, 3)# 聚类为 5 个颜色簇
kmeans = KMeans(n_clusters=5).fit(image_2d)
segmented_img = kmeans.cluster_centers_[kmeans.labels_].reshape(image.shape).astype('uint8')io.imshow(segmented_img)
io.show()

 

2. 顾客消费分群

根据顾客的消费金额和频次,将顾客分为“高消费高频次”、“中消费中频次”和“低消费低频次”三类,有助于个性化营销。

顾客消费分群示例:Python 代码实现

以下是一个基于 KMeans 聚类算法对顾客消费行为进行分群的完整代码示例。假设数据集中包含“年消费金额”和“月平均购物次数”两个特征:

数据集示例:
顾客ID年消费金额(元)月平均购物次数
150005
22000010
3150008
480006
53000012

完整 Python 代码示例
# 导入必要库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans# 创建模拟数据集
data = {'顾客ID': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],'年消费金额': [5000, 20000, 15000, 8000, 30000, 12000, 10000, 25000, 35000, 18000],'月平均购物次数': [5, 10, 8, 6, 12, 7, 5, 10, 15, 9]
}# 转换为 DataFrame
df = pd.DataFrame(data)# 提取聚类所需的特征
X = df[['年消费金额', '月平均购物次数']].values# 创建并拟合 KMeans 模型
kmeans = KMeans(n_clusters=3, random_state=0)
df['聚类标签'] = kmeans.fit_predict(X)# 输出聚类后的数据
print("聚类结果:")
print(df)# 可视化聚类结果
plt.figure(figsize=(8, 6))
plt.scatter(X[:, 0], X[:, 1], c=df['聚类标签'], cmap='viridis', marker='o')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75, marker='x', label='聚类中心')
plt.title("顾客消费行为聚类")
plt.xlabel("年消费金额(元)")
plt.ylabel("月平均购物次数")
plt.legend()
plt.show()

代码说明
  1. 模拟数据集:
    • 年消费金额:顾客一年内的总消费金额。
    • 月平均购物次数:顾客每月的平均购物次数。
  2. KMeans 聚类模型:
    • n_clusters=3:将顾客分成 3 个群体,比如“高消费高频次”、“中消费中频次”和“低消费低频次”。
  3. 聚类标签:
    • fit_predict(X) 方法将数据聚类,并返回每个样本的聚类标签。

运行结果示例

打印的 df 聚类结果示例如下:

顾客ID  年消费金额  月平均购物次数  聚类标签
0     1   5000        5     1
1     2  20000       10     2
2     3  15000        8     2
3     4   8000        6     1
4     5  30000       12     0
5     6  12000        7     1
6     7  10000        5     1
7     8  25000       10     2
8     9  35000       15     0
9    10  18000        9     2
  • 标签 0:中等消费中等频次用户
  • 标签 1:高消费高频次用户
  • 标签 2:低消费低频次用户

可视化聚类图示

  • 每个点代表一个顾客,颜色不同表示不同的聚类标签。
  • 红色的 x 表示聚类中心。

3. 推荐系统优化

通过用户行为数据将用户分群,识别出相似兴趣爱好的用户群体,提升推荐的精准度。

用户行为数据聚类示例:Python 代码实现

以下是一个基于 KMeans 聚类算法对用户行为数据进行分群的完整代码示例。假设我们有一个数据集,包含以下用户行为特征:

用户ID浏览时长(分钟)购买次数评论次数收藏次数
160253
21204106
330110
418081210
545001

完整 Python 代码示例
# 导入必要库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler# 模拟用户行为数据
data = {'用户ID': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],'浏览时长(分钟)': [60, 120, 30, 180, 45, 150, 300, 240, 100, 20],'购买次数': [2, 4, 1, 8, 0, 5, 10, 7, 3, 1],'评论次数': [5, 10, 1, 12, 0, 8, 15, 9, 5, 2],'收藏次数': [3, 6, 0, 10, 1, 4, 8, 7, 5, 1]
}# 创建 DataFrame
df = pd.DataFrame(data)# 提取特征列
X = df[['浏览时长(分钟)', '购买次数', '评论次数', '收藏次数']]# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 创建并拟合 KMeans 模型
kmeans = KMeans(n_clusters=3, random_state=42)
df['聚类标签'] = kmeans.fit_predict(X_scaled)# 输出聚类后的数据
print("聚类结果:")
print(df)# 可视化:用第一个和第二个特征进行二维聚类展示
plt.figure(figsize=(8, 6))
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=df['聚类标签'], cmap='viridis', marker='o')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75, marker='x', label='聚类中心')
plt.title("用户行为数据聚类结果")
plt.xlabel("标准化浏览时长")
plt.ylabel("标准化购买次数")
plt.legend()
plt.show()

代码说明
  1. 数据标准化

    • StandardScaler 对不同量纲的数据进行标准化,确保浏览时长和购买次数等特征具有相同的尺度。
    • 标准化公式: Z=X−mean(X)std(X)Z = \frac{X - \text{mean}(X)}{\text{std}(X)}
  2. 聚类模型创建

    • n_clusters=3:将用户分为 3 类,比如“高活跃高购买用户”、“中等活跃用户”和“低活跃用户”。
    • fit_predict(X_scaled) 方法将数据聚类,并返回每个样本的聚类标签。
  3. 可视化

    • 使用二维图展示用户行为的聚类情况,用浏览时长和购买次数作为坐标轴。

聚类标签示例输出
用户ID  浏览时长(分钟)  购买次数  评论次数  收藏次数  聚类标签
0     1        60     2     5     3     1
1     2       120     4    10     6     0
2     3        30     1     1     0     1
3     4       180     8    12    10     2
4     5        45     0     0     1     1
5     6       150     5     8     4     0
6     7       300    10    15     8     2
7     8       240     7     9     7     2
8     9       100     3     5     5     0
9    10        20     1     2     1     1

分析聚类结果
  • 标签 0:中等活跃用户,有较高的购买和评论次数。
  • 标签 1:高活跃用户,浏览时间长,频繁购买和评论。
  • 标签 2:低活跃用户,浏览时长短,购买和评论较少。


应用场景
  • 推荐系统优化:针对高活跃用户推荐更多折扣和促销活动,提高忠诚度。
  • 用户唤醒策略:针对低活跃用户提供限时优惠和个性化推送,提高回访率。
  • 行为分析:对不同群体进行行为分析,制定更精准的内容和产品推荐策略。

可选改进
  • 增加更多行为特征,如“停留页面数”、“访问频率”等,提高聚类的细粒度。
  • 尝试其他聚类方法,如 DBSCANGMM,对非球形聚类效果更好。


十、总结

K-Means 算法模拟了“根据相似特征进行归类分组”的过程,非常适用于场景化分析和分群任务。在实践中,选择合适的 KK 值和初始中心点至关重要。对大规模数据集,可以使用 K-Means++ 和 MiniBatch K-Means 等优化算法,提高聚类的稳定性和计算效率。

相关文章:

K-Means 聚类算法:用生活场景讲解机器学习的“分组”方法

一、K-Means 算法概述 K-Means 是一种经典的无监督学习聚类算法,目的是将数据集中 n 个样本划分成 K 个簇(cluster),每个样本根据其特征被归入与之最接近的簇。简单来说,这就像在超市购物时,顾客会被根据购…...

C语言与ASCII码应用之简单加密

加密是什么?什么是加密通话?用人话说就是一句有含义的话,经过一定的特殊规则把里面的每个字按照这个规则进行改变,但是这个规则只有你和你想让知道这条信息的人知道 今天我们来用ASCII码编写一个简单加密与解密的程序&#xff0c…...

python无需验证码免登录12306抢票 --selenium(2)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 [TOC](python无需验证码免登录12306抢票 --selenium(2)) 前言 提示:这里可以添加本文要记录的大概内容: 就在刚刚我抢的票:2025年1月8日…...

[论文阅读]Corpus Poisoning via Approximate Greedy Gradient Descent

Corpus Poisoning via Approximate Greedy Gradient Descent [2406.05087] Corpus Poisoning via Approximate Greedy Gradient Descent 基于近似贪婪梯度下降的语料库投毒 面向检索器的攻击 AGGD 通过从所有符元位置中选择排名最高的符元,而不是从单个随机采样…...

C++—9、如何在Microsoft Visual Studio中调试C++

本文通过实例操作来介绍 Visual Studio 调试器的功能。调试器在运行过程中可提供许多方法让你查看代码的情况。 你可以逐步浏览代码、查看变量中存储的值、设置对变量的监视以查看值何时改变、检查代码的执行路径、查看代码分支是否正在运行等等。本实例主要是设置断点及查看内…...

《深度剖析:开源与闭源模型,AI舞台上的不同角色》

在人工智能蓬勃发展的当下,模型的选择如同为一场战役挑选合适的武器,至关重要。开源模型与闭源模型作为AI领域的两大阵营,在性能和应用场景上展现出显著差异,深刻影响着开发者、企业以及整个行业的走向。 性能差异:实…...

开源 vGPU 方案 HAMi 解析

开源 vGPU 方案 HAMi 一、k8s 环境下 GPU 资源管理的现状与问题 (一)资源感知与绑定 在 k8s 中,资源与节点紧密绑定。对于 GPU 资源,我们依赖 NVIDIA 提供的 device-plugin 来进行感知,并将其上报到 kube-apiserver…...

Unity 大地图功能 离线瓦片地图

不使用第二个摄像机实现类似开放世界的大地图功能。 功能如下: 按下M键打开/关闭大地图功能 打开大地图时,默认玩家位置居中 大地图支持拖拽,可调节拖拽速度,支持XY轴翻转 支持大地图设置边缘偏移量 可设置是否启动拖拽边界 …...

【计算机网络】什么是网关(Gateway)?

网上冲浪多了,你可以听到过网关(Gateway)这个词,但是却不太清楚网关(Gateway)到底是干什么的、负责网络当中的什么任务,本篇文字将会为你介绍网关(Gateway)的作用&#x…...

AIOps 平台

AIOps(Artificial Intelligence for IT Operations)平台是一种结合人工智能(AI)技术和IT运营管理的解决方案,旨在通过自动化、智能化的手段优化企业IT系统的运行与管理。以下是AIOps平台的核心功能、优势以及常见的技术…...

使用 SQL 和表格数据进行问答和 RAG(1)—数据库准备

一. 从 .sql/csv/xlsx 文件创建 sqlite 数据库。 要从.sql文件准备 SQL DB,这里会将创建数据库的代码放到了,将文件复制到data/sql目录中,然后在终端中的项目文件夹中执行: pip install sqlite3现在创建一个名为sqldb的数据库&a…...

TCP与UDP协议

一、主要区别 ① 连接的建立和断开: TCP(Transform Control Protocol)通过三次握手来建立一个可靠的连接。这个过程确保了双方都能发送和接收数据。连接建立后,TCP提供稳定的数据传输服务。当通信结束时,TCP通过四次…...

【MySQL】MVCC详解, 图文并茂简单易懂

欢迎来到啊妮莫的学习小屋 祝读本文的朋友都天天开心呀 目录 MVCC简介快照读与当前读快照读当前读 隔离级别隐藏字段和Undo Log版本链✨MVCC原理--ReadView✨ReadView简介设计思路适用隔离级别重要内容 ReadView规则MVCC整体流程 不同隔离级别下的MVCC读已提交可重复读 总结 M…...

Cisco认证是Cisco公司建立的网络技术证书体系

思科认证体系是由Cisco公司建立的分为3个层次的网络技术证书体系,随着Cisco产品线的扩大和市场份额的不断提升,Cisco产品从当初仅有的 Cisco路由器和Cisco交换机发展到现在的6大方向:路由交换,网络设计,网络安全&#…...

Clojure语言的面向对象编程

Clojure语言的面向对象编程 引言 Clojure是一种现代的Lisp方言,它特别强调函数式编程,Immutable数据结构和强大的并发能力。然而,很多人可能会问:Clojure支持面向对象编程吗?虽然Clojure没有像Java或C那样的传统类和…...

React快速上手到项目实战总篇

React核心价值与前置知识 时刻保持对知识的渴望 家人们 开学!!! 核心价值 组件化(易开发易维护) 数据驱动视图 :定义好数据和ui的显示规则 即UIf(state) 只关注业务数据修改,不在操作DOM 增加开发效率 使用vite创建Recat项目 …...

Dart语言的语法

Dart语言的魅力与应用 引言 随着互联网的发展和移动设备的普及,编程语言层出不穷,各种语言如雨后春笋般被创造出来。其中,Dart语言作为一种现代编程语言,凭借其简洁的语法、强大的功能以及良好的性能,受到了越来越多…...

C++——多态

目录 前言 1. 多态的概念 2. 多态的定义及其实现 2.1 多态的构成条件 2.1.1 实现多态的两个重要条件 2.1.2 虚函数 2.1.3 虚函数的重写/覆盖 2.1.4 多态场景的⼀个选择题 2.1.5 虚函数重写的⼀些其他问题 2.1.5.1 协变(了解) 2.1.5.2 析构函…...

什么是Transformer模型中的KV缓存:上下文新增那之前计算的KV还可用,在原有基础上对新增的进行计算就行

什么是Transformer模型中的KV缓存? 在Transformer模型中,KV缓存(Key-Value Cache)具有重要作用,以下是关于它的详细介绍: 概念含义 KV缓存主要是用于存储在模型推理过程中已经计算过的键(Key)和值(Value)信息。在Transformer架构里,比如在自注意力机制等计算环节…...

12.C语言中的struct详解:定义、赋值、指针、嵌套与位字段

目录 1.简介2.struct 的复制3.struct 指针4.struct 的嵌套5.位字段6.弹性数组成员 1.简介 本篇原文为:C语言中的struct详解:定义、赋值、指针、嵌套与位字段。 更多C进阶、rust、python、逆向等等教程,可点击此链接查看:酷程网 …...

洛谷 P3000 [USACO10DEC] Cow Calisthenics G

思路 题目要求断若干条边后形成的连通块中,最大的直径最小,很明显的二分。关键就在于如何写 c h e c k check check 函数了。 可以用 d f s dfs dfs 来判断要断哪条边。 一、 d [ u ] d[u] d[u] 定义 设 d [ u ] d[u] d[u] 为从 u u u 出发到子树…...

前端拿到zip中所有文件并下载为新的zip文件

问题原因:后端返回了一个zip格式文件供前端下载,然后下载后,形成了zip套zip的形式,当后端不愿处理时,前端不能坐以待毙 PS:当压缩包文件量过大,前端可能会出问题(脑测,未…...

JVM调优

jvm调优步骤:1发现问题、2。定位问题、3.解决问题 jdk自带的命令行调优工具: 1. jps 查看正在运行的 Java 进程 jps -v 查看进程启动时的JVM参数 options 参数: -q:仅仅显示 LVMID(local virtual machine id&#x…...

【前端】【HTML】入门基础知识

参考视频&#xff1a;【狂神说Java】HTML5完整教学通俗易懂_哔哩哔哩_bilibili 一、基本结构 二、基本标签 <h1>&#xff1a;一级标题&#xff0c;通常用于页面的主标题&#xff0c;字体较大且醒目。 <h2>&#xff1a;二级标题&#xff0c;用于副标题或主要章节标…...

Ubuntu桌面管理环境: GDM3,KDM,LightDM

介绍 Ubuntu是一个广受欢迎的Linux操作系统&#xff0c;拥有强大而多样化的桌面管理环境。其中三个常用的桌面管理环境是GDM3&#xff0c;KDM和LightDM。本篇博客将介绍这三个桌面管理环境的特点和功能。 GDM3 (GNOME Display Manager) GDM3是默认的桌面管理环境&#xff0c…...

每天你好20250110(距离春节19天!!!)

亲爱的朋友们&#xff0c;大家早上好&#xff01; &#x1f31e; 今晨乃 2025 年 1 月 10 日&#xff0c;星期五&#xff0c;农历乙巳[蛇]年十一月二十一日。祥蛇逸彩送祥&#xff0c;金乌喷薄耀世&#xff0c;晨晖破雾而来&#xff0c;恰似“赤日初升&#xff0c;其道大光”&…...

iOS 本地新项目上传git仓库,并使用sourceTree管理

此文记录的场景描述&#xff1a; iOS前期开发时&#xff0c;在本地创建项目&#xff0c;直至开发一段时间&#xff0c;初期编码及框架已完善后&#xff0c;才拿到git仓库的地址。此时需要将本地代码上传到git仓库。 上传至git仓库&#xff0c;可以使用终端&#xff0c;键入命令…...

计算机网络之---计算机网络的性能评估

计算机网络的性能评估是指通过各种标准和指标来衡量网络的工作效率和质量&#xff0c;进而对网络进行优化和改进的过程。评估的目标是确保网络能够满足预期的服务质量&#xff08;QoS&#xff09;和性能需求。常见的计算机网络性能评估指标包括带宽、延迟、吞吐量、丢包率等。 …...

对话|企业如何构建更完善的容器供应链安全防护体系

对话&#xff5c;企业如何构建更完善的容器供应链安全防护体系 云布道师 随着云计算和 DevOps 的兴起&#xff0c;容器技术和自动化成为软件开发中的必要手段&#xff0c;软件供应链也进入了自动化及 CI/CD 阶段。然而&#xff0c;容器技术和自动化虽然提升了软件的更新速度&…...

【SpringSecurity】二、自定义页面前后端分离

文章目录 1、用户认证流程AuthenticationSuccessHandler AuthenticationFailureHandlerSecurityFilterChain配置用户认证信息 2、会话并发处理2.1、实现处理器接口2.2、SecurityFilterChain配置 1、用户认证流程 AuthenticationSuccessHandler AuthenticationFailureHandler …...

在 Vue 3 集成 e签宝电子合同签署功能

实现 Vue 3 e签宝电子合同签署功能&#xff0c;需要使用 e签宝提供的实际 SDK 或 API。 e签宝通常提供针对不同平台&#xff08;如 Web、Android、iOS&#xff09;的 SDK&#xff0c;而 Web 端一般通过 WebView 或直接使用嵌入式 iframe 来加载合同签署页面。 下面举个 &…...

基于华为ENSP的OSPF接口网络类型深入浅出(4)

本篇技术博文摘要 &#x1f31f; OSPF的接口在不同网络类型下的工作方式&#xff1b;不同网络类型下的报文通告方式深入浅出hub-spoke架构 引言 &#x1f4d8; 在这个快速发展的技术时代&#xff0c;与时俱进是每个IT人的必修课。我是肾透侧视攻城狮&#xff0c;一名什么都会一…...

西电-算法分析-研究生课程复习笔记

24年秋的应该是张老师最后一次用卷面考试&#xff0c;他说以后这节课的期末考试都是在OJ上刷题了张老师上课还挺有意思的&#xff0c;上完之后能学会独立地思考算法设计问题了。整节课都在强调规模压缩这个概念&#xff0c;考试也是考个人对这些的理解&#xff0c;还挺好玩的哈…...

音频数据增强:提升音频信号质量的多种技术

在音频处理和机器学习领域&#xff0c;音频数据增强是一种常用的技术&#xff0c;旨在通过对原始音频信号进行各种变换和处理&#xff0c;生成更多样化的训练数据。这不仅可以提高模型的鲁棒性&#xff0c;还能改善其在真实世界应用中的表现。本文将介绍几种常用的音频数据增强…...

如何在 Ubuntu 22.04 上安装 Caddy Web 服务器教程

简介 Caddy 是一个开源的 Web 服务器&#xff0c;它支持静态和现代 Web 应用程序&#xff0c;使用预定义的配置规则&#xff0c;并为所有链接的域名自动启用 HTTPS。Caddy 使用 GO 语言编写&#xff0c;提供了用户友好的配置指令&#xff0c;使你既可以将其用作 Web 服务器&am…...

python_excel列表单元格字符合并、填充、复制操作

读取指定sheet页&#xff0c;根据规则合并指定列&#xff0c;填充特定字符&#xff0c;删除多余的列&#xff0c;每行复制四次&#xff0c;最后写入新的文件中。 import pandas as pd""" 读取指定sheet页&#xff0c;根据规则合并指定列&#xff0c;填充特定字…...

基于GAN和RL的思想来训练对话生成

Paper https://arxiv.org/pdf/1701.06547.pdf 基于GAN和RL的思想来训练对话生成 Implementation https://github.com/jiweil/Neural-Dialogue-Generation/tree/master/Adversarial...

小米路由器IPv6 功能使用指南

本文不限于多层路由使用IPv6 的情况&#xff0c;提供解决IPv6 无法获取的更硬核的方法&#xff0c;需要有ssh 工具。&#xff08;无安卓设备&#xff0c;测试环境win、mac、ios&#xff09; 首先明确一点&#xff0c;就是如果想让你的设备得到GUA 地址&#xff0c;即访问 6.i…...

运放输入偏置电流详解

1 输入阻抗与输入偏置电路关系 在选择运放和仪表运放时&#xff0c;经常听到这样的说法&#xff1a;“需要非常高的输入阻抗”&#xff0c;事实上真实如此吗&#xff1f; 输入阻抗&#xff08;更确切的说是输入电阻&#xff09;很少会成为一个重要的问题&#xff08;输入电容也…...

C++指针类型的基本理论和使用方式-学习记录

一、指针简概 &#xff08;一&#xff09;指针定义 指针&#xff08;pointer&#xff09;是“指向&#xff08;point to&#xff09;”另外一种类型的复合类型。与引用类似&#xff0c;指针也实现了对其他对象的间接访问。然而指针与引用相比又有很多不同点。其一&#xff0c;…...

Elasticsearch:使用 Playground 与你的 PDF 聊天

LLMs作者&#xff1a;来自 Elastic Toms Mura 了解如何将 PDF 文件上传到 Kibana 并使用 Elastic Playground 与它们交互。本博客展示了在 Playground 中与 PDF 聊天的实用示例。 Elasticsearch 8.16 具有一项新功能&#xff0c;可让你将 PDF 文件直接上传到 Kibana 并使用 Pla…...

计算机网络之---物理层设备

什么是物理层设备 物理层设备是指负责数据在物理媒介上传输的硬件设备&#xff0c;它们主要处理数据的转换、信号的传输与接收&#xff0c;而不涉及数据的内容或意义。常见的物理层设备包括网卡、集线器、光纤收发器、调制解调器等。 物理层设备有哪些 1、网卡&#xff08;N…...

【Duilib】 List控件支持多选和获取选择的多条数据

问题 使用Duilib库写的一个UI页面用到了List控件&#xff0c;功能变动想支持选择多行数据。 分析 1、List控件本身支持使用SetMultiSelect接口设置是否多选&#xff1a; void SetMultiSelect(bool bMultiSel);2、List控件本身支持使用GetNextSelItem接口获取选中的下一个索引…...

2025新春烟花代码(二)HTML5实现孔明灯和烟花效果

效果展示 源代码 <!DOCTYPE html> <html lang"en"> <script>var _hmt _hmt || [];(function () {var hm document.createElement("script");hm.src "https://hm.baidu.com/hm.js?45f95f1bfde85c7777c3d1157e8c2d34";var …...

如何在 Ubuntu 22.04 上集成 Collabora Online 教程

简介 在本教程中&#xff0c;我们将详细讲解如何在 Ubuntu 22.04 操作系统上安装 Collabora Online。 Collabora Online 是一个基于 LibreOffice 技术的开源办公套件。它提供了许多功能&#xff0c;其中最有用的一个功能是 Collabora 提供了 Word 文档、电子表格、演示文稿等…...

Linux系统启动jar包--Java8

启动命令及参数 1. 启动命令模板 nohup java \ -Xms512m \ -Xmx1024m \ -Xmn256m \ -XX:MetaspaceSize128m \ -XX:MaxMetaspaceSize256m \ -XX:UseG1GC \ -XX:InitiatingHeapOccupancyPercent45 \ -XX:PrintGCDetails \ -XX:PrintGCDateStamps \ -XX:PrintGCApplicationStopp…...

linux-定制化rpm(rpmbuild)

一. 引文&#xff1a; 为实现我们的快速安装&#xff0c;特定服务需求的服务部署需求&#xff0c; 我们选择了通过source编译后定制成rpm&#xff0c;存放至自定义yum仓库&#xff0c;通过yum工具规范化管理及部署服务。目前比较常用的rpm打包方式分别为rpmbuild和fpm(在rpmbui…...

面向对象分析与设计Python版 分析与设计概述

文章目录 一、软件工程概述二、分析与设计概述 一、软件工程概述 高质量软件系统的基本要求 架构性内聚可重用性可维护性可扩展性灵活性 软件开发过程模型&#xff1a;是指根据软件开发项目从开始到结束的一系列步骤和方法&#xff0c;建模为不同的模型。常见的有&#xff1…...

npm发布流程说明

一、进入要发布的项目根目录&#xff0c;初始化为npm包 npm initname&#xff1a;最重要的字段之一&#xff0c;项目名称&#xff08;少于214个字节&#xff09;。没有name和version不能进行安装&#xff1b; version&#xff1a;最重要的字段之一&#xff0c;项目版本。没有n…...

Nginx反向代理请求头有下划线_导致丢失问题处理

后端发来消息说前端已经发了但是后端没收到请求。 发现是下划线的都没收到&#xff0c;搜索之后发现nginx默认request的header中包含’_’时&#xff0c;会自动忽略掉。 解决方法是&#xff1a;在nginx里的nginx.conf配置文件中的http部分中添加如下配置&#xff1a; unders…...