密度聚类方法的指导思想是,只要样本点的密度大于某阀值,则将该样本添加到最近的簇中。

基于密度的聚类算法假设聚类结构能够通过样本分布的紧密程度确定,以数据集在空间分布上的稠密程度为依据进行聚类,即只要一个区域中的样本密度大于某个阈值,就把它划入与之相近的簇中。

密度聚类从样本密度的角度进行考察样本之间的可连接性,并由可连接样本不断扩展直到获得最终的聚类结果。这类算法可以克服K-means、BIRCH等只适用于凸样本集的情况。

这类算法能克服基于距离的算法只能发现“类圆形”(凸)的聚类的缺点,课发现任意形状的聚类,且对噪声数据不敏感。但是计算密度单元的计算复杂度大,需要建立空间索引来降低计算量。

常用的密度聚类算法:DBSCAN、MDCA、OPTICS、DENCLUE等。

一、 DBSCAN算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是基于一组邻域参数(ε,MinPts)来描述样本分布的紧密程度,相比于基于划分的聚类方法和层次聚类方法,DBSCAN算法将簇定义为密度相连的样本的最大集合,能够将密度足够高的区域划分为簇,不需要给定簇数量,并可在有噪声的空间数据集中发现任意形状的簇。

1、基本概念(参考西瓜书):

给定的数据集 D=x1,x2,...,xmD={x_1,x_2,...,x_m}D=x1​,x2​,...,xm​

  1. ε-邻域(Eps):对 xj∈Dx_j∈Dxj​∈D,其 ε-邻域包含 DDD 中与 xjx_jxj​ 的距离不大于ε的所有样本。

  1. MinPts:ε-邻域内样本个数最小值。

  2. 核心对象:若 xjx_jxj​ 的 ε-邻域至少包含MinPts个样本,∣Nε(xj)∣≥MinPts|N_{ε(x_j)}|≥MinPts∣Nε(xj​)​∣≥MinPts,则 xjx_jxj​为一个核心对象。

  3. 密度直达(directly density-reachable):若 xjx_jxj​ 位于 xix_ixi​ 的ε-邻域中,且 xix_ixi​ 是核心对象,则称 xjx_jxj​ 由 xix_ixi​ 密度直达。密度直达关系通常不满足对称性,除非 xjx_jxj​ 也是核心对象。

  4. 密度可达(density-reachable):对 xix_ixi​ 与 xjx_jxj​ ,若存在样本序列 p1,p2,...,pnp_1,p_2,...,p_np1​,p2​,...,pn​,其中 p1=xi,pn=xjp_1=x_i,p_n=x_jp1​=xi​,pn​=xj​,p1p_1p1​, p2p_2p2​, …, pn−1p_{n-1}pn−1​ 均为核心对象且 pi+1p_{i+1}pi+1​ 从 pip_ipi​ 密度直达,则称 xjx_jxj​ 由 xix_ixi​ 密度可达。密度可达关系满足直递性,但不满足对称性。

  5. 密度相连(density-connected):对 xix_ixi​ 与 xjx_jxj​ ,若存在 xkx_kxk​ 使得 xix_ixi​ 与 xjx_jxj​ 均由 xkx_kxk​ 密度可达,则称 xix_ixi​ 与 xjx_jxj​ 密度相连。密度相连关系满足对称性。

  6. 基于密度的簇:由密度可达关系导出的最大的密度相连样本集合C,簇C满足以下两个性质:

    • 连接性(connectivity):xi∈C,xj∈C⟹x_i∈C,x_j∈C \impliesxi​∈C,xj​∈C⟹ xix_ixi​ 与 xjx_jxj​ 密度相连;

    • 最大性(maximality):xi∈Cx_i∈Cxi​∈C,xjx_jxj​ 由 xix_ixi​ 密度可达 ⟹\implies⟹ xj∈Cx_j∈Cxj​∈C。

  7. 噪声:不包含在任何簇中的对象成为噪声。

2、DBSCAN算法原理与流程

DBSCAN算法先任选数据集中的一个核心对象作为种子,创建一个簇并找出它所有的核心对象,寻找合并核心对象密度可达的对象,直到所有核心对象均被访问过为止。

DBSCAN的簇中可以少包含一个核心对象:如果只有一个核心对象,则其他非核心对象都落在核心对象的ε-邻域内;如果有多个核心对象,则任意一个核心对象的ε-邻域内至少有一个其他核心对象,否则这两个核心对象无法密度可达;包含过少对象的簇可以被认为是噪音。

3、DBSCAN算法的优缺点

优点:

  • 不需要事先给定簇的数目k;

  • 适于稠密的非凸数据集,可以发现任意形状的簇;

  • 可以在聚类时发现噪音点、对数据集中的异常点不敏感;

  • 对样本输入顺序不敏感。

缺点:

  • 对于高维数据效果不好;

  • 不适于数据集中样本密度差异很小的情况;

  • 调参复杂,

    • 给定eps选择过大的MinPts会导致核心对象数量减少,使得一些包含对象较少的自然簇被丢弃;

    • 选择过小的MinPts会导致大量对象被标记为核心对象,从而将噪声归入簇;

    • 给定MinPts选择过小的eps会导致大量的对象被误标为噪声,一个自然簇被误拆为多个簇;

    • 选择过大的eps则可能有很多噪声被归入簇,而本应分离的若干自然簇也被合并为一个簇;

  • 数据量很大时算法收敛的时间较长,可对搜索最近邻时建立的KD-tree或Ball-tree进行规模限制。

4、DBSCAN算法的scikit-learn API


5、DBSCAN案例

# -*- coding: utf-8 -*-import jieba
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.cluster import DBSCAN
from sklearn.decomposition import PCA
import matplotlib.pyplot as pltclass DbscanClustering():def __init__(self, stopwords_path=None):self.stopwords = self.load_stopwords(stopwords_path)self.count_vectorizer = CountVectorizer()self.tfidf_transformer = TfidfTransformer()# 加载停用词def load_stopwords(self, stopwords=None):if stopwords:with open(stopwords, 'r', encoding='utf-8') as f:return [line.strip() for line in f]else:return []def preprocess_data(self, corpus_path):"""文本预处理,每行一个文本:param corpus_path::return:"""corpus = []with open(corpus_path, 'r', encoding='utf-8') as f:for line in f:corpus.append(' '.join([word for word in jieba.lcut(line.strip()) if word not in self.stopwords]))print("\nlen(corpus) = {0}----corpus[0] = {1}".format(len(corpus), corpus[0]))return corpus# 获取tfidf矩阵def get_text_tfidf_matrix(self, corpus):self.count_vectorizer.fit(corpus)  # CountVectorizer是通过fit_transform函数将文本中的词语转换为词频矩阵# 获取词袋中所有词语words = self.count_vectorizer.get_feature_names()print("\n词袋中所有词语:len(words) = {0}----word = {1}".format(len(words), words))vectorizer_result = self.count_vectorizer.transform(corpus).toarray()  # .toarray() 是将结果转化为稀疏矩阵矩阵的表示方式;【25行表示25篇文档,3863列表示构建的词典库词语;元素数值表示该词汇在该篇文章中的词频】print("\nvectorizer_result.shape = {0}----vectorizer_result = \n{1}".format(vectorizer_result.shape, vectorizer_result))tfidf_result = self.tfidf_transformer.fit_transform(vectorizer_result).toarray()  # 获取tfidf矩阵print("\ntfidf_result.shape = {0}----tfidf_result = \n{1}".format(tfidf_result.shape, tfidf_result))return tfidf_resultdef pca(self, tfidf_result, n_components=2):  # 由3863个特征维度降维成二维"""PCA对数据进行降维:param tfidf_result::param n_components::return:"""pca = PCA(n_components=n_components)pca_result = pca.fit_transform(tfidf_result)print("\npca_result.shape = {0}----pca_result = {1}".format(pca_result.shape, pca_result))return pca_resultdef dbscan(self, corpus_path, eps=0.1, min_samples=3, fig=True):"""DBSCAN:基于密度的文本聚类算法:param corpus_path: 语料路径,每行一个文本:param eps: DBSCA中半径参数:param min_samples: DBSCAN中半径eps内最小样本数目:param fig: 是否对降维后的样本进行画图显示:return:"""corpus = self.preprocess_data(corpus_path)  # 文本预处理,每行一个文本tfidf_result = self.get_text_tfidf_matrix(corpus)   # 获取tfidf矩阵【tfidf_result.shape = (25, 3863)】pca_weights = self.pca(tfidf_result)    # PCA对数据进行降维【(25, 3863)-->(25, 2)】clf = DBSCAN(eps=eps, min_samples=min_samples)y_predict = clf.fit_predict(pca_weights)    # y_predict.shape = (25,)----y_predict = [ 0 -1  0  0  0  0  0 -1 -1  0  0  0  0  0  0 -1 -1 -1 -1 -1 -1 -1  1  1  1]print("\ny_predict.shape = {0}----y_predict = {1}".format(y_predict.shape, y_predict))if fig:plt.scatter(pca_weights[:, 0], pca_weights[:, 1], c=y_predict)plt.show()# ************************************************** 统计各个主题下的文章序号:开始 **************************************************result = {}  # 每个样本所属的簇for text_idx, label_idx in enumerate(y_predict):if label_idx not in result:result[label_idx] = [text_idx]else:result[label_idx].append(text_idx)return result# ************************************************** 统计各个主题下的文章序号:开始 **************************************************if __name__ == '__main__':dbscan = DbscanClustering(stopwords_path='../data/stop_words.txt')result = dbscan.dbscan('../data/test_data.txt', eps=0.05, min_samples=3)print("\nDBSCAN聚类结果:result = {0}".format(result))

打印结果:

len(corpus) = 25----corpus[0] = 鲍勃 库西 奖归 属   NCAA 最强 控卫 坎巴 弗神 新浪 体育讯 本赛季 NCAA 末段 各项 奖项 评选 出炉 评选 最佳 控卫 鲍勃 库西 奖 下周 最终 四强 战时 公布 鲍勃 库西 奖是 由奈 史密斯 篮球 名人堂 提供 旨在 奖励 年度 最佳 大学 控卫 最终 获奖 球员 几名 热门 人选   NCAA 疯狂 专题 主页 上线 点击 链接 查看 精彩内容 吉梅尔 弗雷 戴特 杨百翰 大学 弗神 吉梅尔 弗雷 戴特 备受 关注 一名 射手 他会用 终结 对手 脚踝 变向 掉 面前 防守 任意 一支 手 得分 犯规 提前 两份 划入 帐 一名 命中率 高达 罚球 手 弗雷 戴特 控卫 具备 一点 特质 一位 赢家 一位 领导者 赛季 至始 至终 稳定 领导 球队 这是 无可比拟 杨百翰 大学 主教练 戴夫 罗斯 称赞 道 得分 能力 毋庸置疑 带领 球队 获胜 能力 控卫 职责 主场 之外 比赛 客场 立场 取胜 场 表现 很棒 弗雷 戴特 NBA 取得成功 专业人士 资格 做出 判断 喜爱 凯尔特人 主教练 多克 里 弗斯 说道 很棒 看过 ESPN 片段 剪辑 剪辑 超级 巨星 一名 优秀 NBA 球员 诺兰 史密斯 杜克大学 赛季 球队 控卫凯瑞 厄尔 文因 脚趾 伤病 缺席 赛季 大部分 比赛 诺兰 史密斯 接管 球权 进攻 端上 足 发条 ACC 联盟 杜克大学 分区 得分 榜上 名列前茅 分区 助攻 榜上 占据 头名 众强 林立 ACC 联盟 前无古人 全美 球员 凯瑞 厄尔 文 受伤 接管 球队 毫无准备 杜克 主教练 迈克 沙舍 夫斯基 赞扬 道 他会 比赛 带入 节奏 得分 组织 领导 球队 无所不能 攻防 俱佳 持球 防守 提高 拥有 辉煌 赛季 坎巴 沃克 康涅狄格 大学 坎巴 沃克 带领 康涅狄格 赛季 毛伊岛 邀请赛 力克 密歇根州 肯塔基 等队 夺冠 他场 分 助攻 最佳 球员 大东 赛区 锦标赛 全国 锦标赛 他场 27.1 分 6.1 篮板 5.1 次 助攻 依旧 给力 疯狂 表现 赛季 疯狂 表现 结束 赛季 全国 锦标赛 天 连赢 场 赢得 大东 赛区 锦标赛 冠军 归功于 坎巴 沃克 康涅狄格 大学 主教练 吉姆 卡洪 称赞 道 一名 纯正 控卫 能为 得分 单场 分 有过 单场 助攻 单场 篮板 一名 英尺 175 镑 球员 球员 领导者 球队 做 贡献 乔丹 泰勒 威斯康辛 大学 全美 持球者 乔丹 泰勒 失误 4.26 助攻 失误 全美 遥遥领先 大十 赛区 比赛 平均 35.8 分钟 失误 名 出色 得分手 全场 砍 分 击败 印第安纳 大学 比赛 证明 下半场 分 夜晚 证明 值得 首轮 顺位 见证者 印第安纳 大学 主教练 汤姆 克 雷恩 说道 一名 控卫 领导 球队 球队 变 更好 带领 球队 成功 乔丹 泰勒 威斯康辛 教练 博 莱恩 说道 诺里斯 科尔 克利夫兰 州 诺里斯 科尔 草根 传奇 上演 默默无闻 克利夫兰 州 招募 刻苦 训练 去年 夏天 加练 千次 跳投 提高 弱点 本赛季 杨斯顿 州 比赛 分 篮板 次 助攻 年 一位 球员 NCAA 联盟 名字 布雷克 格里芬 轻松 地防下 王牌 克利夫兰 州 主教练 加里 沃特斯 称赞 弟子 得分 球队 助攻 成功 团队 事 四名 球员 带领 球队 甜蜜 强 球员 球队 挡 强 大门 之外 表现 足够 出色 不远 将来 一所 熟悉 NBA 球馆 里 clay词袋中所有词语:len(words) = 3863----word = ['000999', '010', '011', '02', '05', '06', '0731', '08', '085', '1015', '104', '1080p', '11', '112', '114', '1200', '120g', '120gb', '123',..., '鼠王', '龙珠', '龙骑士']vectorizer_result.shape = (25, 3863)----vectorizer_result =
[[0 0 0 ... 0 0 0][0 0 0 ... 0 0 0][0 0 0 ... 0 0 0]...[0 0 1 ... 0 0 0][0 0 0 ... 0 0 0][1 0 0 ... 0 0 0]]tfidf_result.shape = (25, 3863)----tfidf_result =
[[0.         0.         0.         ... 0.         0.         0.        ][0.         0.         0.         ... 0.         0.         0.        ][0.         0.         0.         ... 0.         0.         0.        ]...[0.         0.         0.07715721 ... 0.         0.         0.        ][0.         0.         0.         ... 0.         0.         0.        ][0.03068967 0.         0.         ... 0.         0.         0.        ]]pca_result.shape = (25, 2)----pca_result = [[-0.12017712 -0.12284205][-0.0915156  -0.14254319][-0.10739046 -0.09180802][-0.07444247 -0.1029829 ][-0.08406123 -0.06162591][-0.12020186 -0.15522896][-0.10193968 -0.14677851][-0.18637792 -0.24639543][-0.1888214  -0.19823759][-0.15469848 -0.17603229][-0.12996653 -0.12565113][-0.09223598 -0.09226605][-0.08538788 -0.0939677 ][-0.11282769 -0.15597809][-0.10654205 -0.17453535][-0.15737857  0.40156317][-0.1919206   0.66354728][-0.16222136  0.5407142 ][-0.08377317  0.15505987][-0.13628992  0.21935654][ 0.57202062  0.05035366][ 0.36095393  0.00298632][ 0.51694688 -0.00377503][ 0.5097556   0.03851869][ 0.52849295  0.01854847]]y_predict.shape = (25,)----y_predict = [ 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 -1 -1 -1 -1 -1 -1 -1  1  1  1]DBSCAN聚类结果:result = {0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], -1: [15, 16, 17, 18, 19, 20, 21], 1: [22, 23, 24]}Process finished with exit code 0

二、 密度最大值聚类算法(MDCA)

  • MDCA(Maximum Density Clustering Algorithm)算法将基于密度的思想引入到划分聚类中,使用密度而不是初始质心作为考察簇归属情况的依据,能够自动确定簇数量并发现任意形状的簇。MDCA一般不保留噪声,因此也避免了由于阈值选择不当而造成大量对象丢弃情况。

  • MDCA算法的基本思路是寻找最高密度的对象和它所在的稠密区域,在原理上MDCA和密度的定义无关,采用任意一种密度定义公式均可,一般采用DBSCAN算法中的密度定义方式。

2.1 基本概念

给定数据集D,density(p)density(p)density(p) 表示对象 ppp 的密度,

  1. 局部密度 ρi=∑jχ(dij−dc)ρ_i=\sum_jχ(d_{ij}-d_c)ρi​=∑j​χ(dij​−dc​),其中: χ(x)={1x<00otherwiseχ(x)=\begin{cases}1 \qquad x<0 \\ 0 \qquad otherwise \end{cases}χ(x)={1x<00otherwise​

  1. 局部密度的其他定义:

  2. 高局部密度点距离:δi=min⁡j:ρj>ρi(dij)δ_i= \min\limits_{j:ρ_j>ρ_i}(d_{ij})δi​=j:ρj​>ρi​min​(dij​);在密度高于对象 iii 的所有对象中,到对象 iii 最近的距离,即高局部密度点距离。

  3. 簇的中心:那些有着比较大的局部密度 ρiρ_iρi​ 和很大的高密距离 δiδ_iδi​ 的点被认为是簇的中心。确定簇中心之后,其他点按照距离已知簇的中心最近进行分类。注:也可按照密度达的方法进行分类。

  4. 普通点:局部密度 ρiρ_iρi​大、高密距离 δiδ_iδi​小;

  5. 异常点高密距离 δiδ_iδi​ 较大但局部密度 ρiρ_iρi​ 较小的点是异常点 ;**高密距离 δiδ_iδi​ 、局部密度 ρiρ_iρi​ 都很小的点也是异常点 ;

  6. 最大密度点:可用k-近邻距离之和的倒数表示密度

  7. 密度阈值 density0density_0density0​:当对象的密度值大于密度阈值时,认为该对象属于一个比较固定的簇。在第一次构建基本簇的时候,就将这些对象添加到对应的簇中,如果小于阈值的时候,暂时认为该对象为噪声。

  8. Spmax序列的对象密度曲线: 根据所有对象与pmax的欧式距离对数据集重新排序


  • 图像横轴为对象与pmax的欧式距离,纵轴为该对象所处位置的密度。
  • 第一个波谷表明左侧的对象与pmax距离较近、处在同一个基本簇内,波谷的密度较低;
  • 波谷右侧的密度又开始升高,说明对象属于其他的簇。
  • 从数据集中移除已经划归为第一个基本簇的所有对象,从剩余对象中再次计算最大密度点并绘制对象密度曲线(b)。
  1. 簇间距离阈值dist0:对于两个基本簇Ci和Cj,采用二者最近两个成员之间的邻近度作为簇间距离


当两个基本簇的簇间距离小于给定阈值的时候,合并这两个基本簇。

  1. M值:基本簇中最多样本总数。

2.2 DensityPeak 与决策图 Decision Graph

2.3 算法步骤

(1)将数据集划分为基本簇

  • 对数据集选取最大密度点pmax,按照距离排序得到Spmax;

  • 对序列前M个样本数据进行判断,如果对象密度大于等于density0,那么将当前对象添加到基本簇Ci中;

  • 从数据集中删除Ci中包含的所有对象,处理余下的数据集,选择最大密度点pmax’,并构建基本簇Ci+1;

  • 循环操作直到数据集剩余对象的密度均小于density0。

(2)使用凝聚层次聚类的思想,合并较近的基本簇,得到最终的簇划分

  • 在所有簇中选择距离最近的两个簇进行合并;

  • 合并要求是:簇间距小于等于dist0;

  • 如果所有簇中没有簇间距小于dist0的时候,结束合并操作。

(3)处理剩余点

  • 如果保留噪声:则扫描所有剩余对象,将其中与某些簇距离小于或等于dist0的对象归入相应的最近的簇;与任何簇的距离都大于的dist0的对象视为噪声。

  • 如果不保留噪声:则把每个剩余对象划给最近的簇。

2.4 不同数据下密度最大值聚类的效果

2.5 MDCA算法的优缺点

优点:

  • 对噪声数据不敏感
  • 不依赖初始数据点的选择
  • 可以完成任意形状的聚类

缺点:

  • 算法复杂,分类速度较慢
  • 需要在测试前确定密度阈值
  • 对于高维数据,距离的度量并不是很好
  • 不适合数据集密度差异较大或整体密度基本相同的情况

机器学习-无监督学习-聚类:聚类方法(二)--- 基于密度的聚类算法【DBSCAN文本聚类算法,密度最大值文本聚类算法】相关推荐

  1. 机器学习-无监督学习-聚类:聚类方法(一)--- k-Means(k-均值)算法,k-Means++算法【使用最大期望值算法(EM算法)来求解】

    一.聚类算法 1.聚类算法概述 聚类算法:一种典型的无监督学习算法(没有目标值),主要用于将相似的样本自动归到一个类别中.在聚类算法中根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似度计 ...

  2. 算法——机器学习——无监督学习—— K均值(K-means)图解动画

    快速排序 简介 算法过程 算法过程详解 一:聚类 二:聚类中心移动 算法结束 简介 k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是,预 ...

  3. apriori算法_机器学习(无监督学习)关联规则Apriori算法原理与python实现

    关联规则Apriori算法 1.关联规则概述 关联规则算法是在一堆数据集中寻找数据之间的某种关联,通过该算法我们可以对数据集做关联分析--在大规模的数据中寻找有趣关系的任务.这些关系可以有两种形式:频 ...

  4. 针对新冠肺炎微博热搜话题使用R语言进行文本特征提取的四种方法(二) —— 基于TF-IDF的特征提取

    在对一段文本进行分词之后,有的词出现的次数会比较多,因此往往对其出现的频次进行统计,作为该词重要程度的度量.基于这个思想,词频(Term Frequency,TF)被广泛应用于基本的文本数据挖掘.在实 ...

  5. 吴恩达机器学习(二)监督学习/无监督学习

    文章目录 1.监督学习 2.无监督学习 1.监督学习 定义: 根据已有的数据集,知道输入和输出结果之间的关系.根据这种已知的关系,训练得到一个最优的模型.也就是说,在监督学习中训练数据既有特征(fea ...

  6. 吴恩达机器学习笔记-无监督学习

    机器学习-无监督学习 一.什么是无监督学习 二.聚类算法(无监督学习) 1.聚类算法的应用 2.K-Means算法 算法流程--图例 算法流程--文字描述 K-means分离不佳簇问题 K-means ...

  7. 机器学习一 -- 什么是监督学习和无监督学习?

    机器学习中的监督学习和无监督学习 说在前面 最近的我一直在寻找实习机会,很多公司给了我第一次电话面试的机会,就没有下文了.不管是HR姐姐还是第一轮的电话面试,公司员工的态度和耐心都很值得点赞,我也非常 ...

  8. 【读论文】使用基于 CNN 的非局部滤波对光流进行无监督学习

    使用基于 CNN 的非局部滤波对光流进行无监督学习 论文原文请看这里 文章目录 使用基于 CNN 的非局部滤波对光流进行无监督学习 一.引言 二. 相关工作 A. Variational Method ...

  9. 李弘毅机器学习笔记:第十六章—无监督学习

    李弘毅机器学习笔记:第十六章-无监督学习 1-of-N Encoding 词嵌入 基于计数的词嵌入 基于预测的词嵌入 具体步骤 共享参数 训练 Various Architectures 多语言嵌入 ...

最新文章

  1. IT专业人士如何更有效的学习专业知识
  2. 湖南科技学院计算机科学与技术分数,湖南科技学院计算机科学与技术专业2016年在吉林理科高考录取最低分数线...
  3. 医院计算机网络安全宣教,医院网络安全及解决方案
  4. 将森林转换为对应的二叉树,若在二叉树中,结点u时结点v的父结点的父结点,则在原来的森林中,u和v可能具有的关系是( )
  5. 彩信编辑器之预览功能
  6. 爱计算机辅助筛查肺结节,计算机辅助检测系统提高CT肺结节检出方式的研究
  7. php mysql errorcode_PHP errorCode()和errorInfo():PDO中的错误处理
  8. 公开课 之 心蓝 计算器 (课堂笔记)
  9. 今日头条向百度“开炮”:瞄准百度铁饭碗,上万台机器已在运作
  10. 【IT之路】LoadRunner系列-Loadrunner 11破解汉化
  11. JDBC连接数据库问题之jdk1.9以及jdk10以后版本的ext问题(添加扩展包问题)
  12. java中raiseSalary_用Java编写常用的工资管理系统,目的是把每个人的工资上涨百分之五...
  13. 计算机网络里面ap是什么,网络ap是什么意思
  14. windows使用WiFi-direct连接手机等设备
  15. 采蘑菇电脑c语言,英菲尼迪终于升级英菲尼迪Q50L,内行人告诉你怎么选还配备主动降噪、胎压显示!凯美瑞都比不上它! 早买早享受...
  16. html ie标题居中,HTML电子邮件呈现在IE中居中的文本
  17. 腾讯招聘总监:腾讯内推的思考与实践|好文推荐
  18. 数组、字符串长度的计算
  19. matlab中的priniu,MATLAB中的plotyy命令
  20. 求生之路2rpg服务器账号跨服,求生之路2官方地图指令大全及地图文件夹位置说明...

热门文章

  1. Php ui 3dmax,Unity3d和3dMax美工功能简介
  2. 墨画子卿第三章第9节:是一个人
  3. 消费互联网、产业互联网、工业互联网、能源互联网的关键区别是什么?智慧城市、智慧园区、智慧交通、智慧水务、智能电网、智慧工厂中都需要的关键技术是什么?
  4. [讲座论坛] 应对气候变化的中国视角
  5. M1芯片的Mac安装Centos !
  6. 从新手运气到幸存者偏差
  7. 2022-12-16 leetcode与蓝桥刷题情况
  8. 《静态时序分析实用方法》第七章翻译
  9. 可以检测手机帧率和温度的软件_让电影动漫统统变丝滑,480帧毫无卡顿,交大博士生开源插帧软件
  10. 产业互联网将会取代消费互联网成为一个全新的风口