精华内容
下载资源
问答
  • 2019-08-08 12:19:00

    返回的值是null

    测试代码

    import java.util.HashMap;
    import java.util.Map;
    
    public class Test {
        public static void main(String[] args) {
            Map<String,String> map = new HashMap<>();
            String test = map.get("hello");
            System.out.println(test);
        }
    }

    运行结果为:

    null

    从结果可以看出,HashMap集合中,获取不存在的key时并不会报异常.

    在Map的实现类HashMap中有这样一段代码

       /**
         * Returns the value to which the specified key is mapped,
         * or {@code null} if this map contains no mapping for the key.
         *
         * <p>More formally, if this map contains a mapping from a key
         * {@code k} to a value {@code v} such that {@code (key==null ? k==null :
         * key.equals(k))}, then this method returns {@code v}; otherwise
         * it returns {@code null}.  (There can be at most one such mapping.)
         *
         * <p>A return value of {@code null} does not <i>necessarily</i>
         * indicate that the map contains no mapping for the key; it's also
         * possible that the map explicitly maps the key to {@code null}.
         * The {@link #containsKey containsKey} operation may be used to
         * distinguish these two cases.
         *
         * @see #put(Object, Object)
         */
        public V get(Object key) {
            Node<K,V> e;
            return (e = getNode(hash(key), key)) == null ? null : e.value;
        }
    
        /**
         * Implements Map.get and related methods.
         *
         * @param hash hash for key
         * @param key the key
         * @return the node, or null if none
         */
        final Node<K,V> getNode(int hash, Object key) {
            Node<K,V>[] tab; Node<K,V> first, e; int n; K k;
            if ((tab = table) != null && (n = tab.length) > 0 &&
                (first = tab[(n - 1) & hash]) != null) {
                if (first.hash == hash && // always check first node
                    ((k = first.key) == key || (key != null && key.equals(k))))
                    return first;
                if ((e = first.next) != null) {
                    if (first instanceof TreeNode)
                        return ((TreeNode<K,V>)first).getTreeNode(hash, key);
                    do {
                        if (e.hash == hash &&
                            ((k = e.key) == key || (key != null && key.equals(k))))
                            return e;
                    } while ((e = e.next) != null);
                }
            }
            return null;
        }

    在get方法中并没有向上抛出异常,注释也说明了返回节点或者null

    更多相关内容
  • 表结构如下: 解决方法: 前提: 在实现之前,必须要注意一个点,就是先找到实例表中的你自己认为能唯一区分所有数据的一个字段,并给他设置唯一索引unique,且能是ID因为ID设置了就没有意义了,也可以是主键看...

    背景: 在数据库操作中,有这样一个场景:我们对一批数据进行存储,假如这批数据中有部分数据是重复的,可能是全部重复也可能是部分重复,存储的时候我们要把重复的数据合并或者跳过。

    实例:

    create table store(
    ID  int(8) auto_increment primary key,
    store_name varchar(255),
    store_href varchar(255) unique,
    credit_count int(4),
    albums_url varchar(120),
    phone varchar(40),
    address varchar(255),
    product varchar(255),
    );
    

    表结构如下:
    在这里插入图片描述

    解决方法:

    前提: 在实现之前,必须要注意一个点,就是先找到实例表中的你自己认为能唯一区分所有数据的一个字段,并给他设置唯一索引unique,且不能是ID因为ID设置了就没有意义了,也可以是主键看情况。唯一索引的作用是被设置的字段对应的列之后的数据都不能出现重复。像我上面的商店表中的store_href字段,因为网上的商店连接都只有一个连接地址,而其他的可能被多个商店使用

    一、 存在就更新

    on duplicate key update:

    插入数据的索引unique或者primary key发生冲突,则会执行更新操作。假如store数据表中已经有了实例表中,假如没有的话就把前面的数据插入实例表。如下面的语句:

    insert into store (store_name,store_href,credit_count,albums_url,phone,address,product) values ("三只松鼠","http://x.yupoo.com/photos/?k=三只松鼠","4星","http://x.yupoo.com/photos/2986934341/albums/11531437?uid=1","10086","火星","零食") on duplicate key update store_name="三只松鼠",store_href="http://x.yupoo.com/photos/?k=三只松鼠",credit_count="5星",albums_url="http://www.baidu.com",phone="10000",address="火星",product="零食";
    

    语法:

    insert into 表名 (字段1,字段2,字段3 ...) values (1,2,3 ...)  on duplicate key update store_name 值1="新值1",2="新值2",3="新值3" ...;
    

    执行的结果是:如果插入数据的时候没有冲突,说明数据库中没有这条数据,则一条结果受到影响;如果插入数据的时候发生了冲突,说明数据库中有这条数据,则两条数据受到影响。这里的ID不会发生改变,因为他是执行的更新。

    replace into:

    replace into 和 on duplicate key update 唯一的区别是,replace into 他不是更新冲突的那条数据,而是删除后再插入:如下面的语句:

    replace into store (store_name,store_href,credit_count,albums_url,phone,address,product) values ("三只松鼠","http://x.yupoo.com/photos/?k=三只松鼠","5星","http://www.baidu.com","10000","火星","零食");
    

    语法:

    replace into 表名 (字段1,字段2,字段3 ... ) values ("值1","值2","值3" ... );
    

    执行的结果:如果插入数据的时候没有冲突,说明数据库中没有这条数据,则一条结果受到影响;如果插入数据的时候发生了冲突,说明数据库中有这条数据,则两条数据受到影响。这里的ID会发生改变,因为他是先执行删除后执行插入。

    二、存在就忽略

    insert ignore into:

    插入数据的索引unique或者primary key发生冲突,则会忽略此次操作。如下面的语句:

    insert ignore into store (store_name,store_href,credit_count,albums_url,phone,address,product) values ("三只松鼠","http://x.yupoo.com/photos/?k=三只松鼠","5星","http://www.baidu.com","10000","火星","零食");
    

    语法:

    insert ignore into 表名 (字段1,字段2,字段3 ... ) values ("值1","值2","值3" ... );
    

    执行的结果:如果插入数据的时候没有冲突,说明数据库中没有这条数据,则一条结果受到影响;如果插入数据的时候发生了冲突,说明数据库中有这条数据,则零条数据受到影响。这里的表数据不会发生改变。

    展开全文
  • pom.xml依赖是否成功引入或者存在不存在单词拼写错误(一般情况不会有错啊) common包中dto是否成功import (这么简单必然成功import了啊…) 2 解决办法 最终原因,其实就是没有依赖。。。原因就是 spring-...

    1 报错

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project ly-item-interface: Compilation failure: Compilation failure:
    [ERROR] /D:/javacode/idea/leyou/ly-item/ly-item-interface/src/main/java/com/leyou/item/api/GoodsApi.java:[3,28] 程序包com.leyou.common.dto不存在
    [ERROR] /D:/javacode/idea/leyou/ly-item/ly-item-interface/src/main/java/com/leyou/item/api/GoodsApi.java:[4,27] 程序包com.leyou.common.vo不存在
    [ERROR] /D:/javacode/idea/leyou/ly-item/ly-item-interface/src/main/java/com/leyou/item/api/GoodsApi.java:[23,5] 找不到符号
    [ERROR] 符号:   类 PageResult
    [ERROR] 位置: 接口 com.leyou.item.api.GoodsApi
    [ERROR] /D:/javacode/idea/leyou/ly-item/ly-item-interface/src/main/java/com/leyou/item/api/GoodsApi.java:[37,42] 找不到符号
    [ERROR] 符号:   类 CartDTO
    [ERROR] 位置: 接口 com.leyou.item.api.GoodsApi
    [ERROR] -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
    [ERROR] 
    [ERROR] After correcting the problems, you can resume the build with the command
    [ERROR]   mvn <goals> -rf :ly-item-interface
    
    Process finished with exit code 1
    

    1.1 根本原因(以其中一个error为例分析)

    ly-item-interface: Compilation failure: Compilation failure:
    [ERROR] com/leyou/item/api/GoodsApi.  程序包com.leyou.common.dto不存在
    

    ly-item-interface在打包时要依赖com.leyou.common包
    就很奇怪 明明这个包这个类都是存在的啊,为什么就是找不到???
    其次做了几项检查:

    • pom.xml依赖是否成功引入或者存在不存在单词拼写错误(一般情况不会有错啊)
    • common包中dto是否成功import (这么简单必然成功import了啊…)

    2 解决办法

    最终原因,其实就是没有依赖。。。原因就是spring-boot-maven-plugin
    这个坑!!!用这个插件打包的Jar包可以直接运行,但是不可依赖!!!所以interface自始至终就没有依赖,自然会说找程序包不存在或者找不到类

    最后修改pom.xml的依赖:

     <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <classifier>execute</classifier>
                </configuration>
            </plugin>
        </plugins>
     </build>
    

    ok!

    3 总结

    一个微服务通常有两个子module,一般一个写实体类和接口一个写实现方法

    建议

    • common类或者实体类或者被被依赖的类,打包插件配置为:
    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>none</phase>
                        </execution>
                    </executions>
                    <configuration>
                        <classifier>execute</classifier>
                    </configuration>
                </plugin>
            </plugins>
    </build>
    

    <executions>
        <execution>
            <phase>none</phase>
        </execution>
    </executions>
    

    是为了解决Unable to find main class的问题,当然,如果写了简单的main函数这几行可以不写~

    • 其他类或者微服务可以正常配置:
    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
    </build>
    

    4 最后

    在这里插入图片描述
    一晚上将近三个小时,碰到打包时的各种奇葩问题(为什么老师一按install好好的,我就???),还好最后看到了BUILD SUCCESS,等待他打包的过程好紧张,就怕有错,哭辽~

    展开全文
  • 聚类分析(K-means算法)

    万次阅读 多人点赞 2018-05-28 22:05:44
    需要类别标注的算法,直接从数据中学习模式 所以,聚类是一种 数据探索 的分析方法,他帮助我们在大量数据中探索和发现数据结构 1.2 相似度与距离度量 定义距离来度量表示相似度: 欧式距离,曼哈顿距离,...

    这里写图片描述

    1 聚类分析

    聚类:
        把相似数据并成一组(group)的方法。‘物以类聚,人以群分’
        不需要类别标注的算法,直接从数据中学习模式
        所以,聚类是一种 数据探索 的分析方法,他帮助我们在大量数据中探索和发现数据结构
    
    1.1 相似度与距离度量
    定义距离来度量表示相似度:
        欧式距离,曼哈顿距离,闵氏距离
    
    距离与变量量纲的关系
        变量标准化方法:
            0-1 标准化
            区间缩放法 (a,b)=(0,1)
            类别变量onehot
    
    1.2 聚类算法 及 划分方法
    常见的两类聚类算法:
        层次聚类算法(Hierarchical)
        基于划分的方法(Partitional)
        基于密度 和 基于模型
    
    基于划分的方法(Partitional):K-means(K均值)
        1 随机选取K个数据点作为‘种子’
        2 根据数据点与‘种子’的距离大小进行类分配
        3 更新类中心点的位置,以新的类中心点作为‘种子’
        4 按照新的‘种子’对数据归属的类进行重新分配
        5 更新类中心点(-->3-->4),不断迭代,直到类中心点变得很小
    

    2 聚类模型评估(优缺点)

    优点: 算法原理简单,处理快
          当聚类密集时,类与类之间区别明显,效果好
    
    缺点: K是事先给定的,K值选定难确定
          对孤立点、噪声敏感
          结果不一定是全局最优,只能保证局部最优。
          很难发现大小差别很大的簇及进行增量计算
          结果不稳定,初始值选定对结果有一定的影响
          计算量大
    

    3 K-means 在 sklearn方法

    sklearn.cluster.KMeans(
                            n_clusters = 8,         #聚类个数,K值,默认8
                            init = 'k-means++',     
                            n_init = 10,
                            max_iter = 300,
                            tol = 0.0001,
                            precompute_distances = 'auto',
                            verbose = 0,
                            random_state = None,
                            copy_x = True,
                            n_jobs = 1,
                            algorithm = 'auto'
                        )
    
    一些重要的参数:
    n_clusters = 8,          #聚类个数,K值,默认8
    init = 'k-means++',      #初始化类中心点选择方法,可选:
            {
                'k-means++', #是一种优化选择方法,比较容易收敛
                'random',    #随机选择
                an ndarray   #可以通过输入ndarray数组手动指定中心点
            }
    max_iter:                #最大迭代数         
    precompute_distances:   #预计算距离,计算速度更快但占用更多内存。auto  True
    copy_x                   # True,原始数据不变,False直接在原始数据上做更改                         

    4 确定K值–肘部法则–SSE

    最合适的K值
        肘部法则(Elbow method):找到随着K值变大,损失函数的拐点。
        损失函数:各个类畸变程度(distortions)之和 
    

    肘方法的核心指标是 SSE S S E (sum of the squared errors,误差平方和), Ci C i 是第 i i 个簇,p Ci C i 中的样本点, mi m i Ci C i 的质心( Ci C i 中所有样本的均值),SSE是所有样本的聚类误差,代表了聚类效果的好坏。

    SSE=i=1KpCi|pmi|2 S S E = ∑ i = 1 K ∑ p ∈ C i | p − m i | 2

    SSE是每个属性的SSE之和:
        1. 对于所有的簇,某变量的SSE都很低,都意味着什么?
        2. 如果只对一个簇很低,意味着什么?
        3. 如果只对一个簇很高,意味着什么?
        4. 如果对所有簇都很高,意味着什么?
        5. 如何使用每个变量的SSE信息改进聚类?
    
        解答: 1. 说明该属性本质上为常量,不能作为聚类依据。
              2. 那么该属性有助于该簇的定义
              3. 那么该属性为噪声属性
              4. 那么该属性 与 定义该属性提供的信息不一致,也意味着该属性不利于簇的定义。
              5. 消除对于所有簇都是 低的SSE(高的SSE)的属性。因为这些属性对聚类没有帮助, 
                 这些属性在SSE的总和计算中引入了噪声。
    
                 也可以对其中某些属性用加权概率来计算,使该属性有助于该簇的定义, 
                 去除某些不利于该簇定义的影响因子(那些可能是噪声)。从而更有利于簇的聚类。
    
    K-means 附加问题
        1.处理空簇:如果数据量少,寻找替补质心,使SSE最小。如果数据量大,保留该空簇
        2.离群点:不能删除。建议聚类之前离群检测。分析看能否删除 
        3.降低SSE :将大的分散的簇再次拆开;引入新的簇将之前的大簇拆分。 
        4.增量更新质心:再次在质心附近寻找测试点,看能否再次找到更优的质心。 

    这里写图片描述

    5 模型评估指标–轮廓系数法–最近簇

    聚类目的是让“组内数据尽量相似”,而“组间数据差异明显”,轮廓系数就是衡量方法。

    针对每一条数据i
    a(i)数据i与组内其它数据的平均距离
    b(i)数据i与邻组的数据的平均距离
    5.1 轮廓系数

    S(i)=b(i)a(i)max{a(i),b(i)}S(i)1a(i)b(i),0a(i)b(i)1,a(i)<b(i)a(i)=b(i)a(i)>b(i)S(i)1S(i)1S(i)0 S ( i ) = b ( i ) − a ( i ) m a x { a ( i ) , b ( i ) } ⇒ S ( i ) { 1 − a ( i ) b ( i ) , a ( i ) < b ( i ) S ( i ) → 1 0 a ( i ) = b ( i ) S ( i ) → − 1 a ( i ) b ( i ) − 1 , a ( i ) > b ( i ) S ( i ) → 0

    数据i的轮廓系数s(i)
    s(i) –> 1 样本i聚类合理
    s(i) –> -1 样本i应该分到其它类
    s(i) –> 0 样本i在两个轮廓的边界
    5.2 最近簇定义—平均轮廓系数 [0,1]

    Cj=argminCk1npCk|pXi|2 C j = a r g min C k 1 n ∑ p ∈ C k | p − X i | 2

    其中p是某个簇Ck中的样本。即,用Xi到某个簇所有样本平均距离作为衡量该点到该簇的距离后,
    选择离Xi最近的一个簇作为最近簇。
    
    sklearn.metrics.silhouette_score    
    sklearn.metrics.silhouette_score(
                                        X,
                                        labels = 'euclidean',
                                        sample_size = None,
                                        random_state = None
                                        )
    一些重要的参数:
        X:      聚类的输入特征数据
        labels:类标签数组
        metrics:
        sample_size:是否抽样计算
    5.3、Canopy算法配合初始聚类
    1.聚类最耗费计算的地方是计算对象相似性的时候,Canopy聚类在第一阶段选择简单、 
      计算代价较低的方法计算对象相似性,将相似的对象放在一个子集中,这个子集被叫做Canopy , 
      通过一系列计算得到若干Canopy,Canopy之间可以是重叠的,但不会存在某个对象不属于任何Canopy的情况, 
      可以把这一阶段看做数据预处理; 
    
    2.在各个Canopy 内使用传统的聚类方法(如K-means),不属于同一Canopy 的对象之间不进行相似性计算。 
     (即,根据Canopy算法产生的Canopies代替初始的K个聚类中心点, 
     由于已经将所有数据点进行Canopies有覆盖划分, 
     在计算数据离哪个k-center最近时,不必计算其到所有k-centers的距离, 
     只计算和它在同一个Canopy下的k-centers这样可以提高效率。 
    算法过程:
    1,首先选择两个距离阈值:T1和T2,其中T1 > T2
    2,从list中任取一点P,用低计算成本方法快速计算点P与所有Canopy之间的距(如果当前不存在Canopy,则把点P作为一个Canopy),如果点P与某个Canopy距离在T1以内,则将点P加入到这个Canopy
    3,如果点P曾经与某个Canopy的距离在T2以内,则需要把点P从list中删除,这一步是认为点P此时与这个Canopy已经够近了,因此它不可以再做其它Canopy的中心了;
    4,重复步骤2、3,直到list为空结束。
    这里写图片描述
    优缺点
    1、Kmeans对噪声抗干扰较弱,通过Canopy对比,将较小的NumPoint的Cluster直接去掉有利于抗干扰。
    2、Canopy选择出来的每个Canopy的centerPoint作为K会更精确。
    3、只是针对每个Canopy的内做Kmeans聚类,减少相似计算的数量。

    6 K-mean 优化

    6.1 K-means++优化
    ◆ K-means算法的先决条件
        1)必须先行指定k的大小,及最终结果需要聚为几类。
        2)第一次分配数据点的时候需要选取起始质心(seeds),即初始化聚类中心点。 
    
    k-means++是一种基于采样方法(称为D^2-sampling)的中心点选择方法。其核心为: 
        最开始的质心间两两的距离要尽可能远。 
    
    K-means++算法改进了标准K-means算法随机选取初始质心的缺点,但其内在的有序性导致了它的可扩展型不足。 
        由于选择下一个中心点所需的计算依赖于已经选择的所有中心点,这种内在的顺序执行特性使得到k个聚类中心 
        必须遍历数据集 k 次,从而使得算法无法并行扩展而应用在超大规模数据集上。   
    
    6.2 映射到高维(Kernel k-means)
    kernel k-means:
        将每个样本映射到高维空间的处理,
        然后再将处理后的数据使用普通的k-means算法思想进行聚类。 
    
    6.3 二分法(二分K-means)
    首先将所有点作为一个簇,然后将该簇一分为二。 
    之后选择能最大限度降低聚类代价函数(也就是误差平方和)的簇划分为两个簇。 
    以此进行下去,直到簇的数目等于用户给定的数目k为止。 
    
    6.4 Mini Batch K-Means(分批处理)
    该算法的迭代步骤有两步: 
        1:从数据集中随机抽取一些数据形成小批量,把他们分配给最近的质心 
        2:更新质心,适用大数据类型 
    
    6.5 迭代自组织数据分析算法(ISODATA)
    类别数目随着聚类过程而变化; 
        对类别数的“合并”:(当聚类结果某一类中样本数太少,或两个类间的距离太近时) 
        “分裂”(当聚类结果中某一类的类内方差太大,将该类进行分裂) 
    
    6.6 基于MCMC采样的算法
    MCMC的采样方法,k−MC2就是为了降低 k-means 算法的时间复杂度的改进算法。 
    
    使用MCMC采样来近似 D2−sampling 这个过程 
        在选取候选种子节点时,随机选取一个seeding,然后用MCMC的方法采样出长为M的马尔科夫链,
        使得马尔科夫链的平稳分布为 p(x) ,从而马尔科夫链达到平稳状态后的那些状态就可以看作是以
        p(x) 进行采样的样本点。 
    
    k-MC^2 算法有一个缺点:
        即由于在MCMC过程中,算法使用的提案分布 q(x) 为均匀分布,这导致了潜在的缺点,
        就是那些样本数较小的聚类中可能不会被选中为候选节点。 
    
    6.7 AFK-MC^2
    AFK-MC^2关键之处:
        在于它使用马尔科夫链对k-Means++进行近似处理,也就是将数据点看做状态点。
        第一个状态是随机采样的数据点,通过一个随机过程来决定链的状态是否要转移到其他的随机数据点。
        状态是否转移与所有点的初始距离是相互独立的(马尔科夫链的稳定状态与初始状态无关), 
        并且初始距离作为预处理的一部分只计算一次。与k-Means++不同的是,AFK-MC2算法只需要遍历一次数据集。 
    
    附:马尔可夫链蒙特卡洛方法
    ◆ 蒙特卡洛方法
        蒙特卡洛模拟只是一种通过不断地生成随机数来评估固定参数的方法。 
        通过生成随机数并对其做一些计算,蒙特卡洛模拟给出了一个参数的近似值(其中直接
        计算是不可能的或者计算量过大) 
    

    这里写图片描述

    由于 15 个点落在了圆内,那么圆的面积可以近似地为 75 平方英寸,对于只有 20 个随机点 
    的蒙特卡洛模拟来说,结果并不差。
    
    现在,假设我们想要计算下图中由蝙蝠侠方程(Batman Equation)绘制的图形的面积: 
    

    这里写图片描述

    我们从来没有学过一个方程可以求这样的面积。不管怎样,通过随机地放入随机点, 
    蒙特卡洛模拟可以相当容易地为该面积提供一个近似值。
    
    ◆ 马尔可夫链 
        在十九世纪,人们观察到钟形曲线在自然中是一种很常见的模式。 
        (我们注意到,例如,人类的身高服从钟形曲线分布。) 
        Galton Boards 曾通过将弹珠坠落并通过布满木钉的板模拟了重复随机事件的平均值, 
        弹珠的最终数量分布中重现了钟形曲线: 
    

    这里写图片描述

    给定一个确定的上述字母或空白,关于下一个字母将是 A、T 或者空白等,存在一个确定的概率。 
    通过这些概率,Markov 可以模拟一个任意的长字符序列。这就是马尔科夫链。
    

    7 以下代码演示:请点击

    K-means 肘部法则(确定K值)
    K-means 轮廓系数法(验证K值)
    Mini Batch K-Means(适合大数据的聚类算法)
    展开全文
  • 统计学习方法——K近邻模型

    万次阅读 多人点赞 2017-03-09 22:28:13
    可能有人会说,K近邻模型有什么好写的,那分明就是一个最简单的机器学习模型,哦,,连机器学习也算上的算法吧。但是这里,我想提醒的是,我们要讨论的,仅仅是简单的K近邻模型,而是和它相关的一些有困惑的...
  • 有一个整数序列 a[n],设计一个算法判断其中是否存在两个元素和恰好等于给定的整数 k。 1.直观想法 思路:先排序,循环一遍每个元素,以当前元素为基准,用二分法寻找该元素之后数组中是否存在元素等于(k-a[i]),...
  • C10k问题简述

    千次阅读 多人点赞 2019-10-28 14:46:48
    所谓c10k问题,指的是:服务器如何支持10k个并发连接,也就是concurrent 10000 connection(这也是c10k这个名字的由来)。由于硬件成本的大幅度降低和硬件技术的进步,如果一台服务器能够同时服务更多的客户端,那么...
  • K-means聚类算法原理及python实现

    万次阅读 多人点赞 2019-07-26 11:51:49
    聚类算法二.K-means聚类算法三.K-means算法步骤详解Step1.K值的选择Step2.距离度量2.1.欧式距离2.2.曼哈顿距离2.3.余弦相似度Step3.新质心的计算Step4.是否停止K-means四.K-means算法代码实现1.其伪代码如下2.python...
  • 在N个乱序数字中查找第k大的数字,时间复杂度可以减小至 ...注意:题中只需得到最大的K个数,而需要对后面N-K个数排序 可能存在的条件限制: 要求 时间 和 空间消耗最小、海量数据、待排序的数据可能是...
  • 方法一:先让整数k减a[0]等于key,然后再用二分法在整数序列里查找是否存在key,找到返回真,否则返回假。 #include <bits/stdc++.h> //C++万能头 using namespace std; const int maxn=1e5+10; bool find(int...
  • 解析HashMap、HashSet、TreeMap、TreeSet判断元素是否存在的逻辑。
  • K-Fold 交叉验证 (Cross-Validation)的理解与应用 个人主页-->http://www.yansongsong.cn/ 1.K-Fold 交叉验证概念 在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集。测试集是与训练独立的...
  • 密码学中数字签名方案的安全模型主要包括两种: 存在可伪造(Existential Unforgeability against chosen-message attacks, EU-CMA)和强可伪造(Strong Unforgeability against chosen-message attacks, SU-CMA),...
  • 分治算法 求第k小元素 O(n) & O(nlog2^n)

    万次阅读 多人点赞 2017-11-22 17:32:45
    BFPRT算法:时间复杂度O(n)求第k小的数字(分治算法+快排) ...最容易想到的算法是采用一种排序算法先将数组按降的次序排好,然后从排好序的数组中捡出第k个元素。这样的算法在最坏情况下时间复杂度是O(nlog...
  • k-中心点算法(k-medoids)及Matlab代码实现

    万次阅读 热门讨论 2018-06-14 15:44:01
    k-中心点算法(k-medoids)及Matlab代码 1. 提出: 上篇文章给出了 k-means算法的具体思想和代码实现:https://blog.csdn.net/qiu1440528444/article/details/80611942 k-means算法是每次选择簇的均值作为新的...
  • K-means和K-中心点算法

    万次阅读 多人点赞 2019-01-05 15:15:53
    在聚类的算法中这个算法比较常用,首先是将数据集中的每一条数据想象称为超空间中的一个点,因为通常数据只是只有三个特征属性,超过三个特征属性之后就难以在坐标空间中进行表示,所以这里统一的称为超空间 ...
  • 聚类方法 适用场景 代表算法 优点 缺陷 延伸 层次聚类 小样本数据 - 可以形成类相似度层次图谱,便于直观的确定类之间的划分。... 簇近似为高斯分布,它的效果较好 .
  • k-means 聚类算法的缺陷

    万次阅读 2018-02-27 14:26:34
    k-means算法是一种典型的基于距离的算法,它以距离作为评价相似度的指标。两个对象的距离越近,则相似度也就越大。 其算法步骤如下: 1.随机选取K个聚类中心点。基于这k个中心点计算每个对象到中心点的距离,并将...
  • k-medoid(k中心点)聚类算法Python实现

    万次阅读 多人点赞 2018-12-06 23:27:03
    k-means算法有个很大的缺点,就是对孤立点敏感性太高,孤立点即是脱离群众的点,与众不同的点,即在显示中与其他点不是抱在一团的点。 为了体现两者的不同,我特意温习了一下知识,在构造初始点的时候,自己定义...
  • 判别无向图中任意给定的2个顶点之间是否存在一条长度 为k的简单路径  无向图是没有权值的这里的k值代表经历k-1个顶点 不要以为很简单,里面很niu的  int visited[MAXSIZE] //出发点为i,终点为j,长度为k ...
  • 直接模拟就可以,个人觉得题目严谨,没有说重复元素,也没有说重复元素算并列还是算新的最大数。 取出L - R的数,排序,找第k大。 import java.util.*; public class Main { public static void main(String[] ...
  • k-means聚类算法原理简析

    万次阅读 多人点赞 2019-01-26 23:03:17
    k-means聚类算法原理简介概要算法思想算法流程图解代码实现 概要 K-means算法是最普及的聚类算法,也是一个比较简单的聚类算法,所以刚接触的同学不要感到害怕。算法接受一个未标记的数据集,然后将数据聚类成不同...
  • 隐私保护——k-匿名模型及基本改进

    千次阅读 2018-12-19 11:49:35
    k匿名化的数据表中,某个k匿名组内所有记录对应的敏感属性值都相同,攻击者攻击到该匿名组,就会泄露某些记录的敏感属性,从而导致隐私泄露。 背景知识攻击: 即使k匿名组内的敏感属性值都不同,但攻击者可...
  • K-近邻算法(KNN)

    万次阅读 多人点赞 2021-03-25 23:04:20
    文章目录1.K-近邻算法小例子评价2.K-近邻模型2.1 距离度量LpL_pLp​距离欧氏距离(Euclidean Distance)曼哈顿距离(Manhattan Distance)其它2.2 k\large kk 值的选择不同k值的影响特例:k=1k=1k=1(最近邻算法)...
  • K-median 算法

    千次阅读 2018-06-08 23:51:03
    k-中值问题几十年来一直受到重视,主要是计算机科学和运筹学研究。 这个问题通常形式化如下:给定一个度量空间X,一组客户C∈X和一组设施F∈X,使得| X | = | F∪C| = n,在F中开放k个设施,以尽量减少每个客户到...
  • 数据挖掘算法之k-匿名算法

    万次阅读 2018-03-25 15:35:57
    今天我们来讲解一种匿名隐私保护模型——k-匿名模型 在讲解k-匿名模型之前,我们首先对用户数据类型进行一个分类: ①显式标识符(ID,能够唯一地确定一条用户记录) ②准标识符(QI,能够以较高的概率结合一定的...
  • 直线斜率k的公式

    万次阅读 2021-03-07 10:07:07
    直线斜率公式:k=(y2-y1)/(x2-x1)...直线斜率相关直线L的斜率不存在时,斜截式y=kx+b,当k=0,y=b;直线L的斜率存在,点斜式y2—y1=k(X2—X1),直线L在两坐标轴上存在非零截距,有截距式X/a+y/b=1;对于...
  • 其次,做什么并重要,比如开发产品应用,有拿10k的,也有60k的,做算法工程师,有10k的,也有60k的。关键是能力、认知、沟通、表达等等。重点说说IT行业如何拿高薪吧,这才是关键!我认为,能长期做到以下32点的...
  • 数据挖掘-K-近邻算法

    万次阅读 2020-12-02 17:54:15
    微信搜索:“二十同学” 公众号,欢迎关注一条一样的成长之路 1. K-近邻算法 k-近邻算法(k Nearest Neighbor),是最基本的分类算法,其基本思想是采用测量不同特征值之间的距离方法进行分类。 2. 算法原理 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,067,487
精华内容 426,994
关键字:

当k不存在时

友情链接: LED2.zip