图解Spark商品关联分析

Spark2.1.0+Hadoop2.7.3搭建关联规则分析算法(一) Spark2.1.0+Hadoop2.7.3搭建关联规则分析算法(一) 整个系统架是自己做的毕业设计的一个部分,记录在这个地方,也是记录下整个过程中学到的知识。整个文章会从零开始详细搭建一个带有JavaWeb数据显示的分析平台。 首先前面说下整个系统的硬件:笔记本是8G内存,上面搭建两个虚拟机。虚拟机用CentOS先新建一个然后clone一个实体出来就可以。系统里面安装的Spa 阅读详情

场景

购物蓝分析(market basket analysis):
在一个数据集中找出项之间的关系
例如,购买手机的顾客,有10%也买手机壳

关联算法

SparkSQL粗分析

大致原理

import org.apache.spark.sql.SparkSession
import org.apache.spark.{SparkConf, SparkContext}
//创建SparkContext对象
val c0: SparkConf = new SparkConf().setAppName("a0").setMaster("local")
val sc: SparkContext = new SparkContext(c0)
//创建SparkSession对象
val c1: SparkConf = new SparkConf().setAppName("a1").setMaster("local")
val spark: SparkSession = SparkSession.builder().config(c1).getOrCreate()
//隐式转换支持
import spark.implicits._
//原始子订单表
sc.makeRDD(Seq(
  ("u1", "o1", "g1"),
  ("u1", "o1", "g2"),
  ("u2", "o2", "g1"),
  ("u1", "o3", "g1"),
  ("u1", "o3", "g2"),
  ("u1", "o3", "g3"),
  ("u3", "o4", "g3"),
  ("u4", "o5", "g1"),
  ("u5", "o6", "g4"),
)).toDF("user_id", "order_id", "good_id").createTempView("t0")
//按订单关联
spark.sql(
  """
    |SELECT COLLECT_SET(good_id)good_set FROM t0
    |GROUP BY user_id
    |HAVING SIZE(good_set) > 1
    |""".stripMargin).createTempView("t1")
spark.sql(
  """
    |SELECT good_set,count(good_set)c FROM t1
    |GROUP BY good_set
    |ORDER BY c DESC
    |""".stripMargin).show

SQL计算结果略为粗糙

共现频数

大致原理

import org.apache.spark.sql.SparkSession
import org.apache.spark.{SparkConf, SparkContext}
//创建SparkContext对象
val c0: SparkConf = new SparkConf().setAppName("a0").setMaster("local")
val sc: SparkContext = new SparkContext(c0)
//创建SparkSession对象
val c1: SparkConf = new SparkConf().setAppName("a1").setMaster("local")
val spark: SparkSession = SparkSession.builder().config(c1).getOrCreate()
//隐式转换支持
import spark.implicits._
//子订单表(模拟HIVE:SELECT order_id,good_id FROM dwd_order_detail)
sc.makeRDD(Seq(
  ("o1", "g1"),
  ("o1", "g2"),
  ("o2", "g1"),
  ("o3", "g1"),
  ("o3", "g2"),
  ("o3", "g3"),
  ("o4", "g3"),
  ("o5", "g1"),
  ("o6", "g4"),
)).toDF("order_id", "good_id").createTempView("dwd_order_detail")
//按订单关联商品
val df = spark.sql(
  """
    |SELECT COLLECT_SET(good_id) FROM dwd_order_detail
    |GROUP BY order_id
    |""".stripMargin).toDF("items") //下面模型默认输入列名叫items
df.show
/*
+------------+
|       items|
+------------+
|        [g3]|
|        [g4]|
|    [g2, g1]|
|[g2, g3, g1]|
|        [g1]|
|        [g1]|
+------------+
*/
//共现频数模型
import org.apache.spark.ml.fpm.FPGrowth
val fpGrowth = new FPGrowth().setMinSupport(0).setMinConfidence(0)
val model = fpGrowth.fit(df)
println(model)
/*
FPGrowthModel: uid=fpgrowth_352773cafc93, numTrainingRecords=6
*/
//商品共现频数
model.freqItemsets.show
/*
+------------+----+
|       items|freq|
+------------+----+
|        [g1]|   4|
|        [g2]|   2|
|    [g2, g1]|   2|
|        [g3]|   2|
|    [g3, g2]|   1|
|[g3, g2, g1]|   1|
|    [g3, g1]|   1|
|        [g4]|   1|
+------------+----+
*/
//商品关联规则
model.associationRules.show
/*
+----------+----------+----------+----+
|antecedent|consequent|confidence|lift|
+----------+----------+----------+----+
|  [g3, g1]|      [g2]|       1.0| 3.0|
|      [g2]|      [g1]|       1.0| 1.5|
|      [g2]|      [g3]|       0.5| 1.5|
|  [g2, g1]|      [g3]|       0.5| 1.5|
|  [g3, g2]|      [g1]|       1.0| 1.5|
|      [g1]|      [g2]|       0.5| 1.5|
|      [g1]|      [g3]|      0.25|0.75|
|      [g3]|      [g2]|       0.5| 1.5|
|      [g3]|      [g1]|       0.5|0.75|
+----------+----------+----------+----+
*/
//预测
model.transform(Seq(
  "g1",
  "g2",
  "g3",
  "g4",
  "g1 g2",
  "g1 g3",
  "g2 g3",
).map(_.split(" ")).toDF("items")).show
/*
+--------+----------+
|   items|prediction|
+--------+----------+
|    [g1]|  [g2, g3]|
|    [g2]|  [g1, g3]|
|    [g3]|  [g2, g1]|
|    [g4]|        []|
|[g1, g2]|      [g3]|
|[g1, g3]|      [g2]|
|[g2, g3]|      [g1]|
+--------+----------+
*/

用户总数(上面是按用户关联;如果按订单关联,那就是订单总数)
N = n u m T r a i n i n g R e c o r d s = 6 N=numTrainingRecords=6 N=numTrainingRecords=6
置信度
C o n f i d e n c e g 3 → g 1 = F r e q g 1 ∩ g 3 F r e q g 3 = 1 2 Confidence_{g3 \rightarrow g1}=\frac{Freq_{g1 \cap g3}}{Freq_{g3}}=\frac{1}{2} Confidenceg3→g1​=Freqg3​Freqg1∩g3​​=21​
C o n f i d e n c e g 1 → g 3 = F r e q g 1 ∩ g 3 F r e q g 1 = 1 4 Confidence_{g1 \rightarrow g3}=\frac{Freq_{g1 \cap g3}}{Freq_{g1}}=\frac{1}{4} Confidenceg1→g3​=Freqg1​Freqg1∩g3​​=41​
支持度
S u p p o r t g 1 ∩ g 3 = F r e q g 1 ∩ g 3 N = 1 6 Support_{g1 \cap g3}=\frac{Freq_{g1 \cap g3}}{N}=\frac{1}{6} Supportg1∩g3​=NFreqg1∩g3​​=61​
S u p p o r t g 1 = F r e q g 1 N = 4 6 Support_{g1}=\frac{Freq_{g1}}{N}=\frac{4}{6} Supportg1​=NFreqg1​​=64​
S u p p o r t g 3 = F r e q g 3 N = 2 6 Support_{g3}=\frac{Freq_{g3}}{N}=\frac{2}{6} Supportg3​=NFreqg3​​=62​
提升(通常认为:大于1有效用,小于1无效用)
L i f t g 1 , g 3 = S u p p o r t g 1 ∩ g 3 S u p p o r t g 1 × S u p p o r t g 3 = 3 4 Lift_{g1 , g3}=\frac{Support_{g1 \cap g3}}{Support_{g1} \times Support_{g3}}=\frac{3}{4} Liftg1,g3​=Supportg1​×Supportg3​Supportg1∩g3​​=43​
L i f t g 1 , g 2 = F r e q g 1 ∩ g 2 × N F r e q g 1 × F r e q g 2 = 2 × 6 4 × 2 = 3 2 Lift_{g1 , g2}=\frac{Freq_{g1 \cap g2} \times N}{Freq_{g1} \times Freq_{g2}}=\frac{2 \times 6}{4 \times 2}=\frac{3}{2} Liftg1,g2​=Freqg1​×Freqg2​Freqg1∩g2​×N​=4×22×6​=23​

词向量

词向量可以算出商品之间的相似度,但不确定是什么关系,是互补品还是替代品?

import org.apache.spark.sql.SparkSession
import org.apache.spark.{SparkConf, SparkContext}
//创建SparkContext对象
val c0: SparkConf = new SparkConf().setAppName("a0").setMaster("local")
val sc: SparkContext = new SparkContext(c0)
//创建SparkSession对象
val c1: SparkConf = new SparkConf().setAppName("a1").setMaster("local")
val spark: SparkSession = SparkSession.builder().config(c1).getOrCreate()
//隐式转换支持
import spark.implicits._
//子订单表(模拟HIVE:SELECT user_id,good_id FROM dwd_order_detail)
sc.makeRDD(Seq(
  ("u1", "g1"),("u1", "g2"),("u1", "g1"),("u1", "g2"),("u1", "g3"),
  ("u2", "g1"),("u2", "g3"),("u2", "g2"),
  ("u3", "g4"),("u3", "g5"),("u3", "g4"),
  ("u4", "g5"),("u4", "g4"),
  ("u5", "g5"),("u5", "g4"),("u5", "g4"),("u5", "g4"),("u5", "g4"),("u5", "g5"),
)).toDF("user_id", "good_id").createTempView("dwd_order_detail")
//按用户关联商品
val df = spark.sql(
  """
    |SELECT COLLECT_LIST(good_id) FROM dwd_order_detail
    |GROUP BY user_id
    |""".stripMargin).toDF("goods") //下面模型默认输入列名叫items
//词向量模型
import org.apache.spark.ml.feature.Word2Vec
val word2Vec = new Word2Vec()
  .setInputCol("goods") //输入列名称
  .setOutputCol("result") //输出列名称
  .setVectorSize(20) //词向量维度
  .setWindowSize(4) //词窗大小
  .setMinCount(0) //最低词频门槛
  .setMaxIter(20) //最大训练迭代次数
val model = word2Vec.fit(df)
//计算余弦相似度来关联商品
val goods = spark.sql(
  "SELECT DISTINCT(good_id)goods FROM dwd_order_detail ORDER BY goods"
).rdd.map(_.getString(0)).collect.iterator
for (good <- goods) {
  println(good)
  model.findSynonyms(good, 4).show(false)
}

某次打印结果

矩阵分解提取商品隐语义

// 参数
val rank = 5 //矩阵分解的秩
val topN = 3 //每个商品召回相近商品的个数
// 创建SparkSession对象
import org.apache.spark.sql.SparkSession
val spark: SparkSession = SparkSession.builder()
  .master("local").appName("a0").getOrCreate()
// 隐式转换支持
import spark.implicits._
// 创建数据
val df = Seq(
  (1, 1, 5), (1, 2, 3), (1, 3, 1), (1, 4, 5), (1, 6, 2),
  (2, 1, 5), (2, 2, 3), (2, 5, 4), (2, 6, 2), (2, 7, 1),
  (3, 2, 3), (3, 3, 1), (3, 4, 4), (3, 5, 5), (3, 7, 1),
  (4, 2, 3), (4, 4, 5), (4, 7, 1),
  (5, 1, 5), (5, 4, 4), (5, 5, 4), (5, 6, 2),
  (6, 1, 5), (6, 3, 1), (6, 6, 4), (6, 7, 4),
  (7, 1, 5), (7, 4, 1), (7, 5, 1), (7, 7, 5),
  (8, 1, 5), (8, 2, 3), (8, 5, 2), (8, 6, 5),
).toDF("user", "item", "rating")
// Alternating Least Squares (ALS) matrix factorization
import org.apache.spark.ml.recommendation.ALS
val als = new ALS().setRank(rank)
val model = als.fit(df)
// 物品特征
val itemFactors = model.itemFactors.rdd.map(a => (a.getInt(0), a.getSeq[Float](1)))
// 余弦相似度
val matrix = itemFactors.cartesian(itemFactors).filter(a => a._1._1 != a._2._1)
matrix.foreach(println)
val sparseMatrix = matrix.map({
  case ((a, b), (c, d)) =>
    val bd = b.zip(d).map(t => t._1 * t._2).sum
    val bb = math.sqrt(b.map(math.pow(_, 2)).sum)
    val dd = math.sqrt(d.map(math.pow(_, 2)).sum)
    val cosineSimilarity = bd / (bb * dd)
    (a, (c, cosineSimilarity))
}).groupByKey.mapValues(_.toArray.sortBy(-_._2).take(topN).toList)
sparseMatrix.sortByKey().foreach(println)

某次打印结果:

标签

规则说明
商品类目一级类目、二级类目、三级类目
品牌品牌、母品牌、子品牌
商品规格重量、体积、衣服尺寸
价格
价格 除以 商品规格元/kg
弹性价格弹性、需求弹性;奢侈品、必需品
使用周期5年、1年、1个月、1天
保质期3年、1年、1个月、1天、2小时
保存常温、冷藏、避光、密封、干燥
使用次数一次性、非一次性
颜色赤橙黄绿青蓝紫
地域南方、北方、沿海、内陆
…
spark-sql字段级血缘关系实现 spark-sql 表字段血缘关系可视化案例 阅读详情

相关推荐

数据科学团队角色分工与协作契约图解

数据科学不是单一技术岗位,而是由数据工程师、机器学习工程师、数据科学家、MLOps工程师和数据产品负责人等角色构成的协同系统。其核心原理在于按‘责任域’而非工具栈划分职能,依托数据流动路径、决策权归属与时间颗粒度三大硬约束实现对齐。这种分工模式显著提升模型交付稳定性、业务指标可解释性与跨职能协作效率,广泛应用于金融风控、电商推荐、医疗AI等需端到端数据价值落地的场景。本文深入解析一张被全球上百团队采用的角色协作信息图,聚焦数据工程师与机器学习工程师的强依赖关系,以及数据产品负责人在打通模型到业务闭环中的关键

congtaixiao7151的博客 325

Spark实现关联分析

1.理解关联规则 市场购物篮分析的结果是一组指定商品之间关系模式的关联规则,一个典型的规则可以表述为: {花生酱,果酱} –> {面包} 这个关联规则用通俗易懂的语言来表达就是:如果购买了花生酱和果酱,那么也很有可能会购买面包。我们分析的就是事物之间 关系,某些事物是否存在联系。 2.测试数据 a,b,c a,b,d b,a,d b,c,e b,d,e a,b,c a...

Windsearcher的博客 1189

生成式AI如何重构推荐系统:从数据管道到意图编译

推荐系统正经历从传统特征工程与规则驱动,向以自然语言为入口、语义理解为核心的新范式演进。其底层原理在于将用户模糊意图转化为可执行策略单元,通过提示词工程、动态特征服务与语义反馈闭环,显著提升策略迭代效率与长尾内容分发能力。该技术路径并非替代协同过滤或双塔模型,而是作为‘意图编译器’补足高不确定性场景,已在母婴、本地生活等强意图型业务中验证CTR提升9.8%~21.4%、开发效率提升2.2~4.0倍。本文聚焦工程落地视角,详解意图解析、动态特征工厂、混合召回与语义反馈四大模块的协同设计。

weixin_34037173的博客 441

基于Spark MLlib.FPGrowth挖掘电商物品间的关联规则

本文是个人对分析商品间关联关系的一篇总结。 不同于找相似商品,关联关系想要找到商品间有潜在购买关系,比如啤酒尿布,香烟和打火机,炒菜锅和炒勺等等。 首先从Apriori开始讲起: 关联规则简述 此处大部分是对一篇英文博客的理解,原地址找不到了… Association rules analysis is a technique to uncover how items are assoc...

我的灯还亮着的博客 1403

ML模型上线后失效?构建持续可观测性闭环的实战指南

机器学习模型部署不是终点,而是数据漂移、特征失准与服务退化的起点。从基础概念看,ML系统本质是状态敏感的数据流转化,其稳定性依赖数据契约、特征可复现性与反馈闭环;技术价值在于通过Wasserstein距离、特征SLA、分层告警等机制实现早感知、准诊断、快响应;典型应用场景覆盖金融风控、电商推荐与工业质检等高敏业务线;本文聚焦真实落地中的可观测性闭环设计,深入解析数据层校验、特征版本绑定、模型输入/输出稳定性监控等关键实践,尤其强调Wasserstein距离在分布漂移检测中的工程优化与特征生命周期管理。

weixin_34357436的博客 392

MuleSoft与LLM协同实现企业级AI工作流编排

企业AI落地的核心挑战在于如何将大语言模型(LLM)的语义理解能力,与真实业务系统(ERP/CRM/SAP等)的安全、可靠、可治理的服务能力深度结合。这本质上是服务编排(API Orchestration)与智能决策(LLM Function Calling、RAG增强推理)的技术融合问题。MuleSoft作为成熟的企业集成平台,提供协议适配、安全策略、事务一致性与全链路追踪能力;LLM则承担自然语言解析、动态服务调度与上下文感知决策。二者协同构建的AI工作流,既规避了纯LLM幻觉风险,又突破了传统集成缺乏

daxi1047的博客 473

sparkmllib关联规则算法(FPGrowth,Apriori)

关联规则算法的思想就是找频繁项集,通过频繁项集找强关联。 介绍下基本概念: 对于A->B 1、置信度:P(B|A),在A发生的事件中同时发生B的概率 p(AB)/P(A) 例如购物篮分析:牛奶 ⇒ 面包 2、支持度:P(A ∩ B),既有A又有B的概率 假如支持度:3%,置信度:40% 支持度3%:意味着3%顾客同时购买牛奶和面包 置信度

prometheus的博客 1万+

大数据领域 OLAP 的数据加载与清洗

数据加载是将数据从源系统传输到目标OLAP系统的过程,如同将分散的食材集中到中央厨房。在ETL(抽取-转换-加载)流程中,它是"E"(Extract)和"L"(Load)环节;在ELT(抽取-加载-转换)流程中,它负责将原始数据加载到目标系统,后续转换在目标系统中完成。生活类比:传统邮政系统 vs 现代物流网络传统数据加载:如同信件通过邮局层层中转,速度慢、可靠性低大数据加载:如同快递物流网络,支持批量运输、实时追踪、异常处理。

SuperAGI2025 794

Solr+Spark实时搜索排序实战:构建行为驱动的动态决策引擎

搜索排序已从静态BM25匹配演进为融合用户实时行为的动态决策过程。其核心原理在于将点击、停留、加购等隐式反馈转化为可计算、可注入、可解释的排序特征,通过查询时动态加权(query-time boosting)实现毫秒级响应闭环。该技术显著提升搜索相关性与转化率,广泛应用于电商商品检索、个性化推荐、广告素材优选等高并发、强时效场景。本文聚焦Solr与Spark协同架构,深入解析实时特征计算、原子化字段更新、edismax查询优化及bf表达式调试等关键实践,尤其突出click_rate_1h和popularit

304

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 11 算法篇

在百万级虚拟机、百万级租户的超大规模云环境中,核心算法挑战包括:挑战维度具体问题算法需求技术复杂度规模性​百万级对象并发管理分布式算法、分区算法极高(NP-hard问题)多租户​租户间隔离与资源共享公平性算法、隔离算法高(多目标优化)动态性​资源需求实时变化自适应算法、在线算法高(实时决策)异构性​硬件/负载/需求差异分类算法、匹配算法中高(多维度优化)经济性​资源利用率与成本平衡优化算法、博弈论算法高(多目标博弈)以下是按领域分类的详细算法列表:算法名称数学建模表达核心思想时间复杂度适用场景推理步骤首次适

weixin_49199313的博客 1405

2026年4月AI爆发周:阿里连推三款模型、字节全双工语音上线,国内大模型进入“落地竞速“新阶段

**摘要:**2026年4月初,国内AI大模型迎来密集发布,阿里、字节、腾讯分别推出新产品。阿里一周发布三款模型,覆盖通用推理、多模态轻量化和长文档处理,API价格大幅下降;字节推出全双工语音模型,实现实时交互,技术难度高;腾讯混元3.0强调工程化和生态整合,面向企业私有化部署。趋势显示,行业从性能竞赛转向落地竞赛,多模态成为主战场,API成本降低,开发者选择更丰富。国内大模型竞争重点转向实际应用和生态整合。

weixin_45526015的博客 1万+

一文读懂大数据数据服务的核心组件与原理

你有没有想过:当你打开电商App收到“猜你喜欢”推荐时,背后的“数据魔法”是怎么运作的?其实,这就像餐厅给你上一道热菜——需要先采购食材(数据采集)、存进后厨(数据存储)、洗净切好(数据处理)、再由服务员端上桌(数据服务)。本文将用**“餐厅运营”类比大数据数据服务**,从“后厨流程”到“前端服务”,一步步拆解数据服务的核心组件(采集、存储、处理、服务、治理),并通过代码示例、流程图和真实案例,帮你理解每个组件的作用、原理和落地技巧。

2501_92132293的博客 558

华硕ROG枪神双系统实战:Ubuntu安装避坑指南

本文是华硕ROG枪神笔记本安装Ubuntu双系统的详细避坑指南。针对其独特的硬件与BIOS设计,文章核心解决了VMD控制器导致硬盘无法识别、驱动兼容性等关键难题,并提供了从BIOS设置、分区方案到安装后驱动配置与性能调优的一站式解决方案,帮助用户实现稳定的双系统体验。

raspberrypi5的博客 546

深度解析DDIA中文翻译:掌握数据密集型应用设计的完整攻略

DDIA中文翻译项目是《设计数据密集型应用》的权威中文版本,为国内开发者提供了系统学习数据系统设计的宝贵资源。这个开源项目通过高质量的翻译,消除了语言障碍,让中文读者能够轻松掌握分布式系统、数据库设计和数据处理的核心概念,为构建可靠、高效的数据密集型应用奠定坚实基础。 ## 🔍 项目价值定位:为什么DDIA是技术人的必修课 在当今数据驱动的时代,构建可靠、高效的数据密集型应用已成为技术团队的

gitblog_00381的博客 571

头歌 JAVA 桥接模式实验

这样,通过客户端代码配置不同的 FileConvertor 子类和 DataHandler 子类(如 OracleHandler 或 SQLServerHandle),即可实现从不同数据库读取数据并转换成不同格式的功能,而无需修改已有代码。

m0_74091276的博客 3199

离线安装WSL2系统

由于办公环境在内网环境中,需将开发环境部署到内网中。环境:内网:win10。

qq_40224400的博客 3514

01-Docker入门与核心概念

要真正理解Docker,我们不能仅仅停留在"它是一个工具"的层面。任何一项技术的诞生都不是凭空而来的,它是对前人智慧的继承与发展,是对现实问题的回应。容器化技术同样如此——它有着超过四十年的技术积淀,经历了从chroot到LXC,再到Docker和Kubernetes的漫长演进。本章将带你穿越时光,梳理容器化技术的发展脉络,让你明白Docker为什么会出现在这个时代,以及它解决了前人没有解决好的哪些问题。软件交付方式的演进,本质上是人类对计算资源利用率和管理效率不断追求的过程。我们可以将这个过程分为三个主要

Na2SiO3Glue的博客 690

从原理图到PCB:手把手教你绘制DRV8301驱动板(附完整代码与避坑指南)

本文详细介绍了如何从原理图设计到PCB布局,手把手教你绘制DRV8301驱动板,特别适用于FOC(磁场定向控制)系统开发。内容涵盖元器件选型、电源树架构设计、栅极驱动电路、PCB布局技巧、焊接调试及代码配置,并附有完整代码与常见问题避坑指南,帮助工程师快速掌握DRV8301驱动板的设计与优化。

weixin_33716941的博客 397

数据科学实战:从学不会到敢上线的七道关卡

数据科学不是算法堆砌,而是连接业务问题与数据决策的工程实践。其核心原理在于将模糊需求转化为可计算、可验证、可行动的数据问题;技术价值体现在降低业务试错成本、加速决策闭环、构建可持续迭代的分析能力;典型应用场景包括用户流失预警、营销ROI优化、供应链异常定位等真实工单驱动任务。关键突破点在于跨越‘数据清洗毛细血管’和‘业务语言翻译’两大鸿沟——前者决定模型能否落地,后者决定结果能否被信任。本文聚焦真实项目中反复验证的七道硬核关卡,覆盖数据溯源、特征业务化、模型可解释性、业务指标验证、漂移监控、文档传承与动作导

weixin_33898233的博客 413

ICDAR数据集简介

ICDAR(文档分析与识别国际会议)是OCR领域的权威会议,每两年发布一次数据集,专注于‌自然场景文本检测与识别‌,涵盖多语言、复杂版式和真实环境挑战。街景、广告牌、票据、手写文档等真实场景图像。包含水平、垂直、倾斜、弯曲文本,背景干扰大,部分文本存在遮挡或模糊。提供文本位置坐标(矩形/四边形框)及内容,无法识别的文本标记为###。以上总结提炼了ICDAR的核心价值与应用方法论。给出最佳实践方法是官网数据预训练模型 + 业务数据微调(比如用PPOCRLabel标注100+张业务图)。

xinghaitao2005的博客 1118

uniapp - 最新微信小程序手机号一键登录功能效果,uniapp小程序实现手机号码一键登录,uniapp微信小程序端通过手机号授权完成立即登录操作(详细示例源码,新手小白一键复制开箱即用)

uniapp,微信小程序,uniapp小程序平台,uniApp手机号一键登录,uniapp小程序端手机号一键登录功能,实现微信小程序手机号一键登录,在uniapp中实现获取手机一键登录功能,uniapp手机号快捷登录,uniapp微信小程序授权登录并获取手机号,微信小程序手机号快速验证组件调用方式,uniapp小程序怎么用手机号一键登录,uniapp一键登录流程及代码,如何获取手机号一键登录到小程序,微信小程序获取本机手机号一键登录功能,新手详细教程,详细手机一键登录完整示例代码,uni-app微信unia

✅ 精选推荐文章 1万+

推荐系统重构:从行为预测到用户意图建模

推荐系统本质上是人机协同的决策支持工具,其核心已从传统协同过滤与矩阵分解,演进为对用户认知状态、实时意图与环境上下文的动态建模。理解‘行为不等于意图’这一基本原理,是突破点击率瓶颈、缓解兴趣窄化、提升长期留存的关键前提。技术价值体现在构建可解释、可干预、可验证的实时反馈闭环,支撑多目标协同优化与可控性设计。典型应用场景涵盖电商冷启动、知识平台深度学习引导、短视频信息流多样性调控等复杂决策环境。本文聚焦推荐引擎底层逻辑的范式迁移,深入解析意图图谱构建、毫秒级反馈机制与混合式可解释基础设施。

weixin_34378969的博客 354

【YOLOv11改进 - 特征融合】SDI:多层次特征融合模块,替换contact操作

【YOLOv11改进 - 特征融合】SDI:多层次特征融合模块,替换contact操作

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1771

数据科学如何解决销售转化率骤降等日常业务问题

数据科学本质上是将业务现象转化为可计算问题的系统性方法,其核心原理在于从结构化日志中识别流程断点、归因模糊、阈值漂移与执行偏差四类典型模式,并通过轻量规则、流程挖掘和归因路径可视化等技术手段实现快速干预。相比复杂模型,它更强调问题定位速度与归因可信度,技术价值体现在缩短业务决策链路、提升一线响应效率。典型应用场景包括销售漏斗异常诊断、客服投诉集中溯源、库存周转失衡预警及促销执行偏差识别。本文聚焦‘日常业务问题’这一高频搜索需求,结合流程漏损型、归因模糊型等真实断点类型,提供可直接复用的分析路径与交付范式。

weixin_30596165的博客 456

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spark性能优化之通过YDB实现比原生Spark性能高100倍的多表关联

多表关联Join在Spark数据分析中是一个不可或缺的一部,我们以商品交易记录表(trade表)与用户信息表为例(user表)来阐述下如何实现高性能的多表关联分析。 经常会遇到这种情形,我们需要先找出【某一个省份】【工商银行】【交易金额在150~160元】的所有用户,并通过与用户信息表进行关联得到该用户的手机号,性别,年龄,职业等信息。 Spark的传统做法是对双表都进行暴力扫描,需要对tra

qq_33160722的博客 1210

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 大数据(5m)ClickHouse极速入门
下一篇: 图解并行思想HIVE获取消费金额topN的用户ID
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值