scikit-learn kmeans++

2023-10-27

聚类分析在客户细分中极为重要。有三类比较常见的聚类模型,K-mean聚类、层次(系统)聚类、最大期望EM算法。在聚类模型建立过程中,一个比较关键的问题是如何评价聚类结果如何,会用一些指标来评价。 
原文:http://blog.csdn.net/sinat_26917383/article/details/70240628


一、scikit-learn中的Kmeans介绍

scikit-learn 是一个基于Python的Machine Learning模块,里面给出了很多Machine 
Learning相关的算法实现,其中就包括K-Means算法。

官网scikit-learn案例地址:http://scikit-learn.org/stable/modules/clustering.html#k-means 
部分来自:scikit-learn 源码解读之Kmeans——简单算法复杂的说 
这里写图片描述

各个聚类的性能对比: 
这里写图片描述

优点:

原理简单
速度快
对大数据集有比较好的伸缩性

缺点:

需要指定聚类 数量K
对异常值敏感
对初始值敏感
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1、相关理论

参考:K-means算法及文本聚类实践

  • (1)中心点的选择

k-meams算法的能够保证收敛,但不能保证收敛于全局最优点,当初始中心点选取不好时,只能达到局部最优点,整个聚类的效果也会比较差。可以采用以下方法:k-means中心点

选择彼此距离尽可能远的那些点作为中心点; 
先采用层次进行初步聚类输出k个簇,以簇的中心点的作为k-means的中心点的输入。 
多次随机选择中心点训练k-means,选择效果最好的聚类结果

  • (2)k值的选取

k-means的误差函数有一个很大缺陷,就是随着簇的个数增加,误差函数趋近于0,最极端的情况是每个记录各为一个单独的簇,此时数据记录的误差为0,但是这样聚类结果并不是我们想要的,可以引入结构风险对模型的复杂度进行惩罚:

这里写图片描述

λλ是平衡训练误差与簇的个数的参数,但是现在的问题又变成了如何选取λλ了,有研究[参考文献1]指出,在数据集满足高斯分布时,λ=2mλ=2m,其中m是向量的维度。

另一种方法是按递增的顺序尝试不同的k值,同时画出其对应的误差值,通过寻求拐点来找到一个较好的k值,详情见下面的文本聚类的例子。

2、主函数KMeans

参考博客:python之sklearn学习笔记 
来看看主函数KMeans:

sklearn.cluster.KMeans(n_clusters=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'
    )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

参数的意义:

  • n_clusters:簇的个数,即你想聚成几类
  • init: 初始簇中心的获取方法
  • n_init: 获取初始簇中心的更迭次数,为了弥补初始质心的影响,算法默认会初始10个质心,实现算法,然后返回最好的结果。
  • max_iter: 最大迭代次数(因为kmeans算法的实现需要迭代)
  • tol: 容忍度,即kmeans运行准则收敛的条件
  • precompute_distances:是否需要提前计算距离,这个参数会在空间和时间之间做权衡,如果是True 会把整个距离矩阵都放到内存中,auto 会默认在数据样本大于featurs*samples 的数量大于12e6 的时候False,False 时核心实现的方法是利用Cpython 来实现的
  • verbose: 冗长模式(不太懂是啥意思,反正一般不去改默认值)
  • random_state: 随机生成簇中心的状态条件。
  • copy_x: 对是否修改数据的一个标记,如果True,即复制了就不会修改数据。bool 在scikit-learn 很多接口中都会有这个参数的,就是是否对输入数据继续copy 操作,以便不修改用户的输入数据。这个要理解Python 的内存机制才会比较清楚。
  • n_jobs: 并行设置
  • algorithm: kmeans的实现算法,有:’auto’, ‘full’, ‘elkan’, 其中 ‘full’表示用EM方式实现

虽然有很多参数,但是都已经给出了默认值。所以我们一般不需要去传入这些参数,参数的。可以根据实际需要来调用。

3、简单案例一

参考博客:python之sklearn学习笔记 
本案例说明了,KMeans分析的一些类如何调取与什么意义。

import numpy as np
from sklearn.cluster import KMeans
data = np.random.rand(100, 3) #生成一个随机数据,样本大小为100, 特征数为3

#假如我要构造一个聚类数为3的聚类器
estimator = KMeans(n_clusters=3)#构造聚类器
estimator.fit(data)#聚类
label_pred = estimator.labels_ #获取聚类标签
centroids = estimator.cluster_centers_ #获取聚类中心
inertia = estimator.inertia_ # 获取聚类准则的总和
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

estimator初始化Kmeans聚类;estimator.fit聚类内容拟合; 
estimator.label_聚类标签,这是一种方式,还有一种是predict;estimator.cluster_centers_聚类中心均值向量矩阵 
estimator.inertia_代表聚类中心均值向量的总和

4、案例二

案例来源于:使用scikit-learn进行KMeans文本聚类

from sklearn.cluster import KMeans

num_clusters = 3
km_cluster = KMeans(n_clusters=num_clusters, max_iter=300, n_init=40, \
                    init='k-means++',n_jobs=-1)

#返回各自文本的所被分配到的类索引
result = km_cluster.fit_predict(tfidf_matrix)

print "Predicting result: ", result
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

km_cluster是KMeans初始化,其中用init的初始值选择算法用’k-means++’; 
km_cluster.fit_predict相当于两个动作的合并:km_cluster.fit(data)+km_cluster.predict(data),可以一次性得到聚类预测之后的标签,免去了中间过程。

  • n_clusters: 指定K的值
  • max_iter: 对于单次初始值计算的最大迭代次数
  • n_init: 重新选择初始值的次数
  • init: 制定初始值选择的算法
  • n_jobs: 进程个数,为-1的时候是指默认跑满CPU
  • 注意,这个对于单个初始值的计算始终只会使用单进程计算,
  • 并行计算只是针对与不同初始值的计算。比如n_init=10,n_jobs=40,
  • 服务器上面有20个CPU可以开40个进程,最终只会开10个进程

其中:

km_cluster.labels_
km_cluster.predict(data)
  • 1
  • 2

这是两种聚类结果标签输出的方式,结果貌似都一样。都需要先km_cluster.fit(data),然后再调用。

5、案例四——Kmeans的后续分析

Kmeans算法之后的一些分析,参考来源:用Python实现文档聚类

from sklearn.cluster import KMeans

num_clusters = 5

km = KMeans(n_clusters=num_clusters)

%time km.fit(tfidf_matrix)


clusters = km.labels_.tolist()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

分为五类,同时用%time来测定运行时间,把分类标签labels格式变为list。

  • (1)模型保存与载入
from sklearn.externals import joblib

# 注释语句用来存储你的模型
joblib.dump(km,  'doc_cluster.pkl')
km = joblib.load('doc_cluster.pkl')
clusters = km.labels_.tolist()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • (2)聚类类别统计
frame = pd.DataFrame(films, index = [clusters] , columns = ['rank', 'title', 'cluster', 'genre'])
frame['cluster'].value_counts()
  • 1
  • 2
  • (3)质心均值向量计算组内平方和

选择更靠近质心的点,其中 km.cluster_centers_代表着一个 (聚类个数*维度数),也就是不同聚类、不同维度的均值。 
该指标可以知道: 
一个类别之中的,那些点更靠近质心; 
整个类别组内平方和。

类别内的组内平方和要参考以下公式: 
这里写图片描述 
这里写图片描述 
通过公式可以看出: 
质心均值向量每一行数值-每一行均值(相当于均值的均值) 
注意是平方。其中,n代表样本量,k是聚类数量(譬如聚类5) 
其中,整篇的组内平方和可以通过来获得总量:

km.inertia_
  • 1

.


二、大数据量下的Mini-Batch-KMeans算法

部分内容参考来源:scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法 
当数据量很大的时候,Kmeans 显然还是很弱的,会比较耗费内存速度也会收到很大影响。scikit-learn 提供了MiniBatchKMeans算法,大致思想就是对数据进行抽样,每次不使用所有的数据来计算,这就会导致准确率的损失。

MiniBatchKmeans 继承自Kmeans 因为MiniBathcKmeans 本质上还利用了Kmeans 的思想.从构造方法和文档大致能看到这些参数的含义,了解了这些参数会对使用的时候有很大的帮助。batch_size 是每次选取的用于计算的数据的样本量,默认为100.

Mini Batch K-Means算法是K-Means算法的变种,采用小批量的数据子集减小计算时间,同时仍试图优化目标函数,这里所谓的小批量是指每次训练算法时所随机抽取的数据子集,采用这些随机产生的子集进行训练算法,大大减小了计算时间,与其他算法相比,减少了k-均值的收敛时间,小批量k-均值产生的结果,一般只略差于标准算法。

该算法的迭代步骤有两步: 
1:从数据集中随机抽取一些数据形成小批量,把他们分配给最近的质心 
2:更新质心 
与K均值算法相比,数据的更新是在每一个小的样本集上。对于每一个小批量,通过计算平均值得到更新质心,并把小批量里的数据分配给该质心,随着迭代次数的增加,这些质心的变化是逐渐减小的,直到质心稳定或者达到指定的迭代次数,停止计算 
Mini Batch K-Means比K-Means有更快的 收敛速度,但同时也降低了聚类的效果,但是在实际项目中却表现得不明显 
一张k-means和mini batch k-means的实际效果对比图 
这里写图片描述

来看一下 MiniBatchKMeans的python实现: 
官网链接案例一则链接

主函数 :

MiniBatchKMeans(n_clusters=8, init=’k-means++’, max_iter=100, batch_size=100, verbose=0, compute_labels=True, random_state=None, 
tol=0.0, max_no_improvement=10, init_size=None, n_init=3, reassignment_ratio=0.01)
  • 1
  • 2

相关参数解释(来自博客:用scikit-learn学习K-Means聚类):

  • random_state: 随机生成簇中心的状态条件,譬如设置random_state = 9
  • tol: 容忍度,即kmeans运行准则收敛的条件
  • max_no_improvement:即连续多少个Mini Batch没有改善聚类效果的话,就停止算法, 
    和reassignment_ratio, max_iter一样是为了控制算法运行时间的。默认是10.一般用默认值就足够了。

  • batch_size:即用来跑Mini Batch 
    KMeans算法的采样集的大小,默认是100.如果发现数据集的类别较多或者噪音点较多,需要增加这个值以达到较好的聚类效果。

  • reassignment_ratio: 
    某个类别质心被重新赋值的最大次数比例,这个和max_iter一样是为了控制算法运行时间的。这个比例是占样本总数的比例, 
    乘以样本总数就得到了每个类别质心可以重新赋值的次数。如果取值较高的话算法收敛时间可能会增加,尤其是那些暂时拥有样本数较少的质心。 
    默认是0.01。如果数据量不是超大的话,比如1w以下,建议使用默认值。 如果数据量超过1w,类别又比较多,可能需要适当减少这个比例值。 
    具体要根据训练集来决定。
import time

import numpy as np
import matplotlib.pyplot as plt

from sklearn.cluster import MiniBatchKMeans, KMeans
from sklearn.metrics.pairwise import pairwise_distances_argmin
from sklearn.datasets.samples_generator import make_blobs

# 获取数据
np.random.seed(0)

batch_size = 45
centers = [[1, 1], [-1, -1], [1, -1]]
n_clusters = len(centers)
X, labels_true = make_blobs(n_samples=3000, centers=centers, cluster_std=0.7)

# kmeans
# Compute clustering with Means

k_means = KMeans(init='k-means++', n_clusters=3, n_init=10)
t0 = time.time()
k_means.fit(X)
t_batch = time.time() - t0

# MiniBatchKMeans

mbk = MiniBatchKMeans(init='k-means++', n_clusters=3, batch_size=batch_size,
                      n_init=10, max_no_improvement=10, verbose=0)
t0 = time.time()
mbk.fit(X)
t_mini_batch = time.time() - t0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

内容跟kmeans很像,只是一般多加一个参数,batch_size。

.


三、sklearn中的cluster进行kmeans聚类

参考博客:python之sklearn学习笔记

import numpy as np
from sklearn import cluster
data = np.random.rand(100, 3) #生成一个随机数据,样本大小为100, 特征数为3
k = 3 # 假如我要聚类为3个clusters
[centroid, label, inertia] = cluster.k_means(data, k)
  • 1
  • 2
  • 3
  • 4
  • 5

.


延伸一:数据如何做标准化

data_zs = 1.0*(data - data.mean())/data.std() #数据标准化
  • 1

.

延伸二:Kmeans可视化案例

来源于博客:使用python-sklearn-机器学习框架针对140W个点进行kmeans基于密度聚类划分

from sklearn.cluster import KMeans
from sklearn.externals import joblib
import numpy
import time
import matplotlib.pyplot as plt

if __name__ == '__main__':
    ## step 1: 加载数据
    print "step 1: load data..."
    dataSet = []
    fileIn = open('./data.txt')
    for line in fileIn.readlines():
        lineArr = line.strip().split(' ')
        dataSet.append([float(lineArr[0]), float(lineArr[1])])

    #设定不同k值以运算
    for k in range(2,10):
        clf = KMeans(n_clusters=k) #设定k  !!!!!!!!!!这里就是调用KMeans算法
        s = clf.fit(dataSet) #加载数据集合
        numSamples = len(dataSet) 
        centroids = clf.labels_
        print centroids,type(centroids) #显示中心点
        print clf.inertia_  #显示聚类效果
        mark = ['or', 'ob', 'og', 'ok', '^r', '+r', 'sr', 'dr', '<r', 'pr']
        #画出所有样例点 属于同一分类的绘制同样的颜色
        for i in xrange(numSamples):
            #markIndex = int(clusterAssment[i, 0])
            plt.plot(dataSet[i][0], dataSet[i][1], mark[clf.labels_[i]]) #mark[markIndex])
        mark = ['Dr', 'Db', 'Dg', 'Dk', '^b', '+b', 'sb', 'db', '<b', 'pb']
        # 画出质点,用特殊图型
        centroids =  clf.cluster_centers_
        for i in range(k):
            plt.plot(centroids[i][0], centroids[i][1], mark[i], markersize = 12)
            #print centroids[i, 0], centroids[i, 1]
        plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

这里写图片描述

延伸三:模型保存

from sklearn.externals import joblib
joblib.dump(km_cluster, "/..../train_model.m")
km_cluster = joblib.load(".../train_model.m")
kmeans_SSE.labels_
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scikit-learn kmeans++ 的相关文章

  • 如何运用MATLAB实现K-MEANS聚类分析

    由于自己最近在学习聚类分析 也算是一个入门 相当于将自己这段时间的学习成果进行一个总结 分享给更多打算学习聚类分析或者需要用到聚类分析的同学们 在了解K MEANS聚类分析之前 我们首先明确聚类的含义 聚类是将数据分类到不同的类或者簇这样的
  • PCL 法向量夹角约束的欧式聚类分割

    目录 一 概述 二 代码实现 三 结果展示 一 概述 目前广为流传的欧式聚类都是 PCL 欧式聚类分割一文中的实现方式 但是 完整版的点云欧式聚类算法是可以附带法向量夹角约束的 具体使用方法见本文 二 代码实现 include
  • 《机器学习》实验五:实现K-means聚类

    机器学习 实验五 实现K means聚类 机器学习 实验五 实现K means聚类 实验目的 实验原理 实验内容与要求 实验器材 设备 元器件 实验步骤 心得体会 机器学习 实验五 实现K means聚类 实验目的 了解聚类的基本概念 掌握
  • R语言第八次课堂小测 rattle的应用(包括rattle的安装)

    题目 安装rattle 并使用rattle 用三种聚类方法对鸢尾花数据集进行聚类 步骤一 修改镜像源 首先 在Rstudio上打开如下界面 进入后 找到packages 再点击change 下图是已经更换了的截图 选择中国的任意一个镜像 最
  • 机器学习:聚类算法简介

    学习目标 知道聚类算法的概念 了解聚类算法和分类算法的最大区别 1 认识聚类算法 使用不同的聚类准则 产生的聚类结果不同 1 1 聚类算法在现实中的应用 用户画像 广告推荐 Data Segmentation 搜索引擎的流量推荐 恶意流量识
  • GMM高斯混合模型聚类的EM估计过程matlab仿真

    目录 1 算法概述 2 仿真效果 3 MATLAB源码 1 算法概述 高斯混合模型 Gaussian Mixed Model 指的是多个高斯分布函数的线性组合 理论上GMM可以拟合出任意类型的分布 通常用于解决同一集合下的数据包含多个不同的
  • 第二个作业:贝叶斯估计

    第二个作业 贝叶斯估计实战 第一小题 试使用西瓜数据集3 0作为训练集 通过AIC准则构建一个贝叶斯网 我先看看scikit learn官网上关于贝叶斯估计 特别是贝叶斯网的构建方面的包和函数 然后再看看这个AIC准则具体是怎么样的 如何构
  • 机器学习--聚类(12)

    一 基本概念 聚类的概念 一种无监督的学习 事先不知道类别 自动将相似的对象归到同一个簇中 应用场景 文档分类器 客户分类 保险欺诈检测 乘车数据分析 二 距离计算 对于有序距离 其中P 1为曼哈顿距离 P 2为欧氏距离 对于无序距离 使用
  • 机器学习-----聚类kmeans肘部图、轮廓图的绘制、以及聚类和聚类中心散点图的绘制

    1 kmeans肘部图和轮廓图 import pandas as pd import numpy as np import matplotlib pyplot as plt from sklearn cluster import KMean
  • 舆情&传染病时空分析文献阅读笔记

    1 朱炤瑗 秦昆 关庆锋 罗萍 姚博睿 漆林 周扬 COVID 19期间国家关系交互网络时空分析研究 J 地理与地理信息科学 2022 38 01 15 22 研究问题 COVID 19疫情不断蔓延为国际政治 外交关系等带来深刻影响 目前基
  • OpenAi 嵌入

    什么是嵌入 OpenAI 的文本嵌入衡量文本字符串的相关性 嵌入通常用于 搜索 结果按与查询字符串的相关性排序 聚类 其中文本字符串按相似性分组 推荐 推荐具有相关文本字符串的项目 异常检测 识别出相关性很小的异常值 多样性测量 分析相似性
  • Open3D 进阶(4)高斯混合点云聚类

    目录 一 算法原理 1 原理概述 2 实现流程 3 参考文献 二 代码实现 三 结果展示 四 测试数据 本文由CSDN点云侠原创 原文链接 爬虫网站自重 一 算法原理 1 原理概述 高斯混合聚类 GMM 算法假设数据点是由一个或多个高斯分布
  • 《数据处理与知识发现》章节测验复习

    数据处理与知识发现 章节测验 第1章 绪论 章节测验 第2章 数据预处理 章节测验 第3章 数据仓库 章节测验 第4章 关联规则挖掘 章节测验 第5章 聚类分析方法 章节测验 第6章 分类规则挖掘 章节测验 首先我们要明白关联分析 聚类分析
  • 点云数据做简单的平面的分割 三维场景中有平面,杯子,和其他物体 实现欧式聚类提取 对三维点云组成的场景进行分割

    点云分割是根据空间 几何和纹理等特征对点云进行划分 使得同一划分内的点云拥有相似的特征 点云的有效分割往往是许多应用的前提 例如逆向工作 CAD领域对零件的不同扫描表面进行分割 然后才能更好的进行空洞修复曲面重建 特征描述和提取 进而进行基
  • 算法岗面试问题总结(二)

    文章目录 1 SVM的loss是啥 2 kmeans聚类如何选择初始点 3 RF和GBDT谁更容易过拟合 偏差和方差 4 xgb的分类树也是用残差吗 不是的话是什么 5 讲讲数据倾斜怎么处理 6 请你说说SVM的优缺点 7 LR和SVM的联
  • 无监督聚类评价指标

    无监督聚类评价指标 文章目录 无监督聚类评价指标 SEE SC和CH 寻找k 评价指标 轮廓系数法 SC 评价指标 CH系数法 无监督聚类算法结果好坏的评价指标 Compactness 紧密性 CP Separation 间隔性 SP Da
  • 《机器学习》理论——速读学习2 常用方法(3)

    机器学习 理论 速读学习2 常用方法 3 该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 time 2021 12 24 学习目标 我需要了解神经网络除了工程化部分之外的更多内容 以便于在实际有效数据中可以获得抽象
  • 单细胞测序数据的降维方法和细胞亚型鉴定聚类方法

    单细胞测序数据的降维方法和细胞亚型鉴定聚类方法是单细胞转录组分析中常用的技术 下面是对这些方法的总结 1 降维方法 主成分分析 PCA PCA是一种常用的降维方法 通过线性变换将高维数据转化为低维表示 保留最大的方差 t SNE t SNE
  • Python入门到实战(十一)无监督学习、KMeans、KNN、实现图像分割、监督学习VS无监督学习

    Python入门到实战 十一 无监督学习 KMeans KNN 实现图像分割 监督学习VS无监督学习 无监督学习unsupervised learning 特点 应用 K均值聚类 核心流程 核心公式 KMeans VS KNN 实战 KMe
  • 【Lidar】Open3D点云DBSCAN聚类算法:基于密度的点云聚类(单木分割)附Python代码

    1 DBSCAN算法介绍 DBSCAN聚类算法是一种基于密度的聚类算法 全称为 基于密度的带有噪声的空间聚类应用 英文名称为Density Based Spatial Clustering of Applications with Nois

随机推荐

  • ACM MM 2022

    有预训练 460多m 来源丨https zhuanlan zhihu com p 547671620 Bidirectional Self Training with Multiple Anisotropic Prototypes for
  • Glide使用及原理分析

    文章目录 前言 一 Glide的基本使用 二 Glide的网络请求 1 HttpURLConnection实现一个原生图片加载框架 2 Glide为什么能监听网络变化 三 Glide的生命周期 1 Fragment的生命周期 动态加载Fra
  • 解决线程安全问题的三种方法

    解决线程安全问题的三种方法 一 使用同步代码块 如 卖票案例 出现了线程安全 重复的票不能出现 步骤 成员位置建立锁对象 synchronized 锁对象 出现安全问题代码 1 锁对象 任意对象 2 必须保证多个线程使用的是同一个锁对象 3
  • pip配置问题解决-如何使用修改windows系统环境变量

    问题发现 在使用pip安装环境的时候 出现了如下的问题 解决办法 我是在windows系统环境变量上添加上python的Scripts文件夹路径 将其放到环境变量的path中去 操作如下 右键我的电脑 点开属性 在最下面的 关于 上 找到
  • 力扣:删除链表中的节点

    237 删除链表中的节点 请编写一个函数 用于 删除单链表中某个特定节点 在设计函数时需要注意 你无法访问链表的头节点 head 只能直接访问 要被删除的节点 题目数据保证需要删除的节点 不是末尾节点 示例 1 输入 head 4 5 1
  • 区块链节点和区块区别_区块链的常识之,区块链节点,是什么?

    专业科普 区块链节点 通常指的是区块链网络中的计算机 也就是说任何连接到区块链网络的计算机 包括手机 矿机等 都称为节点 比如说比特币网络 是一个公有链 用户在自己的联网电脑上运行比特币程序时 这个电脑就成为比特币区块链网络中的一个节点 是
  • 利用栈实现简单表达式求值

    简单表达式求值 关键点 首先明确要使用的数据结构 本文采用栈来实现 为了分别操作数字和运算符 采用双栈 一个数值栈和一个运算符栈 根据栈顶运算符和待入栈运算符的优先级的判断 产生中间结果 而中间结果作为最终结果的一部分需要再次入栈 栈顶运算
  • DEDECMS单独调用指定文章

    dede arclist idlist 指定ID limit 0 1 a href field title a 描述 field description dede arclist
  • js中获取body html元素

  • myBatis实现多对多操作的sql语句

    文章目录 1 角色对人 2 人对角色 3 创建数据库语句 总结 1 角色对人 实现角色对人的多对多查询 将有角色的人筛选出来 实现角色对人的多对多查询 SELECT u r id AS rid r role name r role desc
  • Go_方法、方法重写、方法与函数的区别

    方法 方法是绑定在自定义类型上的 常用在结构体上 方法方法不能直接调用 只能通过所绑定s类型的变量来调用 因为方法是和类型做关联的 方法是值拷贝的传递方式 如果希望改变结构体变量的值 需要通过结构体指针实现 方法名首字母大写为公共 小写为私
  • Tomcat的下载及其使用

    目录 一 Tomcat是什么 二 Tomcat的下载安装 1 在搜索框搜索Tomcat 2 下载 3 Tomcat里面的一些具体内容 三 运行Tomcat 1 直接点击脚本运行 2 使用浏览器访问 3 部署页面到Tomcat 一 Tomca
  • Win10如何彻底删除360的办法

    很多用户在购买电脑或者重装系统之后都会给电脑安装360安全卫士 其实360是一款知名的流氓软件 感觉进行了彻底的删除工作 其实还残留了很多 那Win10如何彻底删除360呢 下面小编就来给大家展示一下具体的办法 2022新版Win10 64
  • SQL Part3 --- 聚合操作符

    SQL 聚合操作符 聚合操作符 Aggregate Operators COUNT A SUM A AVG A MAX A MIN A GROUP BY and HAVING 聚合操作符 Aggregate Operators Sailor
  • 在Spring-Boot中进行单元测试

    要进行单元测试 需要引入依赖
  • 关于stl容器的迭代器失效问题

    场景 在项目中使用stl容器的时候 多线程环境下出错 调试很久发现问题是使用容器的时候由于容器扩容导致的线程不安全 还有扩容导致的迭代器失效问题 于是就想着把迭代器失效的问题总结一下 场景重现1 我在项目开发中使用vector时 由于扩容导
  • redis-benchmark工具入门之生成压测数据写入redis

    前言 redis benchmark是Redis自带的基准测试工具 可以用来压测redis目标集群的性能 也可以生成测试数据 方便测试 安装redis benchmark 本文Ubuntu系统 安装工具包 sudo apt get inst
  • 怎样正确查看Linux的内存占用情况

    了个24小时的稳定性测试 探讨了Linux的Mem使用情况 看内存最方便的命令是free m 如 root host free m total used free shared buffers cached Mem 1024 1005 19
  • 100ask_imx6ull视频监控项目-内网穿透(六)

    100ask imx6ull视频监控项目 内网穿透 六 在前面的课程 Ffmpeg和Nginx都运行在开发板上 拉流端只能在同一个局域网内 不能通过局域网外的互联网访问Ngnix 想在任何地方 都可以通过互联网访问Nginx 怎么办 方法1
  • scikit-learn kmeans++

    聚类分析在客户细分中极为重要 有三类比较常见的聚类模型 K mean聚类 层次 系统 聚类 最大期望EM算法 在聚类模型建立过程中 一个比较关键的问题是如何评价聚类结果如何 会用一些指标来评价 原文 http blog csdn net s