- 博客(44)
- 收藏
- 关注
原创 电商双11美妆数据分析
男士在美妆产品销售量中占比18.16%,女士占比81.83%,销售额中男士占10%,女士占89.77%。探讨双11销售活动时间规律,发现11月9日销售量达到巅峰,11月11日后下降。探索男生喜欢的产品,主要集中在妮维雅和欧莱雅等护肤品,化妆品几乎无人使用。对店名分类后选取相关数据进行评论数的分析。
2025-05-07 16:23:35
171
原创 数据可视化与分析
数据集包括更新日期、ID、title、品牌名、克数容量、价格、销售数量、评论数量、店名等信息。使用柱形图和饼图展示数据,并将按价格区间将商品分为ABCD四类,并绘制销售额占比图。使用pandas库进行数据预处理,包括查看数据特征、处理缺失值和重复值。新增“是否为男士专用”列,通过检测关键词如“男士”、“男生”等进行分类。数据可视化的目的是为了数据分析,而非仅仅是数据的图形化展示。绘制各店铺商品数量、销量、总销售额和平均单价的图表。新增“销售额”列,并计算各店铺的销售情况。
2025-05-06 11:30:47
457
原创 Seaborn
2. 安装与导入:安装Seaborn可使用 pip install seaborn 或 conda install seaborn 命令,也可通过清华源(https://pypi.tuna.tsinghua.edu.cn/simple )加速安装。导入时使用 import seaborn as sns,且 sns.set_theme() 可设置主题和模板,style 有“darkgrid”等多种取值,context 有“paper”等不同选项。折线图:sns.lineplot() 用于呈现变量变化趋势。
2025-04-30 16:19:56
259
原创 Matplotlib绘图
其格式为matplotlib.pyplot.hist(x, bins=None, color=None, label=None, **kwargs)imshow() 创建了一个 4x4 的二维 numpy 数组,并对其进行了三种不同的 imshow 图像展示。用于控制图像的平滑程度和细节程度。如果我们将 RGB 颜色的绿色和蓝色坐标的数组元素设置为 0,我们将得到红色的图像。imshow() 函数是 Matplotlib 库中的一个函数,可显示图像。imsave() 可以将生成的图像保存到指定的目录中。
2025-04-29 15:41:44
890
原创 Spark Streaming核心编程总结(四)
它允许基于键值对形式的DStream,通过自定义状态更新函数,将历史状态与新数据结合,生成包含最新状态的DStream。连接管理:避免在Driver端创建连接(序列化问题),应在foreachPartition中按分区创建。窗口操作基于时间窗口动态处理数据,适用于滑动统计(如最近12秒内的词频)。1. 定义状态类型:状态可以是任意数据类型(如示例中的Int类型)。2. 定义状态更新函数:接收当前批次的数据序列和旧状态,返回新状态。窗口时长:计算的时间范围(如Seconds(12))。
2025-04-27 17:44:44
357
原创 Spark-Streaming核心编程
消费数据命令中的参数名与生产数据有所不同,并且如果要从头开始消费需要添加特定参数,同时分区间的数据无序但分区中的数据有序,还需指定消费者组。对读取的数据进行操作,如通过map映射只取数据中的值部分,后续进行词频计算相关的操作(包括split、flatMap、map、reduceByKey等操作),最后处理开始、停止相关逻辑(一般手动停止或者遇到异常停止)。在代码方面,配置Spark相关对象,设定Kafka的相关参数(包括Kafka运行的主机号和端口号、消费者所在组、字符串序列方式等四个参数)。
2025-04-25 17:32:18
312
原创 第四章第四节 Spark-Streaming核心编程(三)
基于Filebeat的目录监控:通过Filebeat实时监控指定目录(如日志目录),将新增文件内容采集并推送至Kafka消息队列。这种方式适用于需要持久化数据的场景,同时利用Kafka的缓冲能力应对数据峰值。直接对接Kafka流:通过KafkaUtils.createDirectStream API直接从Kafka指定Topic消费数据,适用于高吞吐、低延迟的实时处理场景。应用场景:需调用未在DStream API中封装的方法(如自定义RDD算子)。合并来自两个Socket源的单词计数流和标签流。
2025-04-25 17:31:00
233
原创 SparkStreaming概述
SparkStreaming支持多种数据输入源(如Kafka、Flume、Twitter、TCP套接字等)和数据输出位置(如HDFS、数据库等)。驱动程序:StreamingContext处理所收到的数据的Spark作业,并传给SparkContext。DStream是SparkStreaming中的数据抽象模型,表示随着时间推移收到的数据序列。背压机制:协调数据接收能力和资源处理能力,避免数据堆积溢出或资源浪费。工作节点:处理所收到的数据的任务,接收器接收并长期运行任务。需要导入新的函数并继承现有函数。
2025-04-22 11:25:09
316
原创 Spark-SQL 项目
trim(get_json_object(raw_data.data, '$.addr')) AS addr -- 提取addr并去除前后空格。{"uid":"1000166111","phone":"17703771999","addr":"河南省 南阳"}{"uid":"1000432103","phone":"15388889881","addr":"云南省 昆明"}get_json_object(raw_data.data, '$.uid') AS uid, -- 提取uid。
2025-04-22 11:24:22
587
原创 Spark-SQL核心编程
MySQL数据:通过JDBC从关系型数据库读取数据,创建DataFrame,并可以将数据写回数据库。第三种方式:使用spark.read.jdbc方法,传入JDBC路径、用户名和密码。第一种方式:使用option参数传入URL、驱动、用户名、密码和表名。保存模式:使用mode方法设置保存模式(追加、错误、覆盖、忽略)。通过选项加载:传入URL地址、用户名、密码和数据表名称等参数。通过路径加载:传入加载数据的路径和类型,使用可选参数。设定格式和选项:指定保存的数据类型、选项和路径。
2025-04-16 22:07:55
496
原创 Spark-SQL代码示例
查询user name和age两列,使用 select函数展示结果。创建子模块Spark-SQL,并添加依赖。查询user表的全部内容和平均年。
2025-04-16 15:49:54
177
原创 Spark SQL
DataFrame与DataSet转换:DataFrame可以通过as[Type]方法转换为DataSet,DataSet可以通过toDF()方法转换为DataFrame。RDD与DataSet转换:RDD可以通过toDS()方法转换为DataSet,DataSet可以通过toDF()方法转换为DataFrame。DataFrame:数据类型固定为ROW,每一列的值需要解析才能获取,支持Spark SQL操作。DataSet:每一行的数据类型明确,支持强类型操作,支持Spark SQL操作。
2025-04-14 17:38:36
564
原创 Spark Core
行动算子:行动算子(如collect、reduce、count、first、take等)的作用和用法,这些算子会触发实际的计算并返回结果。分布式计算:RDD是分布式数据结构,数据分布在不同的节点上,行动算子在executor端执行,而结果需要在driver端收集。转换算子:各种转换算子(如groupByKey)的作用和用法,这些算子不会立即执行,只有在遇到行动算子时才会触发执行。输出结果:在使用行动算子时,特别是collect操作时需要注意数据量的大小,避免driver内存溢出。
2025-04-11 14:01:07
415
原创 Spark-Core
MapReduce中的Map算子会长时间占用内存,可能导致内存溢出错误,因此在内存有限的情况下不推荐使用。讨论了map和flatMap的区别:map将每条数据映射为新对象,而flatMap先将每个输入对象映射为新集合,再将这些新集合连接成一个大集合。抽取数据的函数可以根据放回或不放回的规则进行数据抽取,并且可以设置抽取的几率和随机种子。zip算子将两个RDD的数据组合成键值对形式,键和值的数据类型可以不同。过滤器根据指定规则筛选数据,保留符合规则的数据,丢弃不符合规则的数据。
2025-04-10 10:48:56
470
原创 Spark Core学习总结
总结:Spark Core通过RDD实现了高效的分布式计算,其弹性、容错和并行化特性使其成为大数据处理的核心工具。批处理(如日志分析)、迭代计算(机器学习)、实时流处理(结合Structured Streaming)。IDEA插件:需安装Scala插件,配置Maven依赖(spark-core_2.12)。依赖关系:窄依赖(1父分区→1子分区)与宽依赖(Shuffle依赖)。工作节点(Worker)中的JVM进程,负责运行具体的Task。弹性:支持自动容错、数据分片调整、存储介质切换(内存/磁盘)。
2025-04-09 17:08:13
600
原创 集合计算高级函数
扁平化加映射:扁平化加映射的操作,先进行映射操作,再进行扁平化操作。将嵌套列表通过扁平化变成单一元素的列表。扁平化+映射 注:flatMap 相当于先进行 map 操作,在进行 flatten 操作集合中的每个元素的子元素映射到某个函数并返回新集合。映射操作:映射操作是将集合中的每一个元素的子元素映射到某个函数并返回到新集合。规约操作:规约操作是通过指定的逻辑将集合中的数据按照一定的逻辑进行聚合。分组操作:分组操作是按照指定的规则对集合中的元素进行分组。转换操作:转换操作是根据指定的公式转换集合中的元素。
2025-04-08 09:21:37
146
原创 第七章总结:集合
定义:val map = mutable.Map("a" -> 1, "b" -> 2)定义:val map = Map("a" -> 1, "b" -> 2)定义:val buffer = ListBuffer(1, 2, 3)定义:val set = mutable.Set(1, 2, 3)定义:val tuple = (1, "a", true)定义:val list = List(1, 2, 3)特点:最多支持22个元素,可通过_1、_2访问元素。定义:val set = Set(1, 2, 3)
2025-04-07 17:18:08
517
原创 面向对象(2)
使用 object 关键字声明单例对象,单例对象的名称与类名一致。特质可以与父类一起使用,使用 extends 关键字继承父类,使用 with 关键字连接特质。如果需要扩展多个功能,优先使用特质,因为一个类可以混入多个特质,但只能继承一个抽象类。如果需要使用带参数的构造函数,则使用抽象类,因为特质不支持带参数的构造函数。通过单例对象的 apply 方法可以实现不使用 new 方法创建对象。父类的优先级高于特质,多个特质之间可以使用 with 关键字连接。特质叠加时,冲突的方法会在子类中重写解决。
2025-04-03 10:54:32
181
原创 第六章 面向对象
支持通配符导入(import com.zpark._)、重命名(import com.zpark.Fruit => Shuiguo)和绝对路径导入(import _root_.java.util.HashMap)。方法:def 方法名(参数列表): 返回类型 = { ... },支持参数默认值和可变参数。属性:val(只读)或var(读写),支持默认值(如var age: Int = _)。语法:class 类名 { ... },默认公有(无public关键字)。作用:管理类、避免命名冲突、控制访问权限。
2025-04-02 16:56:56
357
原创 函数式编程
无参数无返回值:不需要传入任何参数,也没有返回值。函数:是一等公民,可独立存在,可作为参数传递或返回值。无参数有返回值:不需要传入任何参数,但有返回值。多参数无返回值:需要传入多个参数,但没有返回值。多参数有返回值:需要传入多个参数,并且有返回值。有参数无返回值:需要传入参数,但没有返回值。有参数有返回值:需要传入参数,并且有返回值。可变参数:使用`*`表示接受多个同类型参数。带名参数:调用时显式指定参数名,增强可读性。默认参数:为参数指定默认值,调用时可省略。柯里化:将多参数函数转换为单参数函数链。
2025-04-01 10:41:52
349
原创 Scala核心技术总结(1)
前四章内容涵盖了Scala的基础语法、数据类型、运算符和流程控制,为后续学习函数式编程和面向对象编程奠定了基础。Scala是完全面向对象的语言,去掉了static关键字,用object实现类似静态方法的功能。Scala推动了Java语言的发展,例如Java 8中的Lambda表达式和类型推断。Spark框架是用Scala编写的,学习Scala有助于更好地理解和学习Spark。Scala中的==类似于Java的equals,比较值而非引用。Scala没有++和--,用+= 1和-= 1代替。
2025-03-31 17:46:20
1693
原创 Scala基础总结
Scala是一种多范式编程语言,融合了面向对象编程(OOP)与函数式编程(FP)的特性。它运行于JVM平台,与Java无缝互操作,同时提供更简洁的语法和更强的表达能力。Scala广泛应用于大数据生态(如Spark、Kafka),是提升开发效率的重要工具。1. 简洁优雅:一行Scala代码可替代多行Java代码。3. 函数式编程:支持高阶函数、闭包、不可变数据等特性。val 定义常量(不可变)var 定义变量(可变)。不可变集合(默认):List、Map、Set等。filter:过滤符合条件的元素。
2025-03-28 10:58:12
166
原创 Scala 语言总结
面向对象与函数式编程:Scala结合了面向对象编程(OOP)和函数式编程(FP)的最佳特性,支持类和对象、继承和多态、抽象类和特质等OOP特性,以及高级函数、不可变性、模式匹配等FP特性。类、对象、方法和字段:Scala中的类是对象的抽象,对象是类的具体实例,方法描述基本行为,字段是对象的属性集合。类型系统:Scala具备静态类型系统和编译时检查,支持泛型类、类型推断、范式连成等特性,保证代码的安全性和一致性。类与对象:类是对象的抽象(如 class Dog),对象是类的实例(如 new Dog())。
2025-03-27 10:22:28
503
原创 U-net系列算法
深度监督(Deep Supervision):在解码器的多个子网络输出端计算损失,通过多任务学习提升训练稳定性,加速收敛。密集跳跃连接:引入类DenseNet的密集连接机制,在编码器与解码器间构建多层级特征融合路径,增强特征复用能力。统一特征维度:各层卷积输出固定为64通道,最终拼接所有层级特征(共5层,总通道数320),实现多粒度信息互补。特征拼接:取代传统特征叠加,将编码器各层的特征图与解码器对应层拼接,保留多尺度信息。高阶特征整合:利用上采样融合高层特征的全局语义信息(如大感受野特征)。
2025-03-21 10:02:36
277
原创 图像分割项目总结
实例分割(instance segmentation)只预测前景目标的类别属性以及边框,个体ID,每一个像素可以属于多个ID。FWLU(Frequency Weighted LU):根据每个类出现的概率给MLU赋权重计算的指标。MIOU(Mean Intersection over Union):每个类别的IOU的平均值。MPA(Mean Pixel Accuracy):每个类被正确分类的像素数的比例。将不同的像素划分到不同的类别,非常细粒度的分类。:以场景理解为目标,特别选取比较复杂的日常场景。
2025-03-20 10:27:36
357
原创 YOLO系列-V4
1. 亲民政策:YOLOv4首次实现了单GPU高效训练,大幅降低了硬件门槛,使更多研究者和开发者能够参与模型优化。DIOU-NMS:在非极大值抑制中,同时考虑IoU和中心点距离,减少误删重叠目标的概率。Soft-NMS:通过降低重叠框的置信度而非直接剔除,保留更多候选框,提升召回率。GIOU Loss:引入最小包围框,优化框的位置和尺寸,但未考虑中心点距离。Mosaic增强:拼接四张图像训练,模拟多尺度场景,提升小目标检测能力。自对抗训练(SAT):通过添加对抗性噪声,迫使模型学习更复杂的特征。
2025-03-14 10:30:57
1599
原创 YOLO-V3总结
YOLO-V3 网络的改进之处,包括网络结构更适合检测小目标、特征更细致、边框框更丰富、softmax 预测多标签任务等。13*13特征图上:(116x90),(156x198),(373x326)26*26特征图上:(30x61),(62x45),(59x119)52*52特征图上:(10x13),(16x30),(33x23)先验框更丰富了,3种scale,每种3个规格,一共9种。YOLO-V2中选了5个,这回更多了,一共有9种。YOLO-V2中选了5个,这回更多了,一共有9种。
2025-03-13 10:47:26
320
原创 YOLOV1和YOLOV2的总结
很明显,堆叠小的卷积核所需的参数更少一些,并且卷积过程越多,特征提取也会越细致,加入的非线性变换也随着增多,还不会增大权重参数个数,这就是VGG网络的基本出发点,用小的卷积核来完成体特征提取操作。如果堆叠3个3*3的卷积层,并且保持滑动窗口步长为1,其感受野就是7*7的了,这跟一个使用7*7卷积核的结果是一样的,那为什么非要堆叠3个小卷积呢?YOLO系列网络的特点,特别是其速度快的优势,适用于实时检测应用,如监测老年人摔倒、无人机避障等。1.10 =(X,Y,H,W,C)*B(2个)
2025-03-12 16:33:29
1554
原创 目标检测项目
流程:输入图像 > CNN特征提取 > ROI Pooling > 全连接层 > 类别预测和位置回归 > NMS筛选。R的取值:从0到1,公差为0.1,共11个数位(0.0, 0.1, 0.2, ..., 1.0)。R-CNN系列:包括R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN等。流程:输入图像 -> CNN特征提取 -> 位置预测和类别预测 -> NMS筛选。类别,目标种类与数量繁多的问题,目标尺度不均的问题,遮挡、噪声等外部环境干扰。P的确定:每个R值对应一个准确率P。
2025-03-11 10:34:28
638
原创 图像识别任务总结与感悟
集成学习和深度网络相结合,结合可视化工具和评估指标,显著提高了模型性能。未来,有必要在技术突破和道德约束之间取得平衡,以促进人工智能在医疗保健、教育和其他领域的综合应用。深度学习模型(如VGG16)显著提升性能,通过迁移学习(预训练ImageNet模型)加速收敛,解决小样本问题。特征分层的重要性:浅层提取边缘/纹理,高层捕获语义信息,分层设计提升分类精度。模型复杂度与泛化的平衡:过深网络易过拟合,需结合剪枝、量化等技术优化。即使知道内容,也应通过自己的语言表达出来,展示真正理解和掌握的程度。
2025-03-10 17:22:56
228
原创 人工智能项目的实现
2. 手写数字识别案例:手写数字识别的经典案例MNIST,并详细讲解了其数据集的下载和处理过程、网络结构的搭建(包括输入层、全连接层和输出层)、超参数的设置(如batch size、学习率和训练轮次)以及模型的训练和验证过程。1. 数据预处理和模型训练:如何加载预处理数据集、定义损失函数(如均方误差和交叉熵)、优化方法以及模型训练的具体步骤,包括训练模式和测试模式的调整、梯度清零、正向传播、损失计算和梯度更新。【说明】model.train()与model.eval()的使用。
2025-03-06 09:24:32
826
原创 集成算法应用
将所有弱分类组合成强分类器,各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,降低分类误差率大的弱分类器的权重。如何使用经典的深度学习模型(如vgg16)来提高模型的性能。Bagging:个体学习器间不存在强依赖关系、可同时生成的并行化方法,代表为随机森林。训练弱分类器,如果样本分类正确,则在构造下一个训练集中,它的权值就会被降低;展示了不同模型在不同情况下的准确率,并指出集成学习在某些情况下可以提高准确率。最终的结果:每个分类器根据自身的准确性来确定各自的权重,再合体。
2025-03-05 16:08:32
443
原创 数据处理、模型训练及测试深度学习模型优化
7. 全局平均池化层:孙靖钺和守望讨论了全局平均池化层的作用,它可以替代全连接层以减少模型的参数量,从而降低过拟合的风险。钩子函数的使用可以提高代码的可扩展性和灵活性。5. 模型训练与输出:详细讲解了训练过程,包括设备设置、前向传播、softmax输出层的原理及作用,区分了置信度和准确率的概念,解释了softmax回归选择最大值确定类别的方式。总的来说,此次讨论集中在深度学习模型优化的关键技术,包括全局平均池化层的应用以降低过拟合风险和减少参数量,钩子函数的概念及其在实际编程中的应用以提高代码可扩展性。
2025-03-04 09:36:10
235
原创 pytorch实现cifar10多分类
机器学习中的PR曲线、ROC曲线、数据增强、有监督学习和无监督学习等概念展开讨论,并详细介绍了如何使用卷积神经网络实现一个多分类项目,包括数据集的处理、模型的训练和测试等具体步骤。有监督学习使用带标签的数据进行训练,包括数据增强方法如平移、翻转、调整亮度、对比度、裁剪缩放等。详细介绍了如何设置训练集和测试集的路径、是否下载数据集、批量大小、是否打乱数据等参数。PR曲线用于解决查全率和查准率之间的矛盾,通过曲线和坐标轴围成的面积来评估模型优劣。提到正负样本均衡可以通过数据增强和调整数据集本身的数据量来实现。
2025-03-03 16:05:56
212
原创 图像分类项目
可以用来表示模型的精度,即模型识别正确的个数/样本的总个数。主对角线的元素之和为正确分类的样本数,其余元素之和为错误分类的样本数。准确率(Precision):又称为查准率,表示在模型识别为正类的样本中,真正为正类的样本所占的比例。召回率(Recall):又称为查全率,表示模型正确识别出为正类的样本的数量占总的正类样本数量的比值。对于k分类问题,混淆矩阵为k*k的矩阵,元素Cij表示第i类样本被分类器判定为第j类的数量。查准率和查全率的关系曲线,曲线和坐标轴围成的面积越大,模型性能越好。
2025-02-28 09:43:12
421
原创 TensorBoard的使用方法
可视化工具TensorBoard的使用方法,包括如何导入和实例化工具、调用接口进行各种数据的可视化、启动服务等关键步骤。具体方法:涵盖几乎所有数据的可视化方式,如aio(音频)、ONNX(网络结构)、PR曲线(分类性能)等。可视化内容:单一数据(损失值、准确率)、图像数据、音频数据、文本数据、网络结构图等。TensorBoard功能:可视化神经网络、显示值、特征图等。可视化过程:通过TensorBoard展示特征图的变化。可视化操作:记录并可视化训练过程中的损失值变化。
2025-02-28 08:46:44
201
原创 pytorch数据处理工具箱(1)
Dataset是PyTorch中表示数据集的抽象类。通过实现__getitem__`方法,可以一次获取一个样本;utils.data作为核心模块,它提供了数据加载和处理的功能。使用多进程加载的进程数,0代表不使用多进程。相关参数介绍如下所示。定义一个新的迭代器,实现批量读取。,一般使用默认的拼接方式即可。如何将多个样本数据拼接成一个。-len-提供数据的大小。是否将数据保存在锁页内存(中的数据个数可能不是。区),其中的数据转到。
2025-02-26 19:31:42
187
原创 Pytorch神经网络工具箱
它能够很好的与nn.Sequential结合使用,而nn.functional.xxx无法与nn.Sequential结合使用。nn.functional中的函数,写法一般为nn.funtional.xxx,如nn.funtional.linear、nn.funtional.conv2d、nn.funtional.cross_entropy等。nn.Module,写法一般为nn.Xxx,如nn.Linear、nn.Conv2d、nn.CrossEntropyLoss等。适用于激活函数、池化层。
2025-02-24 16:42:31
320
原创 卷积神经网络(2)
(LeNet-5)由两个部分组成:卷积编码器:由两个卷积层组成;AlexNet的架构与LeNet相似,但使⽤了更多的卷积层和更多的参数来拟合大规模的ImageNet数据集。:如果有一种算法可以自动地学习出有效的特征,并提高最终机器学习模型的性能,那么这种学习就可以叫作表示学习。VGG-16和VGG-19是VGG网络的典型代表,分别包含16和19个卷积层。层组成:五个卷积层、两个全连接隐藏层和一个全连接输出层。浅层卷积核提取:边缘、颜色、斑块等底层像素特征。中层卷积核提取:条纹、纹路、形状等中层纹理特征。
2025-02-21 10:30:13
232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人