- 博客(37)
- 收藏
- 关注
原创 Spark-SQL核心编程
将 hive-site.xml (修改 ConnectionURL 为实际Hive元数据库地址)、 core-site.xml 、 hdfs-site.xml 拷贝到Spark的 conf/ 目录。通用方法: df.write.save ,通过 format 指定格式, option 设置参数(如JDBC连接信息), save 指定路径。保存: df.write.mode("append").save("保存路径") (自动以Parquet格式保存)。
2025-04-16 19:11:15
474
原创 Spark-SQL简介及核心编程
实际开发常借助样例类转换,定义 case class User(name:String, age:Int) 后,通过 sc.makeRDD(List(("zhangsan",30), ("lisi",40))).map(t=>User(t._1, t._2)).toDF.show 实现转换。共性:都是分布式弹性数据集,有惰性机制、共同函数,操作需 import spark.implicits._ ,会自动缓存运算,都有分区概念,DataFrame和DataSet可模式匹配获取字段信息。
2025-04-14 19:15:52
640
原创 Spark-Core编程
函数签名 def aggregate[U: ClassTag](zeroValue: U)(seqOp: (U, T) => U, combOp: (U, U) => U): U。cogroup算子:作用于(K, V)和(K, W)型RDD,返回(K, (Iterable[V], Iterable[W]))型RDD。join算子:连接两个(K, V)和(K, W)型RDD,返回(K, (V, W))型RDD。5. first:返回RDD中的首个元素,函数签名 def first(): T。
2025-04-11 14:05:41
716
原创 spark Core-RDD转换算子
3. mapPartitionsWithIndex算子:以分区为单位处理数据,处理时可获取当前分区索引,函数签名为 def mapPartitionsWithIndex[U: ClassTag](f: (Int, Iterator[T]) => Iterator[U], preservesPartitioning: Boolean = false): RDD[U]。5. glom算子:将同一个分区的数据转换为内存数组,分区不变,函数签名为 def glom(): RDD[Array[T]]。
2025-04-10 15:01:59
1158
原创 spark运行架构
Yarn Client模式:Driver在本地机器运行,与ResourceManager通讯申请启动ApplicationMaster,后续流程包括启动Executor、反向注册、执行main函数等,执行Action算子时触发Job并分发任务。具有存储、容错、计算、分片弹性,数据分布式存储,封装计算逻辑但不保存数据。3. 执行原理:在Yarn环境中,先启动集群,Spark申请资源创建调度和计算节点,将计算逻辑按分区划分为任务,调度节点根据计算节点状态发送任务执行,RDD负责封装逻辑并生成任务。
2025-04-09 19:39:31
867
原创 Spark概述及安装
local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到对应的集群中去执行,Spark 的 Standalone 模式体现了经典的 master-slave 模式。-rw-r--r-- 1 root root 106418783 11月 22 20:14 spark-2.0.0-bin-hadoop2-without-hive.tgz。Spark核心模块:Spark Core,Spark SQL ,Spark Streaming ,Spark MLlib ,Spark GraphX。
2025-04-08 10:50:43
629
原创 Scala语言-集合计算高级函数
(4)扁平化+映射 注:flatMap 相当于先进行 map 操作,在进行 flatten 操作集合中的每个元素的子元素映射到某个函数并返回新集合。Reduce 简化(归约) :通过指定的逻辑将集合中的数据进行聚合,从而减少数据,最终获取结果。(1)过滤:遍历一个集合并从中获取满足指定条件的元素组成一个新的集合。单词计数:将集合中出现的相同的单词,进行计数,取计数排名前三的结果。(2)转化/映射(map):将集合中的每一个元素映射到某一个函数。(5)分组(group):按照指定的规则对集合的元素进行分组。
2025-04-08 09:54:25
517
原创 数组 集合 元组
默认情况下, Scala 使用的是不可变集合, 如果你想使用可变集合, 需要引用scala.collection.mutable.Set 包。Scala 中的 Map 和 Java 类似,也是一个散列表,它存储的内容也是键值对(key-value) 映射。(3)sortWith:基于函数的排序,通过一个 comparator 函数,实现自定义排序的逻辑。(1)arr2.toArray 返回结果才是一个不可变数组,arr2 本身没有变化。(5)集合间合并:将一个整体拆成一个一个的个体,称为扁平化。
2025-04-07 19:39:39
602
原创 Scala面向对象(二)
Scala 语言中,采用特质 trait(特征)来代替接口的概念,也就是说,多个类具有相同的特质(特征)时,就可以将这个特质(特征)独立出来,采用关键字 trait 声明。Scala 中的 trait 中即可以有抽象属性和方法,也可以有具体的属性和方法,一个类可以混入(mixin)多个特质。(5)当使用 new 关键字构建对象时,调用的其实是类的构造方法,当直接使用类名构建对象时,调用的其实时伴生对象的 apply 方法。4)可变集合,就是这个集合可以直接对原对象进行修改,而不会返回新的对象。
2025-04-03 11:37:57
1167
原创 Scala面向对象
Scala 有两种包的管理风格,一种方式和 Java 的包管理风格相同,每个源文件一个包(包名和源文件所在路径不要求必须一致),包名用“.”进行分隔以表示包的层级关系。另一种风格,通过嵌套的风格表示层级关系。封装就是把抽象出的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。在 Scala 中可以为每个包定义一个同名的包对象,定义在包对象中的成员,作为其对应包下所有 class 和 object 的共享变量,可以被直接访问。
2025-04-02 18:01:33
999
原创 函数式编程
如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略。当函数返回值被声明为 lazy 时,函数的执行将被推迟,直到我们首次对此取值,该函数才会执行。这种函数我们称之为惰性函数。解决问题时,将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封装好的步骤,解决问题。闭包:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境,称为闭包。
2025-04-01 13:38:43
584
原创 大数据技术之Scala
Scala 内置控制结构特地去掉了 break 和 continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break 和continue 的功能,而不是一个关键字。因为 while 中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用变量,而变量需要声明在 while 循环的外部,那么就等同于循环的内部对外部的变量造成了影响,所以不推荐使用,而是推荐使用 for 循环。其 中 ,for,while,do…循环守卫,即循环保护式(也称条件判断式,守卫)。7.while循环控制。
2025-03-31 17:55:51
563
原创 Scala基础
1.字符串的插值操作Scala中的三个字符串插值器:s、f、raws:在任何字符串前加上s,就可以直接在串中使用变量了f:除了 s 的功能外(不指定格式就和 s 一样),还能进行格式化输出,在变量后用 % 指定输出格式raw:除了对字面值中的字符不做编码外,raw 插值器与 s 插值器在功能上是相同的2.条件表达式 当y的值类型既可能为Int又可能为String时,它的类型被定义为Any,是Int和String的父类。没有else时,会默认为else (),y的类型被定义为AnyVal3.类型的转换 4.块
2025-03-28 11:11:27
580
原创 Scala基础语法
Scala标识符的命名应遵循清晰、简洁、有意义的原则,以提高代码的可读性和可维护性。用于组织代码,避免命名冲突。do 、 while :先执行一次循环体,再判断条件,条件为真则继续循环。使用 object 定义单例对象,可用于存放工具方法或全局共享的状态。Scala标识符是用来给变量、函数、类、对象等命名的符号。数组: Array ,用于存储固定大小的同类型元素序列。没有函数名的函数,可作为参数传递或赋值给变量。高阶函数:接受函数作为参数或返回函数的函数。for :用于遍历集合或执行固定次数的循环。
2025-03-27 11:35:13
579
原创 Scala简介
Scala运行在Java虚拟机(JVM)上,可以与Java代码无缝交互,能方便地调用现有的Java类库,这使得Scala可以充分利用Java生态系统的丰富资源。函数式编程应用:在一些需要高度并发和并行处理的场景中,Scala的函数式编程特性使其能够有效地处理异步操作和并发任务,如Akka框架基于Scala实现了高效的并发编程模型。强大的类型系统:Scala的类型系统非常强大,支持泛型、类型参数、抽象类型等高级特性,能在编译时进行严格的类型检查,提高代码的可靠性。Scala是静态编译的,所以速度会快很多。
2025-03-27 11:12:19
539
原创 U-net系列算法
概述就是编码解码过程,简单但是很实用 ,应用广,起初是做医学方向 , 现在也是。不同的max pool整合低阶特征(X1和X2 , 轮廓之类的)上采样整合高阶特征(感受野大的 , 全局的)5*64 =320 , 最终组合得到全部特征。现在来看 , 很多视觉任务都可以套用这招。训练的时候同样会用到L4 ,效果还不错。把能拼能凑的特征全用上就是升级版了。以前我们都是加法 , 现在全都要。其实跟densenet思想一致。可以根据速度要求来快速完成剪枝。也是很常见的事 , 多输出。特征融合 ,拼接更全面。
2025-03-21 11:06:51
739
原创 图像分割项目
Cityscape数据集:5000张精细标注的图像(2975张训练图、500张验证图和1525张测试图)、20000张粗略标注的图像。COCO数据集:共91类,以人类4岁小孩能够辨识为基准,其中82类有超过5000个instance。实例分割:只预测前景目标的类别属性以及边框,个体ID,每一个像素可以属于多个ID。图像分割的应用场景:人像抠图,医学组织提取,遥感图像分析,自动驾驶,材料图像等。将不同的像素划分到不同的类别,非常细粒度的分类。全景分割:每个像素点分配一个语义类别和一个唯一的实例ID。
2025-03-20 10:35:22
434
原创 YOLOV4
数据增强: 调整亮度、 对比度、 色调、 随机缩放、 剪切、 翻转、 旋转网络正则化的方法: Dropout、 Dropblock等。并且还是一个捷径 , 红色的没准走个100层(Resnet) , 绿色的几层就到了。亲民政策 , 单GPU就能训练的非常好 , 接下来很多小模块都是这个出发点。M V3中为了更好满足不同输入大小 , 训练的时候要改变输入数据的大小。M 做人留一面日好相见 ,柔和一点的NMS , 更改分数而且直接剔除。M 注意力机制 , 网络细节设计 ,特征金字塔等 , 你能想到的全有。
2025-03-14 10:44:26
699
原创 YOLOV3
YOLO-V2中选了5个,这回更多了,一共有9种13*13特征图上:(116x90),(156x198),(373x326) 26*26特征图上:(30x61),(62x45),(59x119) 52*52特征图上:(10x13),(16x30),(33x23)终于到V3了,最大的改进就是网络结构,使其更适合小目标检测特。先验框更丰富了,3种scale,每种3个规格,一共9种。征做的更细致,融入多持续特征图信息来预测不同规格物体。下采样通过stride为2实现。3种scale,更多先验框。
2025-03-13 10:14:29
564
原创 LOLOV1和YOLOV2
堆叠小的卷积核所需的参数更少一些,并且卷积过程越多,特征提取也会越细致,加入的非线性变换也随着增多,还不会增大权重参数个数,这就是VGG网络的基本出发点,用小的卷积核来完成体特征提取操作。faster-rcnn系列选择的先验比例都是常规的,但是不一定完全适合数据集。可能导致模型水土不服,V2训练时额外又进行了10次448*448的微调。tx=1,则将bbox在x轴向右移动wp;最后一层时感受野太大了,小目标可能丢失了,需融合之前的特征。这样会导致收敛问题,模型不稳定,尤其是刚开始进行训练的时候。
2025-03-12 16:48:32
626
原创 目标检测项目
COCO(JSON)格式:(Xmin, Ymin, W, H),其中x,y,w,h均不是归一化后的数值,分别代表左上角坐标和宽、高。VOC(XML)格式:(Xmin,Ymin,Xmax,Ymax)分别代表左上角和右下角的两个坐标。mean AP:每个类别所得到的AP的均值Average Precision:11点法、近似面积法。YOLO(TXT)格式:(x,y,w,h)分别代表中心点坐标和宽、高x,y,w,h均为归一化结果。候选框列表中的所有框依次与A计算IoU,删除大于阈值的候选框。
2025-03-11 10:29:01
711
原创 pytorch实现cifar10多分类总结
它包含了10个不同类别,每个类别有6000张图像,其中5000张用于训练,1000张用于测试。这10个类别分别为:飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船和卡车。1.数据加载及预处理(实现数据加载及预处理、归一化的理解、访问数据集、Dataset对象、Dataloader对象)CIFAR-10是一个常用的图像分类数据集,每张图片都是 3×32×32,3通道彩色图片,分辨率32×32。5.测试网络:部分数据集(实际的label)、部分数据集(预测的label)、整个测试集。
2025-03-10 16:44:10
473
原创 集成算法 机器学习
print("VGG16模型迭代" + str(ep) + "次的正确率为:" + str(correct/len(testloader)))print("epoch:" + str(ep) + "集成模型的正确率" + str(vote_correct/len(testloader)))print("模型" + str(idx) + "的正确率为:" + str(correct/len(testloader)))optimizer.zero_grad() #10个网络清除梯度。
2025-03-05 17:36:32
927
原创 图像分类项目
可以用来表示模型的精度,即模型识别正确的个数/样本的总个数。一般情况下,模型的精度越高,说明模型的效果越好。多类别分类模型各个类别之间的分类情况对于k分类问题,混淆矩阵为k*k的矩阵,元素Cij表示第i类样本被分类器判定为第j类的数量。准确率(Precision):又称为查准率,表示在模型识别为正类的样本中,真正为正类的样本所占的比例。主对角线的元素之和为正确分类的样本数,其余元素之和为错误分类的样本数。召回率(Recall):又称为查全率,表示模型正确识别出为正类的样本的数量占总的正类样本数量的比值。
2025-02-28 09:57:16
670
原创 pytorch数据处理工具箱(二)
如果是windows环境,要注意路径解析,如#tensorboard --logdir=r'D:\myboard\test\logs' --port 6006。cd到logs目录所在的同级目录,在命令行输入如下命令,logdir等式右边可以是相对路径或绝对路径。transforms提供了对PIL Image对象和Tensor对象的常用操作。transforms提供了对PIL Image对象和Tensor对象的常用操作。transforms提供了对PIL Image对象和Tensor对象的常用操作。
2025-02-27 14:28:01
668
原创 pytorch数据处理工具箱
DataLoader并不是迭代器,可以通过“iter”命令转换成迭代器。·_getitem_一次只能获取一个样本。2.DataLoader:可以批量处理。数据处在不同目录之下时会不方便!shuffle:是否将数据打乱。dataset:加载的数据集。batch_size:批大小。sampler:样本抽样。
2025-02-26 19:05:14
407
原创 Pytorch神经网络工具箱
残差块有两种,一种是正常的模块方式,将输入与输出相加,然后应用激活函数ReLU。另一种是为使输入与输出形状一致,需添加通过1×1卷积调整通道和分辨率。组合这两个模块得到现代经典RetNet18网络结构。2.使用nn.ModuleList模型容器。3.使用nn.ModuleDict模型容器。1.使用nn.Sequential模型容器。5.循环测试或验证模型。1.加载预处理数据集。
2025-02-25 18:31:37
427
原创 Pytorch神经网络工具箱
nn.Module,写法一般为nn.Xxx,如nn.Linear、nn.Conv2d、nn.CrossEntropyLoss等。nn.functional中的函数,写法一般为nn.funtional.xxx,如nn.funtional.linear、nn.funtional.conv2d、nn.funtional.cross_entropy等。继承nn.Module基类构建模型,又使用相关模型容器(nn.Sequential,nn.ModuleList,nn.ModuleDict等)进行封装。
2025-02-24 16:15:49
492
原创 卷积神经网络(二)
AlexNet的架构与LeNet相似,但使⽤了更多的卷积层和更多的参数来拟合大规模的ImageNet数据集。通过构建具有一定“深度”的模型,可以让模型来自动学习好的特征表示(从底层特征,到中层特征,再到高层特征),从而最终提升预测或识别的准确性。AlexNet由⼋层组成:五个卷积层、两个全连接隐藏层和一个全连接输出层。表示学习:如果有一种算法可以自动地学习出有效的特征,并提高最终机器学习模型的性能,那么这种学习就可以叫作表示学习。梯度爆炸:参数更新过大,破坏了模型的稳定收敛。卷积编码器:由两个卷积层组成;
2025-02-21 10:25:38
556
原创 卷积神经网络
在输入周围添加额外的行 / 列,用于控制输出特征图的空间维度,并保留输入特征图的边缘信息,通常填充元素是0。平移不变性:不管检测对象出现在图像中的哪个位置,神经网络的前面几层都应该对相同的图像区域具有相似的反应。局部性:神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远的区域的关系。目的是保留输入的特征,同时把数据量减小,进行计算的参数变少,会训练地更快。步幅是每次滑动核窗口时的行/列的步长,可以成倍的减少输出形状。填充在输入周围添加额外的行/列,增加输出的高度和宽度。
2025-02-20 10:09:38
401
原创 多层感知机
激活函数:刚才登场的h(x)函数会将输入信号的总和转换为输出信号,这种函数一般称为激活函数(activation function)。如“激活”一词所示,激活函数的作用在于决定如何来激活输入信号的总和。学习的过程:神经网络在外界输入样本的刺激下不断改变网络的连接权值乃至拓扑结构,以使网络的输出不断地接近期望的输出。(3) 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。S型(sigmoid)激活函数(挤压函数)将输入投影到(0,1)
2025-02-19 17:09:11
455
原创 线性回归和softmax回归
梯度指示的反向是各点处的函数值减小最多的方向,所以无法保证梯度所指的方向就是函数的最小值或者真正应该前进的方向。流程:在梯度法中,函数的取值从当前位置沿着梯度方向前进一定的距离,然后在新的方向重新求梯度,再沿着新梯度的方向前进,如此反复,不断的沿梯度方向前进。学习预测不相互排斥的类别的问题称为多标签分类(multi-label classification)一个样本(一个图片或者一个候选框)中含有多个物体,标注的label也是多个的,多个类间并不是互斥的,多选多比如:多目标检测、短视频分类。
2025-02-18 12:06:14
257
原创 机器学习中的关键组件
拥有越多数据的时候,工作就越容易。更多的数据可以被用来训练出更强大的模型,从而减少对预先设想假设的依赖。仅仅拥有海量的数据是不够的,还需要正确的数据。当我们获得了一些数据源及其表示、一个模型和一个合适的损失函数,接下来就需要一种算法,它能够搜索出最佳参数,以最⼩化损失函数。在机器学习中,我们需要定义模型的优劣程度的度量,这个度量在大多数情况是“可优化”的,这被称之为目标函数。过拟合:“学霸”,能够学习的模型参数很多,可以很好的预测已知参数。欠拟合:“学渣”,学习能力弱,不能很好的学习数据中的规律。
2025-02-17 18:11:49
644
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人