七、用户画像

news/2024/5/1 9:57:20/文章来源:https://blog.csdn.net/qq_34696503/article/details/131888053

目录

  • 7.1 什么是用户画像
  • 7.2 标签系统
    • 7.2.1 标签分类方式
    • 7.2.2 多渠道获取标签
  • 7.3 用户画像数据特征
    • 7.3.1 常见的数据形式
    • 7.3.2 文本挖掘算法
    • 7.3.3 嵌入式表示
    • 7.3.4 相似度计算方法
  • 7.4 用户画像应用

因此只基于某个层面的数据便可以产生部分个体面像,可用于从特定角度形容群体乃至个体的大致差异。说了这么多,那这些和本章要探讨的用户面像有什么关系呢?首先要明确用户面像里的用户是谁:数据收集方(即产品提供方)往往开发出某件产品供人使用,这些使用者便是数据收集方的用户,数据收集方为了推广产品,同时持续维护和改善用户体验便需要对由用户操作而产生的数据进行挖掘,以期从中发现群体乃至个体的行为偏好,形成数据层面上的所谓面像。

7.1 什么是用户画像

在机器学习中提到的用户面像通常是基于给定的数据对用户属性以及行为进行描述,然后提取用户的个性化指标,再以此分析可能存在的群体共性,并落地应用到各种业务场景中。

7.2 标签系统

用户面像的核心其实就是给用户 “打标签”,即标签化用户的行为特征,企业通过用户面像中的标签来分析用户的社会属性、生活习惯、消费行为等信息,然后进行商业应用。

构建一个标签系统成为企业赋能更多业务的关键,标签系统也是本节要详细介绍的内容,具体从三个方面来展开,分别是标签分类方式、多渠道获取标签和标签体系框架。

7.2.1 标签分类方式

如下图所示,通过分析一个用户的特征来展示标签分类方式。

7.2.2 多渠道获取标签

根据标签获取方式可以把标签分为事实类标签、规则类标签和模型类标签三种。标签获取方式也可以看作特征获取方式,借助这三种方式从原始数据中提取能够表现用户特点、商品特点或者数据特点的特征。

  • 事实类标签
    事实类标签最容易获取,直接来源于原始数据,比如性别、年龄、会员等级等字段。当然也可以对原始数据进行简单的统计后提取事实标签,比如用户行为次数、消费总额。

  • 规则类标签
    规则类标签使用广泛,是由运营人员和数据人员经过共同协商而设定的多个规则生成的标签,其特点是直接有效灵活、计算复杂度低和可解释度高,主要用作较为直观和清晰的用户相关标签,例如地域所属、家庭类型、年龄层等。使用到的技术知识主要是数理统计类知识,例如基础统计、数值分层、概率分布、均值分析、方差分析等。

    如下图所示,主要对单一或者多种指标进行逻辑运算、函数运算等运算生成最终的规则类标签,这里分为用户行为、用户偏好和用户价值三部分,感兴趣的话,可对用户进行更深层次的刻面。

  • 模型类标签
    模型类标签是经过机器学习和深度学习等模型处理后,二次加工生成的洞察性标签。比如预测用户状态、预测用户信用分、划分兴趣人群和对评论文本进行分类等,经过这些处理得到的结果就是模型类标签。其特点是综合程度高、复杂程度高,绝大部分标签需要先有针对性地构建相应的挖掘指标体系,然后依托经典数学算法或模型进行多指标间的综合计算方能得到模型类标签,常常需要多种算法一起组合来建模。

    如下图所示,基于模型类标签可以使用 RFM 模型来衡量用户价值和用户创利能力、对用户行为信息建模预测用户生命周期变化情况、通过模型预测用户信用评分、使用图嵌入或用户分层模型划分兴趣人群。除此之外还有很多通过模型来得到标签的方法。

对标签的分类和获取有了初步了解后,我们可以将其串联起来形成基本的标签体系框架,包括从底层数据的提取到业务应用赋能。

如下图所示,可以看出整个标签体系框架分为四个部分:数据源、标签管理、标签层级分类和标签服务赋能。

7.3 用户画像数据特征

无论是构建用户面像还是进行算法竞赛,数据都是产生效益的核心。一般而言,用户面像的数据来源为用户数据、商品数据和渠道数据,比如从电商网站和微信平台可以获取用户的交易数据、行为数据等,从平台用户系统可以获取用户属性数据。

这些数据的存在形式多样,通过对数据形式的理解可以进行统计、编码和降维等处理来提取有效特征,然后用这些特征构造我们需要的标签。本节我们将介绍常见的数据形式以及用户面像相关竞赛的一些特征提取方法。

7.3.1 常见的数据形式

在各式各样的竞赛当中,数据的形态和格式是多种多样的,本节以用户画像为例将数据的有关字段大致分为数值型变量、类别型变量、多值型变量以及文本型变量四种常见的数据形式,每种变量都有对应的处理方式。需要强调的是这些变量都是针对用户层面的,即所有样本数据以用户为唯一主键进行区分,且每个用户只有一条记录,之所以这样举例是因为通常基于用户面像的机器学习模型所需的数据是以用户池的形式呈现的,对用户的标签进行对应的特征学习。

实际竞赛中给的数据可能十分复杂,甚至是以打点记录的方式描述用户的行为,这时候往往还需要参赛者构建提取用户特征,这涉及更深的应用技巧。

  • 数值型变量
    最常见的一种数值型变量是连续型变量,指的是具有数值大小含义的变量,比如下图所示的年龄、身高、体重等,其他如消费金额、流量累计等。
  • 类别型变量
    类别型变量是指具有类别标识的变量,比如性别、 籍贯、所在城市等,这类变量记录了用户的固有属性,如下图所示。
  • 多值型变量
    多值型变量是指用户在某个维度具有多个取值的变量,比如兴趣爱好、穿衣风格、看过的电影等,这类变量由于其特殊结构无法直接应用到模型中,需要借助特别的数据结构如稀疏矩阵进行处理,如下图所示。
  • 文本型变量
    文本型变量(如下图所示)是指利用文本记录的变量,比如用户对某件商品或者某次购物的评论等。处理这类变量需要用到自然语言处理的一些工具,比如中文分词工具 jieba 等。

7.3.2 文本挖掘算法

对于基础的原始数据,比如经常出现的用户标签集合、购物评价等,除了常见的统计特征外,还能够基于文本挖掘算法进行特征提取,同时对原始数据进行预处理和清洗,以达到匹配和标识用户数据的效果。本节将会对常见的文本挖掘算法 LSA、PLSA 和 LDA 进行介绍,这三种均为无监督学习方法。

  • LSA
    LSA(潜在语义分析) 是一种非概率主题模型,与词向量有关,主要用于文档的话题分析,其核心思想是通过矩阵分解的方式来发现文档与词之间基于话题的语义关系。具体地,将文档集表示为词-文档矩阵,对词-文档矩阵进行 SVD(奇异值分解),从而得到话题向量空间以及文档在话题向量空问的表示。

    LSA 的具体使用也非常简单,我们以 2020 腾讯广告算法大赛中的数据为例,首先构造用户点击的广告素材 ID 序列 (creative_id),然后进行 TF-IDF 计算,最后经过 SVD 得到结果,实现代码如下:

    from sklearn.feature_extraction.text import TfidfVectorizer
    from sklearn.decomposition import TruncatedSVD
    from sklearn.pipeline import Pipeline
    # 提取⽤户点击序列
    docs=data_df.groupby(['user_id'])['creative_id'].agg(lambda x:" ".join(x)).reset_index()['creative_id']
    # tfidf + svd
    tfidf = TfidfVectorizer()
    svd = TruncatedSVD(n_components=100)
    svd_transformer = Pipeline([('tfidf', tfidf), ('svd', svd)])
    lsa_matrix = svd_transformer.fit_transform(documents)
    
  • PLSA
    PLSA(概率潜在语义分析)模型其实是为了克服 LSA 模型潜在存在的一些缺点而提出的。PLSA 模型通过一个生成模型来为 LSA 赋予概率意义上的解释。该模型假设每一篇文档都包含一系列可能的潜在话题,文档中的每一个单词都不是凭空产生的,而是在潜在话题的指引下通过一定的概率生成的。

  • LDA
    LDA(潜在狄利克雷分布)是一种概率主题模型,与词向量无关,可以将文档集中每篇文档的主题以概率分布的形式给出。通过分析一批文档集,抽取出它们的主题分布,就可以根据主题分布进行主题聚类或文本分类。同时,它是一种典型的词袋模型,即一篇文档由一组相互独立的词构成,词与词之间没有先后顺序关系。

7.3.3 嵌入式表示

毫不夸张地说,任何可以形成网络结构的东西,都可以有嵌入表示(Embedding),并且嵌入表示可以将高维稀疏特征向量转换成低维稠密特征向量来表示。嵌入表示这个概念最初在 NLP 领域被广泛应用,现在已经扩展到了其他应用,比如电商平台。电商平台将用户的行为序列视作由一系列单词组成的句子,比如用户点击序列和购买商品序列,经过训练后得到关于商品的嵌入向量。这里主要介绍经典的 Word2Vec 以及网络表示学习中的 DeepWalk 方法。

  • 词嵌入 Word2Vec
    Word2Vec 在竞赛中被经常使用,能够带来意想不到的效果,掌握其原理非常关键。Word2Vec 根据上下文之间的关系去训练词向量,有两种训练模式,分别为 Skip-Gram(跳字模型)和 CBOW(连续词袋模型),两者的主要区别为在于输入层和输出层的不同。简单来说,Skip-Gram 是用一个词语作为输入,来预测它的上下文;CBOW 是用一个词语的上下文作为输入,来预测这个词语本身。

    如下图所示,Word2Vec 实质上是只有一个隐藏层的全连接神经网络,用来预测与给定单词关联度大的单词。模型词汇表的大小是,每个隐藏层的维度是 N N N,相邻神经元之问的连接方式是全连接。下图中的输入层是把一个词被转化成的独热向量,即给定一个单词,然后把此单词转化为 { x 1 , x 2 , x 3 , ⋯ , x V } \{ x_1,x_2,x_3, \cdots, x_V \} {x1,x2,x3,,xV} 序列,这个序列中只有一个值为 1 1 1,其他均为 0 0 0;通过输入层和隐藏层之问的权重矩阵 W V × N W_{V \times N} WV×N,将序列在隐藏层进行简单的映射;隐藏层和输出层之问存在一个权重矩阵 W N × V ′ W'_{N \times V} WN×V,通过计算得出词汇表中每个单词的得分,最后使用 softmax 激活函数输出每个单词的概率结果。

    如下图所示,Skip-Gram 根据当前单词预测给定的序列或上下文。假设输入的目标单词为 x k x_k xk,定义的上下文窗口大小为 c c c,对应的上下文为 { y 1 , y 2 , ⋯ , y c } \{ y_1, y_2, \cdots, y_c \} {y1,y2,,yc},这些 y y y 是相互独立的。

    如下图所示,为 CBOW 的模型结构,定义上下文窗口大小为 c c c,上下文单词为 { x 1 , x 2 , ⋯ , x c } \{ x_1, x_2, \cdots, x_c \} {x1,x2,,xc},通过上下文单词来对当前的单词进行预测,对应的目标单词为 y y y

    Word2vec 使用起来非常方便,直接调用 gensim 包即可,需要注意的是几个具体参数,比如窗口大小、模型类型选择、生成词向量长度等等。

    对于 Skip-Gram 和 CBOW 的选择,大致可以基于以下三点:CBOW 在训练时要比 Skip-Gram 快很多,因为 CBOW 是基于上下文来预测这个单词本身,只需把窗口内的其他单词相加作为输入进行预测即可,不管窗口多大,都只需要一次计算;相较于 Skip-Gram,CBOW 可以更好地表示常见单词;Skip-Gram 在少量的训练集中也可以表示稀有单词或者短语。

  • 图嵌入 DeepWalk
    在很多场景下,数据对象除了存在序列关系,还存在图或者网络的结构关系,而 Word2vec 仅能提取序列关系下的嵌入表示,不能跨越原本的序列关系获取图相关的信息。为了能从 “一维” 关系跨越到 “二维” 关系,图嵌入 (Graph Embedding) 成为了新的的研究方向,其中最具影响的是 DeepWalk。

    如下图所示,DeepWalk 算法主要包括三个部分,首先生成图网络,比如通过用户点击序列或购买商品序列来构造商品图网络,就是把序列中前后有关联的商品用线连接起来并作为图的边,商品则作为点,这样某个商品点就可以关联大量的领域商品;然后基于图网络进行随机游走 (random walk)获取网络中节点与节点的共现关系,根据游走长度生成商品序列;最后把产生的序列当作句子输入到 Skip-Gram 进行词向量的训练,得到商品的图嵌入表示。

    为了方便理解,下面给出 DeepWalk 的代码描述:

    def deepwalk_walk(walk_length, start_node):walk = [start_node]while len(walk) <= walk_length:cur = walk[-1]try:cur_nbrs = item_dict[cur]walk.append(random.choice(cur_nbrs))except:breakreturn walkdef simulate_walks(nodes, num_walks, walk_length):walks = []for i in range(num_walks):random.shuffle(nodes)for v in nodes:walks.append(deepwalk_walk(walk_length=walk_length, start_node=v))return walksif __name__ == "__main__":
    # 第⼀步:⽣成图⽹络(省略)
    # 构建item_dict 保存图中的节点关系,即字典结构存储,key 为节点,value 为领域
    # 第⼆步:通过DeepWalk ⽣成商品序列
    nodes = [k for k in item_dict] # 节点集合
    num_walks = 5 # 随机游⾛轮数
    walk_length = 20 # 随机游⾛⻓度
    sentences = simulate_walks(nodes, num_walks, walk_length) # 序列集合
    # 第三步:通过Word2Vec 训练商品词向量
    model = Word2Vec(sentences, size=64, window=5, min_count=3, seed=2020)
    

对于 Word2Vec 的衍生 ltem2Vec 以及更多图嵌入方法,比如
LINE、Node2Vec 和 SDNE 都是很值得研究的。从传统的
Word2vec 到推荐系统中的嵌入表示,再到如今逐渐向图嵌入过渡,这些嵌入方式的应用都非常广泛。

7.3.4 相似度计算方法

基于相似度计算的特征提取有欧式距离、余弦相似度、Jaccard 相似度等,有助于提取用户、商品和文本的相似度。当已经获取了 用户和商品的嵌入表示、文本的分词表示及各类稀疏表示后,可以对些向量表示进行相似度的计算。基于相似度计算在用户分层聚类、个性化推荐或广告投放等应用中一直被广泛使用。

  • 欧氏距离
    欧式距离是最易于理解的一种距离计算方式,是二维、三维或多维空间中两点之问的距离公式。在 n n n 维空问中,对于向量 A = [ a 1 , a 2 , ⋯ , a n ] , B = [ b 1 , b 2 , ⋯ , b n ] A = [a_1, a_2, \cdots, a_n], \ B = [b_1, b_2, \cdots, b_n] A=[a1,a2,,an], B=[b1,b2,,bn],其公式如下: d ( A , B ) = ∑ i = 1 n ( a i , b i ) 2 d(A, B) = \sqrt{\sum_{i=1}^n (a_i, b_i)^2} d(A,B)=i=1n(ai,bi)2 欧氏距离的代码如下:

    def EuclideanDistance(dataA, dataB):# np.linalg.norm ⽤于范数计算,默认是⼆范数,相当于平⽅和开根号return 1.0 / ( 1.0 + np.linalg.norm(dataA - dataB))
    
  • 余弦相似度
    首先,样本数据的夹角余弦并不是真正几何意义上的夹角余弦,实际上前者只不过是借用后者的名字,变成了代数意义上的 “夹角余弦”,用于衡量样本向量之间的差异。夹角越小,余弦值越接近于 1 1 1,反之则趋近于 − 1 -1 1。上面的向量 A 和向量 B 之间的夹角余弦公式如下: c o s θ = ∑ i = 1 n ( a i × b i ) ∑ i = 1 n a i 2 × ∑ i = 1 n b i 2 cos \theta = \frac{\sum_{i=1}^n (a_i \times b_i)}{\sqrt{\sum_{i=1}^n a_i^2} \times \sqrt{\sum_{i=1}^n b_i^2}} cosθ=i=1nai2 ×i=1nbi2 i=1n(ai×bi)余弦相似度的代码实现如下:

    def Cosine(dataA, dataB):sumData = np.dot(dataA, dataB)denom = np.linalg.norm(dataA) * np.linalg.norm(dataB)# 归⼀化到[0,1] 区间return ( 1 - sumData / denom ) / 2
    
  • Jaccard 相似度
    Jaccard 相似度一般用于度量两个集合之间的差昇大小,其思想为两个集合共有的元素越多,二者就越相似。为了控制其取值范国,我们可以增加一个分母,也就是两个集合拥有的所有元素。集合 C、集合 D 的 Jaccard 相似度公式如下: J ( C , D ) = ∣ C ∩ D ∣ ∣ C ∪ D ∣ = ∣ C ∩ D ∣ ∣ C ∣ + ∣ D ∣ − ∣ C ∩ D ∣ J(C, \ D) = \frac{|C \cap D|}{|C \cup D|} = \frac{|C \cap D|}{|C| + |D| - |C \cap D|} J(C, D)=CDCD=C+DCDCDJaccard 相似度的代码实现如下:

    def Jaccard(dataA, dataB):A_len, B_len = len(dataA), len(dataB)C = [i for i in dataA if i in dataB]C_len = len(C)return C_len / ( A_len + B_len - C_len)
    

更多相似度计算方法有皮尔逊相关系数 (Pearson correlationcoefficient)、修正余弦相似度 (Adjusted Cosine Similarity)、汉明距离 (Hamming distance)、曼哈顿距离(Manhattan distance)、莱文斯坦距离 (Levenshtein distance)等。

7.4 用户画像应用

  • 用户分析
  • 精准营销
  • 风控领域

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

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

相关文章

软件测试/测试开发丨Selenium环境安装与使用

Selenium 官方网站&#xff1a; www.selenium.dev/ 简介&#xff1a; 用于web浏览器测试的工具&#xff1b;支持的浏览器包括IE&#xff0c;Firefox&#xff0c;Safari&#xff0c;Chrome&#xff0c;Edge等&#xff1b;使用简单&#xff0c;可使用Java&#xff0c;Python等…

派森编程软件python好学吗,派森语言python干什么的

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;派森编程软件python有什么用&#xff0c;派森编程软件python好学吗&#xff0c;现在让我们一起来看看吧&#xff01; 1、python真的值得学吗&#xff1f; 不建议学python的原因&#xff1a; 1、语言性能差 对于C老手…

【Python】logging模块笔记

目录 日志级别 四个组件 记录器 处理器 处理器 格式化器 格式 用法1&#xff1a;小项目可以采用编程的方法 用法2&#xff1a;建议采用配置文件的方式 用法3&#xff1a; 字典配置 日志级别 #默认的日志输出为warning # 使用baseConfig() 来指定日志输出级别 # 同时&#x…

尚医通9:医院列表功能+GateWay网关

内容介绍 1、医院列表功能&#xff08;接口&#xff09; 4、医院列表功能&#xff08;前端&#xff09; 5、更新医院上线状态功能 6、医院详情 7、GateWay网关 8、医院排班管理需求分析 9、查看医院所有科室接口、前端 医院列表功能&#xff08;接口&#xff09; 接口…

空中出租车运营公司【Flewber Global】申请纳斯达克IPO上市

猛兽财经获悉&#xff0c;总部位于美国纽约的空中出租车运营公司Flewber Global Inc&#xff0c;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为&#xff08;FLYF&#xff09;,Flewber Global计划通…

英伟达 H100 vs. 苹果M2,大模型训练,哪款性价比更高?

M1芯片 | Uitra | AMD | A100 M2芯片 | ARM | A800 | H100 关键词&#xff1a;M2芯片&#xff1b;Ultra&#xff1b;M1芯片&#xff1b;UltraFusion&#xff1b;ULTRAMAN&#xff1b;RTX4090、A800;A100&#xff1b;H100&#xff1b;LLAMA、LM、AIGC、CHATGLM、LLVM、LLM、LLM…

基于深度强化学习的DQN模型实现自动玩俄罗斯方块游戏(附详细代码讲解)

一、DQN&#xff08;Deep Q-Network&#xff09;方法概述 DQN&#xff08;Deep Q-Network&#xff09;是一种强化学习方法&#xff0c;通过结合Q-learning算法和深度神经网络来解决强化学习问题。它是深度强化学习的里程碑之一&#xff0c;由DeepMind在2013年提出&#xff0c;被…

AI绘画StableDiffusion实操教程:可爱头像奶茶小女孩(附高清图片)

本教程收集于&#xff1a;AIGC从入门到精通教程汇总 今天继续分享AI绘画实操教程&#xff0c;如何用lora包生成超可爱头像奶茶小女孩 放大高清图已放到教程包内&#xff0c;需要的可以自取。 欢迎来到我们这篇特别的文章——《AI绘画StableDiffusion实操教程&#xff1a;可爱…

FPGA2-采集OV5640乒乓缓存后经USB3.0发送到上位机显示

1.场景 基于特权A7系列开发板&#xff0c;采用OV5640摄像头实时采集图像数据&#xff0c;并将其经过USB3.0传输到上位机显示。这是验证数据流能力的很好的项目。其中&#xff0c;用到的软件版本&#xff0c;如下表所示&#xff0c;基本的硬件情况如下。该项目对应FPGA工程源码…

VMware虚拟机中配置静态IP

目录 环境原因基础概念VMnet网络IPV4网络私有地址范围Vmnet8的作用网路通信的过程解决方法1&#xff1a;修改k8s组件重新启动解决方法2&#xff1a;配置静态IP系统网卡设置设置虚拟机网关修改虚拟机网卡 环境 本机系统&#xff1a;windows11虚拟机系统&#xff1a;CentOS-7-x8…

iOS - Apple开发者账户添加新测试设备

获取UUID 首先将设备连接XCode&#xff0c;打开Window -> Devices and Simulators&#xff0c;通过下方位置查看 之后登录(苹果开发者网站)[https://developer.apple.com/account/] &#xff0c;点击设备 点击加号添加新设备 填写信息之后点击Continue&#xff0c;并一路继续…

【EI/SCOPUS会议征稿】第四届机器学习与计算机应用国际学术会议(ICMLCA 2023)

ICMLCA 2023 第四届机器学习与计算机应用国际学术会议 2023 4th International Conference on Machine Learning and Computer Application 第四届机器学习与计算机应用国际学术会议(ICMLCA 2023)定于2023年10月27-29日在中国杭州隆重举行。本届会议将主要关注机器学习和计算…

iOS开发-CAShapeLayer与UIBezierPath实现微信首页的下拉菜单效果

iOS开发-CAShapeLayer与UIBezierPath实现微信首页的下拉菜单效果 之前开发中遇到需要使用实现微信首页的下拉菜单效果。用到了CAShapeLayer与UIBezierPath绘制菜单外框。 一、效果图 二、CAShapeLayer与UIBezierPath 2.1、CAShapeLayer是什么&#xff1f; CAShapeLayer继承自…

《Elasticsearch 源码解析与优化实战》第5章:选主流程

《Elasticsearch 源码解析与优化实战》第5章&#xff1a;选主流程 - 墨天轮 一、简介 Discovery 模块负责发现集群中的节点&#xff0c;以及选择主节点。ES 支持多种不同 Discovery 类型选择&#xff0c;内置的实现称为Zen Discovery ,其他的包括公有云平台亚马逊的EC2、谷歌…

shell中按照特定字符分割字符串,并且在切分后的每段内容后加上特定字符(串),然后再用特定字符拼接起来

文件中的内容&#xff0c;可以这么写&#xff1a; awk -F, -v OFS, {for(i1;i<‌NF;i){$i$i"_suffix"}}1 input.txt-F,&#xff1a;设置输入字段分隔符为逗号&#xff08;,&#xff09;&#xff0c;这将使awk按照逗号分割输入文本。-v OFS‘,’&#xff1a;设置输…

Banana Pi BPI-CM4 评测(计算模块 4),更快性能,旨在替换树莓派CM4

如果您正在寻找可靠的单板计算机来提升您的下一个项目&#xff0c;但无法找到满足您需求的 Raspberry Pi&#xff0c;请看看我是否可以提供帮助。在这篇详细的评论中&#xff0c;我将向您介绍 Banana Pi CM4&#xff0c;这是一款适用于各种任务的多功能且强大的解决方案。从经验…

GitLab开启双端认证并登录GitLab

GitLab开启双端认证并登录GitLab 1.介绍双端认证 单重认证——密码验证&#xff0c;这极其容易出现密码被盗&#xff0c;密码泄露等危险事件。 于是为了提高安全性&#xff0c;就出现了双因素认证&#xff0c;多因素认证。登录的时候不仅要输入账号和密码还需要输入一个验证码…

使用mediapipe训练手指数字识别

mediapipe手指数字识别 本文是从0开始创建一个识别手势的机器学习模型&#xff0c;为了识别手势&#xff0c;采用mediapipe模型&#xff0c;这个模型会返回手指的位置&#xff0c;之后再通过训练一个模型将这些位置分类得到手势 一、导入依赖 import cv2 import numpy as np…

MD-MTSP:成长优化算法GO求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、成长优化算法GO 成长优化算法&#xff08;Growth Optimizer&#xff0c;GO&#xff09;由Qingke Zhang等人于2023年提出&#xff0c;该算法的设计灵感来源于个人在成长过程中的学习和反思机制。学习是个人通过从外部世界获取知识而成长的过程&#xff0c;反思是检查个体自…

excel绘制折线图或者散点图

一、背景 假如现在通过代码处理了一批数据&#xff0c;想看数据的波动情况&#xff0c;是不是还需要写个pyhon代码&#xff0c;读取文件&#xff0c;绘制曲线&#xff0c;看起来也简单&#xff0c;但是还有更简单的方法&#xff0c;就是直接生成csv文件&#xff0c;csv文件就是…