- 博客(48)
- 收藏
- 关注
原创 电商双11美妆数据分析
平均每单价格低的店铺的总销量、销售额都高于均价更高的。价格便宜是消费者考虑的最多的一个点。销量最高的相宜本草的均价就很低,同时它的销售额也是最高额的。而均价较高的类中,只有雅诗兰黛的销售额相对客观。对于一些中高端商品,可以考虑适当降价来吸引更多消费者。而一些低端商品可以考虑多推广来提高知名度获取销量。所有大类中,护肤品类的销量最高,其次是化妆品类。所有小类中,清洁类、补水类分别是销量的前二名。男士专用的商品中,护肤品销量最高,而化妆品类中主要是唇膏。并且妮维雅占据了男士专用的大部分市场。
2025-05-07 17:48:05
978
原创 电商双11美妆数据分析
通过加入平均每单单价之后,观察销售额较高的几个品牌相宜本草,欧莱雅,佰草集,悦诗风吟,雅诗兰黛。事实上,D类中,也就是高端商品中,雅诗兰黛占据了主要份额,一方面可能由于品牌效应,就个人主观的分析,雅诗兰黛为人熟知,在推广营销方面做的很好,所以销量尚可。count数据量,mean均值,std标准差,min最小值,max最大值,50%中位数,25%是把min看作最小值,把50%的这个中位数看作最大值,然后是它们俩之间的一个中位数(类似于server 当中提到的上四分位数),75%(同理类似于下四分位数)。
2025-05-06 14:09:01
1043
原创 数据科学与计算
Seaborn 是一个建立在 Matplotlib 基础之上的 Python 数据可视化库,专注于绘制各种统计图形,以便更轻松地呈现和理解数据。Seaborn 的设计目标是简化统计数据可视化的过程,提供高级接口和美观的默认主题,使得用户能够通过少量的代码实现复杂的图形。Seaborn的安装与导入Seaborn的安装:(清华源:https://pypi.tuna.tsinghua.edu.cn/simple)Seaborn的导入: import seaborn as sns。
2025-04-30 16:39:20
1228
原创 大数据应用开发和项目实战
imread() 方法返回一个 numpy.ndarray 对象,其形状是 (nrows, ncols, nchannels),表示读取的图像的行数、列数和通道数。其格式为matplotlib.pyplot.hist(x, bins=None, color=None, label=None, **kwargs)。imsave() 可以将生成的图像保存到指定的目录中。imshow() 创建了一个 4x4 的二维 numpy 数组,并对其进行了三种不同的 imshow 图像展示。
2025-04-29 14:56:10
750
原创 大数据应用开发和项目实战
Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。Matplotlib 可以用来绘制各种静态,动态,交互式的图表。比如说散点图、柱状图等等。
2025-04-28 19:15:44
1249
原创 Spark-Streaming核心编程
window operations 用于设置窗口大小和滑动窗口的间隔,动志获取流数据的状态。常见输出方式:打印在控制台上,保存为文本文件,序列化为Java对象,结合RDD进行输出。有状态转换操作可以跨批次处理数据,允许将不同批次的数据放在一起进行处理。无状态转换操作仅处理当前时间跨度内的数据,不涉及跨批次的数据处理。适用于需要对所有输入数据进行累加或其他状态维护的场景。定义状态更新函数:根据新的事件更新每一个键对应的状态。定义状态:状态可以是任意数据类型。窗口时长:规定每次计算的时间范围。
2025-04-27 18:59:16
638
原创 Spark学习全总结
RDD(弹性分布式数据集):Spark 的核心数据结构,是一个容错、并行的数据集合,可以进行各种转换(如 map、filter、join 等)和动作操作(如 collect、count、save 等)。通用性强:提供了多种高层组件,包括用于批处理的Spark SQL、用于流计算的Spark Streaming、用于机器学习的MLlib和用于图计算的GraphX等,能满足不同类型的大数据处理需求。易用性高:支持多种编程语言,如Scala、Java、Python和R等,提供了丰富的API,方便用户进行开发。
2025-04-27 18:44:11
732
原创 KafkaSpark-Streaming
计算过程就是对当前批次的两个流中各自的 RDD 进行 join,与两个 RDD 的 join 效果相同。需要记住的是,尽管这些函数看起来像作用在整个流上一样,但事实上每个 DStream 在内部是由许多 RDD(批次)组成,且无状态转化操作是分别应用到每个 RDD 上的。无状态转化操作就是把简单的 RDD 转化操作应用到每个批次上,也就是转化 DStream 中的每一个 RDD。对于某些不太重要的数据,对数据的可靠性要求不是很高,能够容忍数据的少量丢失,当消费者的个数发生变化的时候就会触发分区分配策略。
2025-04-25 16:12:06
559
原创 Spark-Streaming核心编程
分区数量,副本数量,都是必须的。数据的形式:主题名称-分区编号。在Kafka的数据目录下查看设定副本数量,不能大于broker的数量。
2025-04-24 17:36:29
1117
原创 KafkaSpark
Kafka依赖于Zookeeper的选举机制,所以安装Kafka之前还要保证Zookeeper已经被安装好了。Kafka是Java和Scala语言开发的。卡夫卡是一个分布式、分布订阅的消息系统,作为消息中间件使用。发布订阅模式:一对多的消费方式,消息可以被多个消费者使用。设计上是一个分布式的、分区的和可复制的提交日志服务。持久性和可靠性:消息持久化到本地破盘,支持数据备份。点对点模式:一对一的消费方式,消费者主动拉取消息。消息持久化到磁盘,支持批量消费。高吞吐量,支持发布和订阅模式。分布式系统,易于扩展。
2025-04-23 19:50:03
663
原创 Spark-Streaming
Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitter等,以及和简单的 TCP 套接字等等。易整合:Spark Streaming可以在Spark上运行,并且还允许重复使用相同的代码进行批处理。spark–sql项目代码,找出所有有效数据,要求电话号码为11位,但只要几列中没有空值就算作有效数据。容错:Spark Streaming在没有额外代码和配置的情况下,可以恢复丢失的数据。3.启动netcat发送数据。
2025-04-22 18:47:31
480
原创 spark–sql项目
读取JSON数据:使用Spark提供的读取接口(如 spark.read.json() ,在不同编程语言接口下使用方式类似)将给定的JSON格式数据读入Spark中,形成 DataFrame。排序与筛选:根据统计出的用户数量,使用排序函数(如 orderBy ,并按降序排列)对地址进行排序,最后使用 limit 函数选取用户数量最多的前二十个地址。筛选有效数据:依据有效数据的定义( uid 、 phone 、 addr 三个字段均无空值 ),使用过滤条件筛选出满足条件的数据行。
2025-04-21 19:22:57
416
原创 Spark-SQL3
2.在开发工具中创建数据库默认是在本地仓库,通过参数修改数据库仓库的地址: config("spark.sql.warehouse.dir", "hdfs://node01:9000/user/hive/warehouse")路径参数:可以传入加载数据的路径。加载数据:使用spark.read.format("jdbc")方法加载MySQL数据。写入数据:使用df.write.format("jdbc")方法将数据写入MySQL。加载数据:使用不同的方法加载数据(如选项参数、路径参数、MySQL语句)。
2025-04-16 19:14:51
1247
原创 Spark-SQL2
强类型的 Dataset 和弱类型的 DataFrame 都提供了相关的聚合函数, 如 count(),countDistinct(),avg(),max(),min()。除此之外,用户可以设定自己的自定义聚合函数。Spark3.0之前我们使用的是UserDefinedAggregateFunction作为自定义聚合函数,从 Spark3.0 版本后可以统一采用强类型聚合函数 Aggregator。举例方案:计算平均工资实现方式一:RDD实现方式二:弱类型UDAF实现方式三:强类型UDAF。
2025-04-15 12:15:51
571
原创 Spark-SQL
在 IDEA 中开发程序时,如果需要 RDD 与 DF 或者 DS 之间互相操作,那么需要引入 import spark.implicits._ 这里的 spark 不是 Scala 中的包名,而是创建的 sparkSession 对象的变量名称,所以必 须先创建 SparkSession 对象再导入。不同是的他们的执行效率和执行方式。与 RDD 和 Dataset 不同,DataFrame 每一行的类型固定为Row,每一列的值没法直接访问,只有通过解析才能获取各个字段的值。
2025-04-14 19:43:27
1901
原创 Spark-Core编程2
在 Driver 程序中定义的变量,在Executor 端的每个 Task 都会得到这个变量的一份新的副本,每个 task 更新这些副本的值后,传回 Driver 端进行 merge。aggregate:分区的数据通过初始值和分区内的数据进行聚合,然后再和初始值进行分区间的数据聚合。join:返回两个 RDD 中相同键对应的所有元素,结果以键开头,值为嵌套形式。collect:在驱动程序中,以数组 Array 的形式返回数据集的所有元素。take:返回一个由 RDD 的前 n 个元素组成的数组。
2025-04-11 11:34:01
410
原创 Spark-Core编程
reduceByKey 和 groupByKey 都存在 shuffle 的操作,但是 reduceByKey可以在 shuffle 前对分区内相同 key 的数据进行预聚合(combine)功能,这样会减少落盘的数据量,而 groupByKey 只是进行分组,不存在数据量减少的问题,reduceByKey 性能比较高。使用 map 操作。zip算子:将两个RDD的数据按位置配对,组成键值对形式,其中,键值对中的 Key 为第 1 个 RDD中的元素,Value 为第 2 个 RDD 中的相同位置的元素。
2025-04-10 13:44:11
994
原创 Spark RDD相关概念
2 任务执行流程启动YARN集群环境,Spark通过申请资源创建调度节点和计算节点,根据需求将计算逻辑划分成不同任务,调度节点将任务发送给对应的计算节点进行计算。Executor:在集群中的工作节点上运行,负麦执行Spark应用的任务,任务彼此之间相互独立并将结果返回给driver,它还管理RDD的内存或存储。RDD(弹性分布式数据集)是Spark中最基本的数据处理模型,是弹性的,不可变的、可分区,里面的元素可并行计算的集合。不可变:RDD封装了计算逻辑,不可改变,只能产生新的RDD来保存修改后的数据。
2025-04-09 19:13:58
1028
原创 Spark安装教程Windows版
或者是打开E:\spark\spark-3.0.0-bin-hadoop3.2\文件路径下 bin 目录中的 spark-shell.cmd 文件。然后在系统变量中添加SPARK-HOME(切记弄完这两步要点击确定)1.将spark文件解压缩到无中文无空格的路径中。首先在用户变量的path中添加spark内容。打开cmd窗口输出spark-shell。3,检验是否安装成功。
2025-04-08 10:28:18
832
原创 Scala基础知识8
Reduce 简化(归约) :通过指定的逻辑将集合中的数据进行聚合,从而减少数据,最终获取结果。需求:单词计数:将集合中出现的相同的单词,进行计数,取计数排名前三的结果。包括过滤、转换或映射、扁平化、扁平化加映射、分组、简化(归约),折叠。过滤:遍历一个集合并从中获取满足指定条件的元素组成一个新的集合。转换或映射:将原始集合中的元素映射到某个函数中。归约和折叠:通过指定逻辑聚合数据,减小数据量。扁平化加映射:先进行映射操作,再进行扁平化。扁平化:取消嵌套格式,将所有元素放在起。
2025-04-08 10:14:58
526
原创 Scala基础知识7
注意:元组中最大只能有 22 个元素。扁平化+映射 注:flatMap 相当于先进行 map 操作,在进行 flatten 操作集合中的每个元素的子元素映射到某个函数并返回新集合。Reduce 简化(归约) :通过指定的逻辑将集合中的数据进行聚合,从而减少数据,最终获取结果。默认情况下, Scala 使用的是不可变集合, 如果你想使用可变集合, 需要引用。不可变集合使用 set关键字,数据无序且不允许重复,遍历集合使用 for 循环。可变集合使用 mutable.set,添加和删除元素会返回新的集合。
2025-04-07 18:58:20
671
原创 Scala基础知识6
第二种,一个类(Sub)混入的两个 trait(TraitA,TraitB)中具有相同的具体方法,且两个 trait 继承自相同的 trait(TraitC),及所谓的“钻石问题”,解决这类冲突问题,Scala 采用了。第一种,一个类(Sub)混入的两个 trait(TraitA,TraitB)中具有相同的具体方法,且两个 trait 之间没有任何关系,解决这类冲突问题,直接在类(Sub)中重写冲突方法。特质定义:使用 trait关键字定义特质,特质可以包含抽象属性和方法,也可以包含具体属性和方法。
2025-04-03 13:58:17
2179
原创 Scala基础知识5
第一种方式和 Java 的包管理风格相同,每个源文件一个包(包名和源文件所在路径不要求必须一致),包名用“.”进行分隔以表示包的层级关系,如com.zpark.scala。在 Scala 中,你可以通过类似的修饰符达到同样的效果。在 Scala 中可以为每个包定义一个同名的包对象,定义在包对象中的成员,作为其对应包下所有 class 和 object 的共享变量,可以被直接访问。若使用 Java 的包管理风格,则包对象一般定义在其对应包下的 package.scala文件中,包对象名与包名保持一致。
2025-04-02 19:36:12
920
原创 Scala基础知识4
闭包:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境,称为闭包。名调用:把代码传递过去。·定义:函数式编程(FP)是一种编程范式,它将任务分解为一系列函数或步骤。一个函数/方法在函数/方法体内又调用了本身,我们称之为递归调用。2,可变参数:在参数类型后加*表示可变参数,通常放在最后。·示例:在C语言中,函数式编程通过一系列函数调用来实现。函数柯里化:把一个参数列表的多个参数,变成多个参数列表。3,默认参数:在参数类型后直接赋值表示默认参数。函数:任务的每个步骤被封装为一个函数。
2025-04-01 13:38:34
2113
原创 Scala基础知识3
Scala 内置控制结构特地去掉了 break 和 continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break 和continue 的功能,而不是一个关键字。其 中 ,for,while,do…for 推导式有一个不成文的约定:当 for 推导式仅包含单一表达式时使用圆括号 ,当包含多个表达式时,一般每行一个表达式,并用花括号代替圆括号。循环守卫,即循环保护式(也称条件判断式,守卫)。示例二是:将原数据中所有值乘以 2,并把数据返回到一个新的集合中。即使前闭合后开的范围。
2025-03-31 19:22:42
635
原创 Scala基础知识2
for 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。如果被循环的是 Map,返回的就是Map,被循环的是 List,返回的就是 List,以此类推。方法调用:Scholar语言中没有运算符,所有的操作都是通过方法调用来实现的,并通过示例展示了如何定义和调用加法方法。(下标索引从0开始。强类型与弱类型语言:Java(强类型)JavaScript(弱类型)在变量定义上的差异。Scala中的变量与常量:在Scala中如何使用VAR定义变量,使用VAL定义常量。
2025-03-28 14:01:30
546
原创 Scala基础知识
Scala 是 Scalable Language 的简写,意味着这种语言设计上支持大规模软件开发,是一门多范式的编程语言Scala 语言是由 Martin Odersky 等人在 2003 年开发的,并于 2004 年首次发布。Scala 的编译模型(独立编译,动态类加载)与 Java 和 C#(c++++) 一样,所以 Scala 代码可以调用 Java 类库(对于.NET实现则可调用.NET类库)。2.类名和方法名:类名的第一个字母大写,方法名的第一个字母小写,多个单词时每个单词的首字母大写。
2025-03-27 10:47:48
633
原创 图像识别技术与应用(unet系列)
U-net+++(了解下就行)不同的max pool整合低阶特征(X1和X2 , 轮廓之类的)上采样整合高阶特征(感受野大的 , 全局的)各层统一用卷积得到64个特征图5*64 =320 , 最终组合得到全部特征。Deep Supervision :也是很常见的事 , 多输出损失由多个位置计算 , 再更新现在来看 , 很多视觉任务都可以套用这招。由图可知我们的宽度也就是通道数越变越大。前一半是编码,后部分是解码(反卷积)。没有绝对好的模型也没有绝对差的模型,我们要根据自己的数据集选择合适的模型。
2025-03-21 13:23:16
421
原创 图像识别技术与应用(图像分割)
VOC数据集:(分为四大类:交通工具,家具,动物,人类)PASCAL VOC挑战赛(The PASCAL Visual Object Classes)是一个世界级的计算机视觉挑战赛。Cityscape数据集:5000张精细标注的图像(2975张训练图、500张验证图和1525张测试图)、20000张粗略标注的图像。我们首先要拿粗略标注的图像去训练,已监测我们的大方向是不是对的,大方向对了后我们在看精细图片。粗略标注与精细标注的结合:先用粗略标注的图像进行初步训练,再使用精细标注的图像进行细节调整。
2025-03-21 09:01:30
534
原创 图像识别技术与应用(YOLOv4)
M ish:(也许就是明日之星)别一棒子全给打死 , 给个改过自新的机会Relu有点太绝对了 , M ish更符合实际公式:f(α)=·tanh(ln(1+ew))但是计算量确实增加了 ,效果会提升一点。引入了自底向上的路径 , 使得底层信息更容易传到顶部并且还是一个捷径 , 红色的没准走个100层(Resnet) , 绿色的几层就到了。亲民政策 , 单GPU就能训练的非常好 , 接下来很多小模块都是这个出发点。M 注意力机制 , 网络细节设计 ,特征金字塔等 , 你能想到的全有。
2025-03-14 12:07:59
754
原创 图像识别技术与应用(YOLOV3)
在softmax回归改进方面,针对多标签任务,v3采用了新的激活函数,允许一个物体存在多标签,并通过设定阈值来确定标签。没有池化和全连接层,全部卷积下采样通过stride为2实现3种scale,更多先验框基本上当下经典做法全融入了。在网络结构改进方面,v3更适合检测小目标,并且特征提取更加细致,融入了多尺度的特征图信息。终于到V3了,最大的改进就是网络结构,使其更适合小目标检测。V3中也用了resnet的思想,堆叠更多的层来进行特征提取。先验框更丰富了,3种scale,每种3个规格,一共9种。
2025-03-13 10:48:04
519
原创 图像识别技术与应用(YOLOV和YOLOV2)
tx=−1则将其向左移动wp这样会导致收敛问题,模型不稳定,尤其是刚开始进行训练的时候V2中并没有直接使用偏移量,而是选择相对grid cell的偏移量。框框的位置可以由左上角或中心点和宽和高确定然后在看它的置信度,图中s是网格尺寸,c是类别,b是边框数量,7x7代表7x7个格子,所以带入公式得(7x7)x(2x5+20)。图中的30可以分成5 +5+20,其中两个5代表框框,20代表当前一共有20个分类。感受野越大越好,模型提取特征的能力越强,通过堆叠多个小卷积核可以获得更大的感受。
2025-03-12 17:25:55
602
原创 图像识别技术与应用(目标检测项目)
anchor-base是自顶向下的类似于传统方法,滑动窗口法穷举出许多,然后再根据置信度之类的进行筛选anchor-freeanchor-free是自底向上的想办法自动生成,不穷举free掉了anchor的预设过程。图中d是实例分割,实例分割不仅要对每个像素进行分类,还要区分同一类别的不同个体,为每个不同的实例生成单独的分割掩码。图片中的那个1是置信度,置信度是呈现在最后的结果上的,准确率是我们需要检测的。图中c是语义分割,同一个类别的分割成同一个颜色,不同类别的分割成不同颜色。目标种类与数量繁多的问题。
2025-03-11 13:09:50
469
原创 图像识别技术与应用学习总结
预处理数据:导包,对图像进行标准化,转化totensor格式,翻转,剪切等,加载数据构建模型,定义类,一般是卷积层,池化层,全连接层,再进行正向传播,定义损失,学习率。7、结构改进(为每个网络创建不同的数据子集)8、独立参数更新(消除梯度,避免参数更新相互干扰)训练模型:获取训练数据,权重参数剃度清零,正向传播,显示损失值,最后查看预测后的结果。9、差异化初始化(为每个网络设置不同的随机种子,增加模型多样性,提升集成效果)优化模型:采用全局平均池化,通过减小参数来进行优化。测试模型:测试模型的准确度。
2025-03-11 11:35:29
163
原创 图像识别技术(手写数字识别项目)
Flatten拉平成一维向量, self.layer1 :定义第一个隐藏层,由一个全连接层 nn.Linear 和一个批归一化层 nn.BatchNorm1d 组成。example_data[i][0] 是因为MNIST图像数据是三维张量(通道数,高度,宽度),这里取通道维度为0的单通道图像;in[4]里面的代码是导包,in[5]是定义一些超参数,in[6]是定义数据预处理,totensor是格式转换,转换成tensor格式,in[8]是下载和加载数据集,Normalize是归一化。
2025-03-06 13:18:47
328
原创 图像识别技术与应用(集成算法)
第一个函数是一个卷积层一个池化层一个卷积层一个池化层最后两个全连接。第二个函数是两个池化层,view是拉平成一维向量,relu是激活函数。 对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。第一个函数是一个卷积层一个最大池化层一个卷积层一个最大池化层 avgpool是平均池化层然后一个全连接。集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务等。集成学习的结果通过投票法产生?1.组成这个集成学习的学习器必须具有差异性。
2025-03-05 20:46:57
276
原创 图像识别技术(pytorch进行图像分类的识别)
model.apply(register_hook) 对模型中的每个模块应用 register_hook 函数,为符合条件的模块注册前向传播钩子。self.aap=nn.AdaptiveAvgPool2d(1) 定义了自适应平均池化层,输出大小为1x1,实现全局平均池化的效果。(predicted == labels)生成布尔张量,sum()统计 True的数量(即正确预测数),累加到 correct。outputs = net(images) :将图像输入到模型 net 中,得到模型的输出。
2025-03-04 11:35:22
531
原创 图像识别技术与应用
1.Pytorch实现cifar10多分类以CIFAR-10作为数据集,使用PyTorch利用卷积神经网络进行分类。2.数据集说明CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像。有50000个训练图像和10000个测试图像。 此过程经过卷积层池化层卷积层池化层最后在经过2个全连接。数据集分为5个训练批次和1个测试批次,每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机选择的图像。训练批次以随机顺序选取剩余图像,但一些训练批次可能更多会选取来
2025-03-04 10:13:47
402
原创 图像识别技术与应用(图像分类项目)
可以用来表示模型的精度,即模型识别正确的个数/样本的总个数。一般情况下,模型的精度越高,说明模型的效果越好。深度学习最重要的属性,计算最长路径的卷积层+全连接层数量。LeNet网络,如c1是6,c3是16,c5是120如图可知。此过程没有池化层,因为池化层只是简单的删除一些数据没有激活函数,因为激活函数它只是一个函数。有监督方法(有答案有标签):平移、翻转、亮度、对比度、裁剪、缩放等。FP(False postive,假正例)——将反类预测为正类数。将不同的图像,划分到不同的类别标签,实现最小的分类误差。
2025-02-28 14:15:19
328
原创 图像识别技术与应用(Pytorch数据处理工具箱)
然后rgb的索引相对于是012,因为他们的设定方式不一样,所以转换的时候我们要考虑到他的这个通道是不一样的,要不然它呈现出来的色彩跟本来图片是有差异的,所以上图会出现(1,2,0)。最上面那个框里面import 是导包的,处理图片分为灰色图片和彩色图片有rgb三个通道,所以(0.5,0.5,0.5)这三个均值分别代表一个。transforms提供了对PIL Image对象和Tensor对象的常用操作。transforms提供了对PIL Image对象和Tensor对象的常用操作。各种可视化方法如下表所示。
2025-02-27 14:08:24
256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅