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 的相关文章

  • SparkSQL HiveSQL 常用正则表达式

    SparkSQL HiveSQL 常用正则表达式 目录 SparkSQL HiveSQL 常用正则表达式 1 匹配汉字 2 匹配手机号码 3 匹配身份证 4 SparkSQL HiveSQL 常用正则函数 5 SparkSQL 分组 聚合
  • 大数据相关常用软件下载地址集锦

    文章目录 每日一句正能量 前言 一 软件下载地址如下 二 文档地址如下 结语 每日一句正能量 生命中有一些人与我们擦肩了 却来不及遇见 遇见了 却来不及相识 相识了 却来不及熟悉 熟悉了 却还是要说再见 前言 由于大数据开发中经常需要用到Z
  • 基于Spark的电商用户行为实时分析可视化系统(Flask-SocketIO)

    基于Spark的电商用户行为实时分析可视化系统 Flask SocketIO 项目简介 该项目已上线蓝桥课程 有需要的可凭邀请码 UB5mdLbl 学习哦 有优惠 课程地址 https www lanqiao cn courses 2629
  • spark_hadoop集群搭建自动化脚本

    bin bash 脚本使用说明 1 使用脚本前需要弄好服务器的基础环境 2 在hadoop的每个节点需要手动创建如下目录 data hdfs tmp 3 修改下面的配置参数 4 脚本执行完备后需要收到格式化namenode
  • 11.Linux下Spark的安装配置以及spark-shell的启动和 Spark集群环境搭建

    本案例软件包 链接 https pan baidu com s 1zABhjj2umontXe2CYBW DQ 提取码 1123 若链接失效在下面评论 我会及时更新 目录 1 安装Spark 1 先用xftp将安装包传到home hadoo
  • 【硬刚大数据之学习路线篇】2021年从零到大数据专家的学习指南(全面升级版)

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

    2 3 9版本Hive的支持 直接在实例化SparkSession时 启用hive支持即可 例如 val spark SparkSession builder appName Spark Hive Example config spark
  • 通过yarn提交作业到spark,运行一段时间后报错。

    加粗样式
  • sparkstreamming 消费kafka(1)

    pom
  • JAVA 安装与简单使用

    JAVA简易安装 下载安装 环境变量 进入变量界面 设置变量 验证JAVA环境 运行Java程序 个人站 ghzzz cn 还在备案 很快就能访问了 下载安装 第一步当然是从官网下载安装java了 网上有很多的教程 这里简单的写一下 在这里
  • 两个表之间最近点的唯一分配

    In my Postgres 9 5数据库与邮政地理信息系统2 2 0安装后 我有两个带有几何数据 点 的表 我想将一个表中的点分配给另一个表中的点 但我不想要buildings gid被分配两次 只要一buildings gid已分配 不
  • 泡菜懒惰学习者

    Pickle 是否为像 KNeighborsClassifier 这样的懒惰学习者保存来自 scikit 的训练数据 如果是这样 我们可以从 pickle 对象访问这些数据吗 询问数据隐私问题 Eg knn fit Xtrain Ytrai
  • R 中的 Knn 回归

    我正在研究 Knn 回归方法和后来的核平滑 我希望使用 R 中的绘图来演示这些方法 我使用以下代码生成了一个数据集 x runif 100 0 pi e rnorm 100 0 0 1 y sin x e 我一直在尝试遵循 9 2 中如何使
  • 问:R 中的 KNN——奇怪的行为

    有谁知道为什么下面的 KNN R 代码对不同的种子给出不同的预测 这很奇怪 因为 Kpost library class set seed 642002713 m 20 n 1000 from 2 30 to from train matr
  • 阿里技术官亲笔力作:Kafka限量笔记,一本书助你掌握Kafka的精髓

    前言 分布式 堪称程序员江湖中的一把利器 无论面试还是职场 皆是不可或缺的技能 而Kafka 这款分布式发布订阅消息队列的璀璨明珠 其魅力之强大 无与伦比 对于Kafka的奥秘 我们仍需继续探索 要论对Kafka的熟悉程度 恐怕阿里的大佬们
  • 使用 TF-IDF 分数进行文本分类的 KNN

    我有一个 CSV 文件 corpus csv 其中包含语料库中以下格式的分级摘要 文本 Institute Score Abstract UoM 3 0 Hello this is abstract one UoM 3 2 Hello th
  • spark相关

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • K 最近邻算法 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 使用 KNN 算法 假设 k 5 现在我尝试通过获取 5 个最近的邻居来对未知对象进行分类 如果确定 4 个最近邻居后 接下来的 2 个
  • 查找到另一组任意点的范围内的所有点

    我有两组点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 的软件包 但它们似乎都在同一函数中包含距离计算和排序算法 特别是 对于大多数例程

随机推荐

  • 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个最相似 即特征空间中最邻近