算法小白的第一次尝试---Kmeans (适用于任何维度数据)

Kmeans聚类算法 python sklearn 用户画像 1、基本概念; 聚类分析简称聚类(clustering),是一个把数据集划分成子集的过程,每一个子集是一个簇(cluster),使得簇中的样本彼此相似,但与其他簇中的样本不相似。 聚类分析不需要事先知道样本的类别,甚至不用知道类别个数,因此它是一种典型的无监督学习算法,一般用于数据探索,比如群组发现和离群点检测,还可以作为其他算法的预处理步骤。 在工作中遇到用户画像、群组划分问题 阅读详情
import org.apache.log4j.{Level, Logger}
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.sql.types._
import org.apache.spark.sql.{DataFrame, Row, SparkSession}
import scala.collection.mutable.ArrayBuffer
import scala.util.Random
/**
  * @author XiaoTangBao
  * @date 2019/3/17 23:02
  * @version 1.0
  */
object Kmeans2 {
  def main(args: Array[String]): Unit = {
    //屏蔽登录日志
    Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
    val sparkSession = SparkSession.builder().master("local[4]").appName("Kmeans").getOrCreate()
    val sc = sparkSession.sparkContext
    //测试数据为西瓜数据集4.0
    val data = sc.textFile("G:\\mldata\\watermelon 4.0.txt").map(line => line.split(',')).map(arr => (Row(arr(0).toInt,arr(1).toDouble,arr(2).toDouble)))
    val schema = StructType(List(StructField("Label",IntegerType,true),StructField("density",DoubleType,true),StructField("sugarContent",DoubleType,true)))
    val featuresArr = Array("density","sugarContent")

    //测试数据集为鸢尾花数据集  UCI连接:http://archive.ics.uci.edu/ml/datasets/Iris
//    val data = sc.textFile("G:\\mldata\\iris.txt").map(line => line.split('|')).map(arr => (Row(arr(4),arr(0).toDouble,arr(1).toDouble,arr(2).toDouble,arr(3).toDouble)))
//    val schema = StructType(List(StructField("Label",StringType,true),
//      StructField("sepal_len",DoubleType,true), StructField("sepal_width",DoubleType,true),
//      StructField("petal_len",DoubleType,true),StructField("petal_width",DoubleType,true)))
//    val featuresArr = Array("sepal_len","sepal_width","petal_len","petal_width")

    //转化为DataFrame(label,featuresCol)
    val df = sparkSession.sqlContext.createDataFrame(data,schema)
    //定义转换器
    val vectorAssmeb = new VectorAssembler().setInputCols(featuresArr).setOutputCol("features")
    //转化数据
    val newdf = vectorAssmeb.transform(df).select("Label","features")
    //定义初始簇数
    val K_number = 3
    //定义最大迭代次数
    val iteratorMax = 10000
    val result = k(newdf,K_number,iteratorMax)
    //输出最终的结果
    for(i<-0 until K_number){
      println("第" + i +"簇聚类结果:" )
      result(i).foreach(println(_))
    }
  }

  //计算每个样本所属的簇
  def cal(data:Vector[Double],meanVectors:Array[Vector[Double]]):(Double,Int) ={
    //disArr存储数据为:(dis,label)
    val disArr = ArrayBuffer[(Double,Int)]()
    //计算每个点与簇均值向量的距离
    for(i<- 0 until meanVectors.length){
      var dis = 0.0
      for(j<-0 until data.length){
        dis += math.pow((data(j) - meanVectors(i)(j)),2)
      }
      disArr.append((dis,i))
    }
    //leastdis代表最小距离
    val leastdis = disArr.sortBy(tuple => tuple._1).take(1)(0)
    leastdis
  }

  //更新均值向量
  def reflash(Ck:ArrayBuffer[Vector[Double]],meanVector:Vector[Double],dimentions:Int)={
    //每个维度都需要更新
    val dimentionsArr = ArrayBuffer[Double]()
    //初始化纬度数组
    for(i<-0 until dimentions) dimentionsArr.append(0.0)
    for(i<-0 until meanVector.length) {
      for(j<-0 until Ck.length){
        dimentionsArr(i) += Ck(j)(i)
      }
    }
    for(i<-0 until dimentionsArr.length) dimentionsArr(i) = dimentionsArr(i) / Ck.length

    val newmeanVector = dimentionsArr.toVector
    if(newmeanVector == meanVector) (meanVector,false) else (newmeanVector,true)
  }

  /**
    * Kmeans
    * @param  df  DataFrame(Label,FeaturesCol)
    * @param K  the number of clusters
    * @param iteratorMax  the Max number of interations
    * @return  the result of the Kmeans
    */
  def k(df:DataFrame,K:Int,iteratorMax:Int)={
    val trainData = df.select("features").rdd.map(row => row.toString())
      .map(str => str.replace('[',' '))
      .map(str => str.replace(']',' '))
      .map(str => str.trim()).map(str => str.split(','))
      .map(arr => arr.map(str => str.toDouble))
      .collect()
    //特征维度
    val dimensions = trainData(0).length
    //初始化均值向量
    val meanVectors = ArrayBuffer[Vector[Double]]()
    //确保初始化时,没有相同的向量
    val rn = ArrayBuffer[Int]()
    var flag_mean = true
    while(flag_mean){
      val index = Random.nextInt(trainData.length-1)
      if(!rn.contains(index)){
        rn.append(index)
        meanVectors.append(trainData(index).toVector)
      }
      if(meanVectors.length == K) flag_mean = false
    }
    val iniCk = new Array[ArrayBuffer[Vector[Double]]](K)
    for(j<-0 until K){
      iniCk(j) = ArrayBuffer(Vector(0.0))
      iniCk(j).clear()
    }
    var iteratornum = -1
    var flag = true
    while(flag){
      //迭代计数器
      iteratornum += 1
      for(i<-0 until trainData.length){
        //将样本划分到对应的簇中
        var flag2 = true
        val leastdis = cal(trainData(i).toVector,meanVectors.toArray)
        for(j<-0 until K if flag2){
          if(leastdis._2 == j){
            iniCk(j).append(trainData(i).toVector)
            flag2 = false
          }
        }
      }
      //判断向量是否更新
      val vectorArr = ArrayBuffer[(Vector[Double],Boolean)]()
      //更新均值向量
      for(i<-0 until meanVectors.length){
        vectorArr.append(reflash(iniCk(i),meanVectors(i),dimensions))
      }
     for(i<-0 until meanVectors.length) meanVectors(i) = vectorArr(i)._1
      val boolArr = ArrayBuffer[Boolean]()
      for (bool<- vectorArr){
        if(!bool._2) boolArr.append(bool._2)
      }
      if(boolArr.length == meanVectors.length || iteratornum > iteratorMax) flag = false else {
        for(ci <- iniCk) ci.clear()
      }
    }
    iniCk
  }
}
-------西瓜数据集结果-----------------------------------------------------------------------------
第0簇聚类结果:
Vector(0.697, 0.46)
Vector(0.774, 0.376)
Vector(0.748, 0.232)
Vector(0.714, 0.346)
Vector(0.751, 0.489)
Vector(0.725, 0.445)
第1簇聚类结果:
Vector(0.634, 0.264)
Vector(0.608, 0.318)
Vector(0.556, 0.215)
Vector(0.666, 0.091)
Vector(0.639, 0.161)
Vector(0.657, 0.198)
Vector(0.593, 0.042)
Vector(0.719, 0.103)
Vector(0.483, 0.312)
Vector(0.478, 0.437)
Vector(0.525, 0.369)
Vector(0.532, 0.472)
Vector(0.473, 0.376)
Vector(0.446, 0.459)
第2簇聚类结果:
Vector(0.403, 0.237)
Vector(0.481, 0.149)
Vector(0.437, 0.211)
Vector(0.243, 0.267)
Vector(0.245, 0.057)
Vector(0.343, 0.099)
Vector(0.36, 0.37)
Vector(0.359, 0.188)
Vector(0.339, 0.241)
Vector(0.282, 0.257)

-------鸢尾花数据集结果---------------------------------------------------------------------------------------------------------------------
第0簇聚类结果:
Vector(4.9, 3.0, 1.4, 0.2)
Vector(4.7, 3.2, 1.3, 0.2)
Vector(4.6, 3.1, 1.5, 0.2)
Vector(4.6, 3.4, 1.4, 0.3)
Vector(4.4, 2.9, 1.4, 0.2)
Vector(4.9, 3.1, 1.5, 0.1)
Vector(4.8, 3.4, 1.6, 0.2)
Vector(4.8, 3.0, 1.4, 0.1)
Vector(4.3, 3.0, 1.1, 0.1)
Vector(4.6, 3.6, 1.0, 0.2)
Vector(4.8, 3.4, 1.9, 0.2)
Vector(5.0, 3.0, 1.6, 0.2)
Vector(4.7, 3.2, 1.6, 0.2)
Vector(4.8, 3.1, 1.6, 0.2)
Vector(4.9, 3.1, 1.5, 0.1)
Vector(5.0, 3.2, 1.2, 0.2)
Vector(4.9, 3.1, 1.5, 0.1)
Vector(4.4, 3.0, 1.3, 0.2)
Vector(4.5, 2.3, 1.3, 0.3)
Vector(4.4, 3.2, 1.3, 0.2)
Vector(4.8, 3.0, 1.4, 0.3)
Vector(4.6, 3.2, 1.4, 0.2)
Vector(5.0, 3.3, 1.4, 0.2)
第1簇聚类结果:
Vector(5.1, 3.5, 1.4, 0.2)
Vector(5.0, 3.6, 1.4, 0.2)
Vector(5.4, 3.9, 1.7, 0.4)
Vector(5.0, 3.4, 1.5, 0.2)
Vector(5.4, 3.7, 1.5, 0.2)
Vector(5.8, 4.0, 1.2, 0.2)
Vector(5.7, 4.4, 1.5, 0.4)
Vector(5.4, 3.9, 1.3, 0.4)
Vector(5.1, 3.5, 1.4, 0.3)
Vector(5.7, 3.8, 1.7, 0.3)
Vector(5.1, 3.8, 1.5, 0.3)
Vector(5.4, 3.4, 1.7, 0.2)
Vector(5.1, 3.7, 1.5, 0.4)
Vector(5.1, 3.3, 1.7, 0.5)
Vector(5.0, 3.4, 1.6, 0.4)
Vector(5.2, 3.5, 1.5, 0.2)
Vector(5.2, 3.4, 1.4, 0.2)
Vector(5.4, 3.4, 1.5, 0.4)
Vector(5.2, 4.1, 1.5, 0.1)
Vector(5.5, 4.2, 1.4, 0.2)
Vector(5.5, 3.5, 1.3, 0.2)
Vector(5.1, 3.4, 1.5, 0.2)
Vector(5.0, 3.5, 1.3, 0.3)
Vector(5.0, 3.5, 1.6, 0.6)
Vector(5.1, 3.8, 1.9, 0.4)
Vector(5.1, 3.8, 1.6, 0.2)
Vector(5.3, 3.7, 1.5, 0.2)
第2簇聚类结果:
Vector(7.0, 3.2, 4.7, 1.4)
Vector(6.4, 3.2, 4.5, 1.5)
Vector(6.9, 3.1, 4.9, 1.5)
Vector(5.5, 2.3, 4.0, 1.3)
Vector(6.5, 2.8, 4.6, 1.5)
Vector(5.7, 2.8, 4.5, 1.3)
Vector(6.3, 3.3, 4.7, 1.6)
Vector(4.9, 2.4, 3.3, 1.0)
Vector(6.6, 2.9, 4.6, 1.3)
Vector(5.2, 2.7, 3.9, 1.4)
Vector(5.0, 2.0, 3.5, 1.0)
Vector(5.9, 3.0, 4.2, 1.5)
Vector(6.0, 2.2, 4.0, 1.0)
Vector(6.1, 2.9, 4.7, 1.4)
Vector(5.6, 2.9, 3.6, 1.3)
Vector(6.7, 3.1, 4.4, 1.4)
Vector(5.6, 3.0, 4.5, 1.5)
Vector(5.8, 2.7, 4.1, 1.0)
Vector(6.2, 2.2, 4.5, 1.5)
Vector(5.6, 2.5, 3.9, 1.1)
Vector(5.9, 3.2, 4.8, 1.8)
Vector(6.1, 2.8, 4.0, 1.3)
Vector(6.3, 2.5, 4.9, 1.5)
Vector(6.1, 2.8, 4.7, 1.2)
Vector(6.4, 2.9, 4.3, 1.3)
Vector(6.6, 3.0, 4.4, 1.4)
Vector(6.8, 2.8, 4.8, 1.4)
Vector(6.7, 3.0, 5.0, 1.7)
Vector(6.0, 2.9, 4.5, 1.5)
Vector(5.7, 2.6, 3.5, 1.0)
Vector(5.5, 2.4, 3.8, 1.1)
Vector(5.5, 2.4, 3.7, 1.0)
Vector(5.8, 2.7, 3.9, 1.2)
Vector(6.0, 2.7, 5.1, 1.6)
Vector(5.4, 3.0, 4.5, 1.5)
Vector(6.0, 3.4, 4.5, 1.6)
Vector(6.7, 3.1, 4.7, 1.5)
Vector(6.3, 2.3, 4.4, 1.3)
Vector(5.6, 3.0, 4.1, 1.3)
Vector(5.5, 2.5, 4.0, 1.3)
Vector(5.5, 2.6, 4.4, 1.2)
Vector(6.1, 3.0, 4.6, 1.4)
Vector(5.8, 2.6, 4.0, 1.2)
Vector(5.0, 2.3, 3.3, 1.0)
Vector(5.6, 2.7, 4.2, 1.3)
Vector(5.7, 3.0, 4.2, 1.2)
Vector(5.7, 2.9, 4.2, 1.3)
Vector(6.2, 2.9, 4.3, 1.3)
Vector(5.1, 2.5, 3.0, 1.1)
Vector(5.7, 2.8, 4.1, 1.3)

-------由于鸢尾花数据集特征列为4维,不方便作图,特选择西瓜数据集作图-------------------------------------------------

西瓜数据集4.0

02storm聚类尝试kmeans 先挑个最简单的算法尝试 01聚类kmeans算法和kmeans例子演示 K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。 假设要把样本集分为c个类别,算法描述如下: (1)适当选择c个类的初始中心 阅读详情

相关推荐

PSO优化Kmeans算法在电力负荷分析中的应用

聚类分析是数据挖掘中的基础技术,通过将相似数据对象分组来发现隐藏模式。Kmeans作为经典聚类算法,其性能受初始中心点选择影响较大,容易陷入局部最优解。粒子群优化(PSO)算法模拟群体智能行为,能有效解决优化问题。将PSO与Kmeans结合,利用PSO的全局搜索能力优化初始聚类中心,可显著提升算法稳定性和准确性。这种混合算法特别适用于电力负荷分析等具有高维特征的场景,能有效识别居民用电行为模式,为智能电网的用电策略制定提供数据支持。实际应用中,PSO-Kmeans算法在MATLAB环境下的实现涉及数据预处理

weixin_33966095的博客 350

【聚类】kmeans 三维或多维聚类,代码例子

此处展示的是三维的k均值聚类,可以修改为多维的聚类,直接增加x的维度就好了 import numpy as np from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D colo = ['b', 'g', 'r', 'c', 'm', 'y', 'k'] x =

zTau_的博客 1万+

【Python数据挖掘课程】二.Kmeans聚类数据分析及Anaconda介绍

这次课程主要讲述一个关于Kmeans聚类的数据分析案例,通过这个案例让同学们简单了解大数据分析的基本流程,以及使用Python实现相关的聚类分析。 主要内容包括: 1.Anaconda软件的安装过程及简单配置 2.聚类及Kmeans算法介绍 3.案例分析:Kmeans实现运动员位置聚集 希望这篇文章对你有所帮助,尤其是刚刚接触数据挖掘以及大数据的同学,同时准备尝试以案例为主的方式进行讲解。如果文章中存在不足或错误的地方,还请海涵~

杨秀璋的专栏 3万+

k-means聚类算法总结

聚类概念 聚类分析是在对象数据中发现对象之间关系。一般来说,组内相似性越高,组间相似性越大,则聚类的效果越好。 k-means概念 k-means是一种无监督学习,它会将相似的对象归到同一类中。 k-means聚类的优缺点 优点:容易实现。 缺点:可能会收敛到局部最小值, 当应用到大规模数据集时会收敛较慢。 适用于:数值型数据。 k-means聚类的算法思想 1.随机计算k个类中...

liuhehe123的博客 1万+

opencv的kmeans算法

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 1050

经典聚类算法——Kmeans详解

一、什么是聚类Clustering (聚类)是常见的unsupervised learning (无监督学习)方法。聚类的目的就是将大量数据中具有”相似”特征的数据或样本划分到同一个类别中。聚类模型建立在无类别标记的数据上,需要实现的目标只是把相似的样本聚到一起,即只是利用样本数据本身的分布规律。聚类模型会根据数据自身间的”距离”或”相似度”将他们划分成若干组,划分的基本原则就是使组内样本间距离最小化而组间距离最大化。常用的聚类算法如下:二、kmeans算法基本原理kmeans算法又称k均值算法,是最常用的

白话机器学习 1万+

【机器学习】—— K-means聚类算法原理详解 以及 二维、三维数据的K-means聚类Python实现

文章目录一、K-Means聚类算法原理过程1.1 K-means聚类的一些细节1.1.1 样本x(i)x^{(i)}x(i)与中心点μkμ_kμk​距离的衡量1.1.2 K-means聚类算法的应用场合1.1.3 K-means聚类算法的优化目标1.1.4 随机初始化的要点1.1.5 类的数量K的选取二、二维,三维数据K-means算法的Python实现 一、K-Means聚类算法原理过程 K-m...

凝望,划过星空的博客 2万+

k-means聚类(使用数据集:iris)

使用java语言在数据集iris上实现k-means聚类

第八周-无监督学习

对于无监督学习我们主要学习两种算法:聚类(K-means)和维度约简(PCA法)。1聚类算法clutering1.1聚类算法简介无监督学习:我们面对的是一组无标记的训练数据, 数据之间, 不具任何相关联的标记。如图:我们得到的数据 看起来像这样:一个数据集, 一堆数据点,但没有任何标记以供参考。所以从训练数据中, 我们只能看到 x 1、 x 2… 等等… 到 x(m) 没有任何标记 y 供参考。就...

sir_TI的博客 609

kmeans算法c语言实现,能对不同维度的数据进行聚类

K-means聚类算法c语言实现。样本数据从文件读入,支持任意维数数据和任意k值(k当然要小于样本数).原创原创!

Java实现k_means算法进行聚类分析

实验描述: 对指定数据集进行聚类分析,选择适当的聚类算法,编写程序实现,提交程序和结果报告。 数据集: Iris Data Set(见附件一) ,根据花的属性进行聚类。 数据包括四个属性:sepal length花萼长度,sepal width花萼宽度,petal length花瓣长度,petal width花瓣宽度。其中第五个值表示该样本属于哪一个类。 样本点间的距离直接用向量的欧氏距离。

kmeans算法_KMeans聚类算法详解

原创 · 作者 | Giant学校 | 浙江大学研究方向 |对话系统、text2sql知乎专栏|大熊猫游乐园“如果把人工智能比作一块大蛋糕,监督学习只是上面的一层奶油”。日常生活中,从人脸识别、语音识别到搜索引擎,我们看到越来越多人工智能领域的算法逐渐走向落地。尽管全球每日新增数据量以PB或EB级别增长,但是大部分数据属于无标注甚至非结构化。所以相对于监督学习,不需要标注的无监督学...

weixin_39634878的博客 2249

kmeans实现iris数据集分类

框架:keras,语言:python,使用算法:k-means,需要安装一些安装包

kmeans聚类算法python

kmeans聚类算法python

隔壁王叔的博客 1693

生物信息学新手必看:MAFFT多序列比对从安装到实战(附参数优化技巧)

本文为生物信息学新手提供了MAFFT多序列比对工具的完整指南。从Linux环境下的安装部署,到核心算法策略(如FFT-NS-i、L-INS-i)的选择逻辑,再到空位罚分等关键参数的深度解析与优化技巧,手把手教你完成从原始序列到高质量比对结果的实战流程,为后续进化树构建等分析奠定坚实基础。

weixin_29230773的博客 487

ABAP传输自定义IDOC实例

首先确定出站方和入站方,本例中我使用150作为发送方将200作为接收方。 发送端系统配置 进入tcode-SALE,点击定义逻辑系统,这里我定义D01CLNT150为发送端, D01CLNT200为接收端 2,将逻辑系统分配给对应的client 3,进入tcode-WE31,创建IDOC开发段(segment)这里可以按照实际需求创建想要传输的结构,为求简单我创建了ZKNA1并选取了几个客户主数据的字段作为示例 4,进入tcode-WE30,创建Idoc Ty...

Nathan的博客 4080

kmeans聚类算法matlab_KMeans聚类算法详解

“如果把人工智能比作一块大蛋糕,监督学习只是上面的一层奶油“。日常生活中,从人脸识别、语音识别到搜索引擎,我们看到越来越多人工智能领域的算法逐渐走向落地。尽管全球每日新增数据量以PB或EB级别增长,但是大部分数据属于无标注甚至非结构化。所以相对于监督学习,不需要标注的无监督学习蕴含了巨大的潜力与价值。聚类算法KMeans是无监督学习的杰出代表之一。本文是记录自己过去学习KMeans算法的系统小结,...

weixin_39694174的博客 1255

软件可靠性测试与评价

本文系统介绍了软件可靠性工程的核心内容,包括可靠性概念、模型分类、测试方法和评价体系。重点解析了可靠性测试的三大步骤:定义运行剖面、设计测试用例和实施测试收集数据,并以智能安防系统为例说明具体应用。可靠性评价需结合业务场景,通过量化指标(MTBF、失效率等)和模型预测持续优化系统。文章强调可靠性需贯穿软件全生命周期,通过闭环反馈实现持续改进,为关键系统提供质量保障。

moton2017的博客 2050

KMeans聚类算法原理与Python实现详解

聚类分析是机器学习中重要的无监督学习技术,通过将相似数据自动分组发现数据内在结构。KMeans作为最经典的聚类算法,其核心原理是通过迭代优化样本点到聚类中心的距离平方和。算法采用欧氏距离等度量方式,配合KMeans++初始化策略提升效果。在实际工程中,数据标准化、最佳K值确定和空聚类处理是关键挑战。该算法广泛应用于客户分群、图像分割和异常检测等场景,配合轮廓系数等评估指标可量化聚类质量。Python的sklearn库提供了高效实现,同时支持Mini-Batch优化处理大规模数据。

weixin_33937778的博客 423

华为eNSP镜像包全集下载,包含CE6800、CE12800、NE系列等!

你好,这里是网络技术联盟站。昨天给大家介绍了win11、10下安装eNSP最新系列(1.3.00)并完美运行,附下载。从文章发布到发文前,一直有朋友想让瑞哥提供一下华为ENSP镜像包,今天安排!eNSP安装包、以及eNSP中所需要的镜像包(设备包)(CE、CX、NE40E、NE5000E、NE9000、USG)例如:导入一个USG设备包,eNSP中的USG5500和USG6000V都是可以启动的。如果你的报错“40”的话,那么打开Oracle VM VirtualBox这个虚拟机,删除对应报错的虚拟机,然后

网络技术联盟站 3万+

Cadence OrCAD Capture软件启动过程卡死且无法恢复的解决方法

如下图所示Cadence OrCAD Capture软件在启动后出现卡死的现象,且等待后无法自动恢复,需要强行关闭,再次启动依然卡死。

fydar的博客 4045

KMeans 与 DBSCAN:如何根据数据特性选择最佳聚类算法

本文深入探讨了KMeans与DBSCAN两种聚类算法的选择策略,重点分析了数据特性对算法性能的影响。通过对比算法原理、适用场景及实战案例,帮助读者根据数据形状、噪声水平和簇密度等因素,选择最佳聚类方法,提升电商用户分群、城市设施规划等实际应用效果。

k8l9m0n的博客 558

YOLOv13全网首发:CVPR2026 MixerCSeg | DEGConv方向引导边缘门控,破解细长裂缝检测难题

DEGConv通过方向先验嵌入、边缘增强卷积和动态门控三大机制,针对性解决了YOLO在处理裂缝类细长、多方向、低对比度目标时的特征提取不足问题,显著提升了裂缝检测的精度与鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 442

【OpenCV】110 KMeans 数据分类

110 代码 实验结果 解释 优点 所有内容均来源于贾志刚老师的知识星球——OpenCV研习社,本文为个人整理学习,已获得贾老师授权,有兴趣、有能力的可以加入贾老师的知识星球进行深入学习。 ...

刘小胖的博客 315

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 算法小白的第一次尝试---BoostingTree(手撕提升树)
下一篇: Hadoop Shuffle过程(详解--通俗易懂)
小糖宝
博客等级 码龄9年 47粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值