K-近邻算法之鸢尾花实例 使用Spark实现KNN的Demo

2023-10-30

1.1 K-近邻算法(KNN)概念

K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法

定义

如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

来源:KNN算法最早是由Cover和Hart提出的一种分类算法

距离公式
两个样本的距离可以通过如下公式计算,又叫欧式距离
在这里插入图片描述

1.3 KNN算法流程总结

1)计算已知类别数据集中的点与当前点之间的距离

2)按距离递增次序排序

3)选取与当前点距离最小的k个点

4)统计前k个点所在的类别出现的频率

5)返回前k个点出现频率最高的类别作为当前点的预测分类

自己的步骤:

1、未知点与所有样本点(已知分类的点)的距离
2、基于距离排序
3、取前K个点
4、基于label(分类的信息)做wordcount

2 小结

K-近邻算法简介【了解】
定义:就是通过你的"邻居"来判断你属于哪个类别
如何计算你到你的"邻居"的距离:一般时候,都是使用欧氏距离

案例:鸢尾花种类预测

Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。关于数据集的具体介绍:
在这里插入图片描述
TODO 优化点:arr.last arr.init
灵活使用数组的.last(取最后一个元素) 与 .init(取除了最后一个元素的所有元素)

package IrisKNN.teacher

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * Created by Shi shuai RollerQing on 2019/12/30 16:23
 * 鸢尾花例子
 * KNN 算法
 */
object KNNDemo {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("KNNDemo").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val K = 9
    //1.转换为样例类
    val lines = sc.textFile("C:\\Users\\HP\\IdeaProjects\\sparkCore\\data\\iris.dat")
      .map{line=>
        val fields = line.split(",")
        if (fields.length == 5) LabeledPoint(fields.last, fields.init.map(_.toDouble))
        else LabeledPoint("", fields.map(_.toDouble))//没有label的将label置为空 也换为LabeledPoint样例类
      }
    //2.分类 分为数据集(已知label的)和测试集(未知的)  将没有label的转换为数组即可 方便做外层循环
    val sampleRDD: RDD[LabeledPoint] = lines.filter(_.label != "")
    val testData: Array[Array[Double]] = lines.filter(_.label == "").map(_.point).collect()

    //小表在外面 相当于join 小表在右边
    testData.foreach(point => {
      sampleRDD.map(labeledpoint => {
        (labeledpoint.label, getDistance(point, labeledpoint.point)) //第一个参数是已知点标签 第二个参数是已知点和未知点距离
      }).sortBy(_._2) //排序
        .take(K) //取前9个
        .map{case (label, _) => label} // 然后第二个参数距离就没啥用了 只取label 做WordCount
        .groupBy(x=>x)
        .mapValues(_.length)
        .foreach(print)
    })

    sc.stop()
  }
  import scala.math._
  def getDistance(x: Array[Double], y: Array[Double]): Double = // x y 都是有4个点的数组
    sqrt(x.zip(y).map(elem => pow(elem._1 - elem._2, 2)).sum)
  //使用zip拉链合起来 结果就像是((x1,y1), (x2, y2),(x3, y3),(x4, y4)) 4个元组
  // 每个元组的差的平方 的 和 再sqrt开方 就是距离

}
// 样例类 先存标签 然后四个数用一个数组存起来 因为这四个数合起来才表示一个点 一个坐标
case class LabeledPoint(label: String, point:Array[Double])

思路 贼简单,距离、排序、前K个、基于label做WordCount


预期结果
5.3,3.7,1.5,0.2,setosa
5,3.3,1.4,0.2,setosa
5.1,2.5,3,1.1,versicolor
5.7,2.8,4.1,1.3,versicolor
6.2,3.4,5.4,2.3,virginica
5.9,3,5.1,1.8,virginica
实际结果:
ArrayBuffer(5.3, 3.7, 1.5, 0.2) List((setosa,9))
ArrayBuffer(5.0, 3.3, 1.4, 0.2) List((setosa,9))
ArrayBuffer(5.1, 2.5, 3.0, 1.1) List((versicolor,9))
ArrayBuffer(5.7, 2.8, 4.1, 1.3) List((versicolor,9))
ArrayBuffer(6.2, 3.4, 5.4, 2.3) List((virginica,9))
ArrayBuffer(5.9, 3.0, 5.1, 1.8) List((virginica,7))
结果没错
在这里插入图片描述

问题:

在重新敲代码遇到了下面的问题
好像是scala的语法? 没学好不太清楚

TODO: 这里注意 使用groupBy(_) 它的返回值不对  
最好还是写成这样吧groupBy(x => x)

 val functionToMap:   (String => Nothing) => Map[Nothing, Array[String]] = strings.groupBy(_)
 val stringToStrings: Map[String, Array[String]]                         = strings.groupBy(x =>x)

在这里插入图片描述

最开始自己敲得代码
package IrisKNN

import java.util

import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{Dataset, SparkSession}
import org.apache.spark.{SparkConf, SparkContext}

/**
 * Created by Shi shuai RollerQing on 2019/12/27 14:12
 *
 * 6.5,3,5.2,2,virginica
 * 6.2,3.4,5.4,2.3
 *
 * 数组Array不能作为key 貌似List是可以的
 *
 * 1.数组不能作为key HashPartitioner cannot partition array keys
 * 2.任务不能被序列化
 * 3.RDD不能被嵌套
 */
//1、未知点与所有样本点(已知分类的点)的距离
//2、基于距离排序
//3、取前K个点
//4、基于label(分类的信息)做wordcount
// k = 9
// 距离 (x1 - x2 )^ 2 + (y1 - y2 )^ 2
case class known(x: Double, y: Double, z: Double, w: Double, label: String)
case class unknown(x: Double, y: Double, z: Double, w: Double)
case class disLab(distance: Double, label: String)
object IrisTest {
  def main(args: Array[String]): Unit = {
    val path = "C:\\Users\\HP\\IdeaProjects\\sparkCore\\data\\iris.dat"
    val k: Int = 9
    //SparkSession
    val spark = SparkSession
      .builder
      .appName(IrisTest.getClass.getSimpleName)
      .master("local[*]")
      .getOrCreate()

    val sc: SparkContext = spark.sparkContext
    val data: RDD[String] = sc.textFile(path)

    val arr: RDD[Array[String]] = data.map(line => line.split(","))

    import spark.implicits._

    val knownDataSet: Dataset[known] = arr.filter(_.length > 4).map(t => known(t(0).toDouble, t(1).toDouble,t(2).toDouble,t(3).toDouble,t(4))).toDS
    val unknownDataSet: Dataset[unknown] = arr.filter(_.length <= 4).map(t => unknown(t(0).toDouble, t(1).toDouble, t(2).toDouble, t(3).toDouble)).toDS
    val unknowns: util.List[unknown] = unknownDataSet.collectAsList()


    import scala.collection.JavaConversions._
    for (unknownItem <- unknowns) {
      //1、未知点与所有样本点(已知分类的点)的距离  (((1, x) (2, y) (3, z) (4, w)), label)
      val distanceAndLabel: Dataset[disLab] = knownDataSet.map(known => {
       val ping = math.pow((known.x - unknownItem.x), 2.0) + math.pow((known.y - unknownItem.y), 2.0)
        + math.pow((known.z - unknownItem.z), 2.0) + math.pow((known.w - unknownItem.w), 2.0)
        val label = known.label

        val distance: Double = scala.math.sqrt(ping)
        disLab(distance, label)
      })
      //distanceAndLabel.foreach(rdd => println(rdd))
      //2、基于距离排序
      val sorted: Dataset[disLab] = distanceAndLabel.sort($"distance")
      //3、取前K个点
      val tuples: Array[disLab] = sorted.take(k)
      //4、基于label(分类的信息)做wordcount
      val grouped: Map[String, Array[disLab]] = tuples.groupBy(_.label)
      //grouped.map(x => (x._1, x._2.size))
      val sumed: Map[String, Int] = grouped.mapValues(x => x.size)
      //取最多的标签
      val res = sumed.toList.sortBy(_._2).reverse.take(1).map(_._1).toArray
      //结果就是
      println(unknownItem.toString + "\t" + res(0))
    }


  }
}
//预期结果
//5.3,3.7,1.5,0.2,setosa
//5,3.3,1.4,0.2,setosa
//5.1,2.5,3,1.1,versicolor
//5.7,2.8,4.1,1.3,versicolor
//6.2,3.4,5.4,2.3,virginica
//5.9,3,5.1,1.8,virginica
//实际结果
//unknown(5.3,3.7,1.5,0.2)	setosa
//unknown(5.0,3.3,1.4,0.2)	setosa
//unknown(5.1,2.5,3.0,1.1)	versicolor
//unknown(5.7,2.8,4.1,1.3)	versicolor
//unknown(6.2,3.4,5.4,2.3)	virginica
//unknown(5.9,3.0,5.1,1.8)	versicolor

测试数据

5.1,3.5,1.4,0.2,setosa
4.9,3,1.4,0.2,setosa
4.7,3.2,1.3,0.2,setosa
4.6,3.1,1.5,0.2,setosa
5,3.6,1.4,0.2,setosa
5.4,3.9,1.7,0.4,setosa
4.6,3.4,1.4,0.3,setosa
5,3.4,1.5,0.2,setosa
4.4,2.9,1.4,0.2,setosa
4.9,3.1,1.5,0.1,setosa
5.4,3.7,1.5,0.2,setosa
4.8,3.4,1.6,0.2,setosa
4.8,3,1.4,0.1,setosa
4.3,3,1.1,0.1,setosa
5.8,4,1.2,0.2,setosa
5.7,4.4,1.5,0.4,setosa
5.4,3.9,1.3,0.4,setosa
5.1,3.5,1.4,0.3,setosa
5.7,3.8,1.7,0.3,setosa
5.1,3.8,1.5,0.3,setosa
5.4,3.4,1.7,0.2,setosa
5.1,3.7,1.5,0.4,setosa
4.6,3.6,1,0.2,setosa
5.1,3.3,1.7,0.5,setosa
4.8,3.4,1.9,0.2,setosa
5,3,1.6,0.2,setosa
5,3.4,1.6,0.4,setosa
5.2,3.5,1.5,0.2,setosa
5.2,3.4,1.4,0.2,setosa
4.7,3.2,1.6,0.2,setosa
4.8,3.1,1.6,0.2,setosa
5.4,3.4,1.5,0.4,setosa
5.2,4.1,1.5,0.1,setosa
5.5,4.2,1.4,0.2,setosa
4.9,3.1,1.5,0.2,setosa
5,3.2,1.2,0.2,setosa
5.5,3.5,1.3,0.2,setosa
4.9,3.6,1.4,0.1,setosa
4.4,3,1.3,0.2,setosa
5.1,3.4,1.5,0.2,setosa
5,3.5,1.3,0.3,setosa
4.5,2.3,1.3,0.3,setosa
4.4,3.2,1.3,0.2,setosa
5,3.5,1.6,0.6,setosa
5.1,3.8,1.9,0.4,setosa
4.8,3,1.4,0.3,setosa
5.1,3.8,1.6,0.2,setosa
4.6,3.2,1.4,0.2,setosa
5.3,3.7,1.5,0.2
5,3.3,1.4,0.2
7,3.2,4.7,1.4,versicolor
6.4,3.2,4.5,1.5,versicolor
6.9,3.1,4.9,1.5,versicolor
5.5,2.3,4,1.3,versicolor
6.5,2.8,4.6,1.5,versicolor
5.7,2.8,4.5,1.3,versicolor
6.3,3.3,4.7,1.6,versicolor
4.9,2.4,3.3,1,versicolor
6.6,2.9,4.6,1.3,versicolor
5.2,2.7,3.9,1.4,versicolor
5,2,3.5,1,versicolor
5.9,3,4.2,1.5,versicolor
6,2.2,4,1,versicolor
6.1,2.9,4.7,1.4,versicolor
5.6,2.9,3.6,1.3,versicolor
6.7,3.1,4.4,1.4,versicolor
5.6,3,4.5,1.5,versicolor
5.8,2.7,4.1,1,versicolor
6.2,2.2,4.5,1.5,versicolor
5.6,2.5,3.9,1.1,versicolor
5.9,3.2,4.8,1.8,versicolor
6.1,2.8,4,1.3,versicolor
6.3,2.5,4.9,1.5,versicolor
6.1,2.8,4.7,1.2,versicolor
6.4,2.9,4.3,1.3,versicolor
6.6,3,4.4,1.4,versicolor
6.8,2.8,4.8,1.4,versicolor
6.7,3,5,1.7,versicolor
6,2.9,4.5,1.5,versicolor
5.7,2.6,3.5,1,versicolor
5.5,2.4,3.8,1.1,versicolor
5.5,2.4,3.7,1,versicolor
5.8,2.7,3.9,1.2,versicolor
6,2.7,5.1,1.6,versicolor
5.4,3,4.5,1.5,versicolor
6,3.4,4.5,1.6,versicolor
6.7,3.1,4.7,1.5,versicolor
6.3,2.3,4.4,1.3,versicolor
5.6,3,4.1,1.3,versicolor
5.5,2.5,4,1.3,versicolor
5.5,2.6,4.4,1.2,versicolor
6.1,3,4.6,1.4,versicolor
5.8,2.6,4,1.2,versicolor
5,2.3,3.3,1,versicolor
5.6,2.7,4.2,1.3,versicolor
5.7,3,4.2,1.2,versicolor
5.7,2.9,4.2,1.3,versicolor
6.2,2.9,4.3,1.3,versicolor
5.1,2.5,3,1.1
5.7,2.8,4.1,1.3
6.3,3.3,6,2.5,virginica
5.8,2.7,5.1,1.9,virginica
7.1,3,5.9,2.1,virginica
6.3,2.9,5.6,1.8,virginica
6.5,3,5.8,2.2,virginica
7.6,3,6.6,2.1,virginica
4.9,2.5,4.5,1.7,virginica
7.3,2.9,6.3,1.8,virginica
6.7,2.5,5.8,1.8,virginica
7.2,3.6,6.1,2.5,virginica
6.5,3.2,5.1,2,virginica
6.4,2.7,5.3,1.9,virginica
6.8,3,5.5,2.1,virginica
5.7,2.5,5,2,virginica
5.8,2.8,5.1,2.4,virginica
6.4,3.2,5.3,2.3,virginica
6.5,3,5.5,1.8,virginica
7.7,3.8,6.7,2.2,virginica
7.7,2.6,6.9,2.3,virginica
6,2.2,5,1.5,virginica
6.9,3.2,5.7,2.3,virginica
5.6,2.8,4.9,2,virginica
7.7,2.8,6.7,2,virginica
6.3,2.7,4.9,1.8,virginica
6.7,3.3,5.7,2.1,virginica
7.2,3.2,6,1.8,virginica
6.2,2.8,4.8,1.8,virginica
6.1,3,4.9,1.8,virginica
6.4,2.8,5.6,2.1,virginica
7.2,3,5.8,1.6,virginica
7.4,2.8,6.1,1.9,virginica
7.9,3.8,6.4,2,virginica
6.4,2.8,5.6,2.2,virginica
6.3,2.8,5.1,1.5,virginica
6.1,2.6,5.6,1.4,virginica
7.7,3,6.1,2.3,virginica
6.3,3.4,5.6,2.4,virginica
6.4,3.1,5.5,1.8,virginica
6,3,4.8,1.8,virginica
6.9,3.1,5.4,2.1,virginica
6.7,3.1,5.6,2.4,virginica
6.9,3.1,5.1,2.3,virginica
5.8,2.7,5.1,1.9,virginica
6.8,3.2,5.9,2.3,virginica
6.7,3.3,5.7,2.5,virginica
6.7,3,5.2,2.3,virginica
6.3,2.5,5,1.9,virginica
6.5,3,5.2,2,virginica
6.2,3.4,5.4,2.3
5.9,3,5.1,1.8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

K-近邻算法之鸢尾花实例 使用Spark实现KNN的Demo 的相关文章

  • dolphinschedule使用shell任务结束状态研究

    背景 配置的dolphin任务 使用的是shell shell里包含了spark submit 如下截图 dolphin shell 介绍完毕 开始说明现象 有天有人调整了集群的cdp配置 executor cores max 1 我之前这
  • 基于Python爬虫+KNN数字验证码识别系统——机器学习算法应用(含全部工程源码)+训练数据集

    目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 Python 环境 模块实现 1 数据爬取 2 去噪与分割 3 模型训练及保存 4 准确率验证 系统测试 工程源代码下载 其它资料下载 前言 本项目利用Python爬虫技术 通过网
  • spark算子执行位置研究,driver端?executor端?

    参考资料 https cloud tencent com developer article 1545723 前言 spark算子的执行位置 driver端 还是executor端 这些之前其实没有注意过 最近在学流处理 发现这个还是很重要
  • Spark SQL 之 Temporary View

    Spark SQL 之 Temporary View spark SQL的 temporary view 是支持原生SQL 的方式之一 spark SQL的 DataFrame 和 DataSet 均可以通过注册 temporary vie
  • 【Spark NLP】第 7 章:分类和回归

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 记一次Spark打包错误:object java.lang.Object in compiler mirror

    使用maven compile和package 一直报错scala reflect internal MissingRequirementError object scala runtime in compiler mirror not f
  • Hudi和Kudu的比较

    与Kudu相比 Kudu是一个支持OLTP workload的数据存储系统 而Hudi的设计目标是基于Hadoop兼容的文件系统 如HDFS S3等 重度依赖Spark的数据处理能力来实现增量处理和丰富的查询能力 Hudi支持Increme
  • spark_hadoop集群搭建自动化脚本

    bin bash 脚本使用说明 1 使用脚本前需要弄好服务器的基础环境 2 在hadoop的每个节点需要手动创建如下目录 data hdfs tmp 3 修改下面的配置参数 4 脚本执行完备后需要收到格式化namenode
  • Spark 【分区与并行度】

    RDD 并行度和分区 SparkConf setMaster local 我们在创建 SparkContext 对象时通常会指定 SparkConf 参数 它包含了我们运行时的配置信息 如果我们的 setMaster 中的参数是 local
  • Spark学习(文件读取路径)

    在不同的启动模式下 加载文件时的路径写法是不一样的 对于local模式下 默认就是读取本地文件 而在standlone或者yarn client 或者cluster模式下 默认读的都是hdfs文件系统 这几种模式下很难读取本地文件 这是很显
  • 大数据手册(Spark)--Spark基本概念

    文章目录 Spark 基本概念 Hadoop 生态 Spark 生态 Spark 基本架构 Spark运行基本流程 弹性分布式数据集 RDD Spark安装配置 Spark基本概念 Spark基础知识 PySpark版 Spark机器学习
  • 【硬刚大数据之学习路线篇】2021年从零到大数据专家的学习指南(全面升级版)

    欢迎关注博客主页 https blog csdn net u013411339 本文由 王知无 原创 首发于 CSDN博客 本文首发CSDN论坛 未经过官方和本人允许 严禁转载 欢迎点赞 收藏 留言 欢迎留言交流 声明 本篇博客在我之前发表
  • Spark Sql之dropDuplicates去重

    文章目录 算子介绍 示例 问题 解决 dropDuplicates和distinct 参考 算子介绍 dropDuplicates去重原则 按数据行的顺序保留每行数据出现的第一条 dropDuplicates 在Spark源码里面提供了以下
  • python+django基于Spark的国漫画推荐系统 可视化大屏分析

    国漫推荐信息是现如今社会信息交流中一个重要的组成部分 本文将从国漫推荐管理的需求和现状进行分析 使得本系统的设计实现具有可使用的价 做出一个实用性好的国漫推荐系统 使其能满足用户的需求 并可以让用户更方便快捷地国漫推荐 国漫推荐系统的设计开
  • SKLearn 中具有类别权重的 KNN [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 是否可以在 SKLearn 中定义 K 最近邻分类器的类权重 我查看了API 但无法解决 我有一个 knn 问题 它的类
  • np 数组之间的欧氏距离

    我有两个 numpy 数组 a 和 b a 和 b 的尺寸相同 a 的尺寸可以与 b 的尺寸不同 例如 a 1 2 5 7 b 3 8 4 7 9 15 有没有一种简单的方法来计算 a 和 b 之间的欧几里得距离 以便这个新数组可以在 k
  • 查找到另一组任意点的范围内的所有点

    我有两组点A and B 我想找到所有点B是在一定范围内的r to A 其中一点b in B据说在范围内r to A如果至少有一个点a in A其 欧几里得 距离b等于或小于r 两组点中的每一个都是连贯的点集 它们是根据两个不重叠对象的体素
  • 从距离矩阵开始查找 K 个最近邻

    我正在寻找一个接受良好优化的函数n X n距离矩阵并返回n X k矩阵的索引k第 i 行中第 i 个数据点的最近邻居 我发现了无数的不同R可以让您执行 KNN 的软件包 但它们似乎都在同一函数中包含距离计算和排序算法 特别是 对于大多数例程
  • 在SURF中使用欧几里德距离

    在我的代码中 我根据最近邻距离比过滤好图像 如下所示 for int i 0 i lt min des image rows 1 int matches size i if matches i 0 distance lt 0 6 match
  • 在 R 中使用 k-NN 和分类值

    我希望对主要具有分类特征的数据进行分类 为此 欧几里得距离 或任何其他数值假设距离 不适合 我正在寻找 R 的 kNN 实现 其中可以选择不同的距离方法 例如汉明距离 有没有一种方法可以使用常见的 kNN 实现 例如具有不同距离度量函数的

随机推荐

  • C++初始化类的对象错误,表达式必须具有类类型,但它具有类型 “类名(*)()“

    如果时创建类的对象的时候 调用了一个无参构造 那么这时候的括号 主函数的创建类的对象的括号 就不要写啦
  • 目标检测(object detection)

    目标检测 目标检测 目标检测的任务 R CNN 目标检测 Overfeat模型 SPPNet Fast R CNN Faster R CNN YOLO介绍 YOLOV2 YOLOV3 SSD算法原理 目标检测 目标检测的任务是找出图像中所感
  • Java技术小册(核心篇)

    核心篇 数据存储 MySQL 索引使用 的注意事项 说说反模式设计 说说分库与分表设计 分库与分表带来的分布式困境与应对之策 说说SQL优化之道 MySQL遇到的死锁问题 存储引擎的 lnnoDB 与 MyISAM 数据库索引的原理 为什么
  • [W pthreadpool-cpp.cc:90] Warning: Leaking Caffe2 thread-pool after fork. (function pthreadpool)

    问题 报了warning W pthreadpool cpp cc 90 Warning Leaking Caffe2 thread pool after fork function pthreadpool 并且进程自动停止了 解决 num
  • STM32单片机PID控制数控恒流源-100mA~+100mA输出正负恒流源

    实践制作DIY GC0079 PID控制数控恒流源 一 功能说明 基于STM32单片机设计 PID控制数控恒流源 功能介绍 STM32F103C系列最小系统板 LCD1602显示器 MCP4725 12位DAC MCP3201 12位ADC
  • Centos搭建ftp服务器

    目录 ftp是什么 搭建ftp服务器目的 检查安装vsftpd软件 创建用户 创建用户并指定用户目录 ftp是什么 FTP是 File Transfer Protocol 文件传输协议的英文名称 用于在Internet上控制文件的双向传输
  • [Vue warn]: Failed to resolve directive: Show

    Vue warn Failed to resolve directive Show 1 错误截图 2 错误分析 3 此类问题解决办法 1 错误截图 2 错误分析 1 根据报错的文件路径我们肯定定位到 对应的文件发生报错 2 奇怪的是 程序的
  • 【华为OD机试真题 C语言】45、 分糖果

    文章目录 一 题目 题目描述 输入输出 样例1 二 思路参考 三 代码参考 作者 鲨鱼狼臧 个人博客首页 鲨鱼狼臧 专栏介绍 2023华为OD机试真题 使用C语言进行解答 专栏每篇文章都包括真题 思路参考 代码分析 订阅有问题后续可与博主解
  • moment以及dayjs(获取当前日期等相关写法)

    moment 1 使用moment获取今天 moment格式 const start moment startOf day const end moment endOf day 日期格式 const start moment startOf
  • “该微信号已经绑定了50个小程序,不可继续绑定”,如何自助解绑

    微信上搜索并关注公众号 公众平台安全助手 左下角的菜单 绑定查询 可查询到 公众号 小程序 开放平台 中绑定的信息 只要不是管理员身份 均可以自己点击进行解绑
  • C语言课程设计大作业——学生成绩管理系统详细(含实验报告内容)

    写在前面 欢迎来到 发奋的小张 的博客 我是小张 一名普通的在校大学生 在学习之余 用博客来记录我学习过程中的点点滴滴 也希望我的博客能够更给同样热爱学习热爱技术的你们带来收获 希望大家多多关照 我们一起成长一起进步 也希望大家多多支持我鸭
  • Sherman-Morrison-Woodbury公式的证明

    首先证明Sherman Morrison公式 A uvT 1 A 1 A 1u 1 vTA 1u 1vTA 1 1 其中 A Rn n非奇异 即A 1存在 u Rn v Rn SM公式看似复杂 但可以通过求解以下线性方程组来推导出来 A u
  • 《金融工程》

    金融工程包括各种创新性金融工具和金融工序的涉及 开发 实施 以及对解决金融问题的各种创造性方案的设计 对各种金融工具的基础介绍 概念性金融工具 投资组合理论 资本结构理论 资本资产定价的CAPM模型 有效市场理论 期权定价理论 套利定价理论
  • 基本路径测试法(一看就懂)

    基本路径测试就是在程序控制流图的基础上 通过分析控制构造的环形复杂性 导出基本可行路径集合 从而设计测试用例的方法 基本路径测试具体方法如下 对复杂性程度高的程序做到覆盖所有路径 测试所有可执行路径 是不可能的 根据独立路径概念 某一程序的
  • 图解实时操作系统和非实时操作系统的区别

    转自 http blog csdn net u013752202 article details 53649047 对于实时操作系统 RTOS 和非实时操作系统 你能分别列举出来多少 实时操作系统 uCOS VxWorks RTLinux
  • IDEA构建spring源码

    1 下载spring源码 https github com spring projects spring framework 在tags中选择release 稳定 版本 我下载的是 spring framework 5 2 21 RELEA
  • @NotNull、@NotEmpty、@NotBlank注解用到的依赖

    参考案例 Web环境 才生效 https blog csdn net Aku 2020 article details 125413830 1 NotNull NotEmpty NotBlank注解用到的依赖
  • JAVA 中进行网络通信时 两端 序列化对象的类所处的包名必须一致

    RT 比如说客户端和服务器通过ObjectInputs和ObjectOutputSream通信时 他们序列化的对象a 所属的类A java 这个类的包名在客户端和服务器上必须一致 类也必须是同一个 只是同名还不行 否则会报很奇怪的错误 比如
  • [UE4]UImage控件异步加载资源并设置图片内容

    UE 异步加载是指在 Unreal Engine 中使用异步加载技术 使得游戏对象 比如静态网格 贴图 声音等 可以在不影响游戏运行的情况下逐步加载 这种方式可以优化游戏性能和降低内存占用 提高游戏的流畅度和稳定性 自定义Image控件实现
  • K-近邻算法之鸢尾花实例 使用Spark实现KNN的Demo

    1 1 K 近邻算法 KNN 概念 K Nearest Neighbor算法又叫KNN算法 这个算法是机器学习里面一个比较经典的算法 总体来说KNN算法是相对比较容易理解的算法 定义 如果一个样本在特征空间中的k个最相似 即特征空间中最邻近