聚类

吴恩达ML课程笔记(Chapter13)

拜拜、爱过 提交于 2020-01-19 01:50:54
文章目录 Lesson13 13-2 k-means算法 13-3 优化目标 13-4 随机初始化 13-5选取聚类的数量 Lesson13 K:聚类的数量 c (i) :样本点x (i) 被分到的聚类的索引值 μ k :第k个聚类中心的位置 13-2 k-means算法 1.聚类算法:把无标记(non-label)的数据分成一簇一簇的算法 2.k-means算法: 我的另一篇博客 3.k-means算法也可以分类那些数据比较集中的数据集,比如像这样: 4.这里需要注意一点,大写K用来表示聚类/簇的数量,小写k用来表示1~K区间里的某一个数 13-3 优化目标 1.优化目标: c i :第i个点被分类到的聚类的索引 J(c (1) ,c (2) ,…c (m) ,μ 1 ,…,μ k )= 1 m \frac{1}{m} m 1 ​ ∑ i = 1 m x i 到 x i 被 分 类 到 的 聚 类 中 心 点 的 平 方 \sum_{i=1}^m{xi到xi被分类到的聚类中心点的平方} ∑ i = 1 m ​ x i 到 x i 被 分 类 到 的 聚 类 中 心 点 的 平 方 我们就是要找到这一套c和μ,使得上述J最小。K-means算法的第一步就是在找这套c,第二步就是找这套μ 13-4 随机初始化 1.首先需要注意,应该使K<m 2.随机选取聚类中心的方法

聚类

雨燕双飞 提交于 2020-01-19 00:11:33
1. 生成数据 # 通过简单的例子来直接查看K均值聚类的效果 from sklearn.cluster import KMeans import matplotlib.pyplot as plt import numpy as np %matplotlib inline # 聚类前 X = np.random.rand(100, 2) plt.scatter(X[:, 0], X[:, 1], marker='o') 2. sklearn结果 #聚类后 kmeans = KMeans(n_clusters=2).fit(X) label_pred = kmeans.labels_ plt.scatter(X[:, 0], X[:, 1], c=label_pred) plt.show() 3. 代码实现 from numpy import * def distEclud(vecA, vecB): return sqrt(sum(power(vecA - vecB, 2))) def randCent(dataSet, k): n = shape(dataSet)[1] centroids = mat(zeros((k,n)))#create centroid mat for j in range(n):#create random cluster centers, within

K-means聚类算法原理及c++实现

孤人 提交于 2020-01-18 03:56:56
聚类是指根据数据本身的特征对数据进行分类,不需要人工标注,是无监督学习的一种。k-means算法是聚类算法中最简单的算法之一。 k-means 算法将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。 基于这样一个假设,我们再来导出k-means所要优化的目标函数:设我们一共有N个数据点需要分为K个cluster,而k-means要做的就是要最小化这个目标函数 为第k个类聚中心, 当第n个数据属于第k类时为1,否则为0。 过程如下: 1.首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类; 2.然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的 均值 );不断重复这一过程直到标准测度函数开始收敛为止。 一般都采用均方差作为标准测度函数,k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。 每一次更新聚类中心都会使目标函数减小,因此迭代最终J会达到一个极小值,不能保证是全局最小值。k-means对于噪声十分敏感。 c++实现: class ClusterMethod { private:

机器学习?深度学习?人工智能?这都是些什么

人盡茶涼 提交于 2020-01-15 19:22:20
机器学习 Machine Learning 机器学习是 人工智能 的一个分支 。人工智能的研究是从以“ 推理 ”为重点到以“ 知识 ”为重点,再到以“ 学习 ”为重点,一条自然、清晰的脉络。显然, 机器学习是实现人工智能的一个途径 ,即以机器学习为手段解决人工智能中的问题。机器学习在近30多年已发展为一门多领域 交叉学科 ,涉及 概率论 、 统计学 、 逼近论 、 凸分析 、 计算复杂性理论 等多门学科。 机器学习理论主要是设计和分析一些让 计算机 可以自动“ 学习 ”的 算法 。机器学习算法是一类从 数据 中自动分析获得 规律 ,并利用规律对未知数据进行预测的算法。 因为学习算法中涉及了大量的统计学理论,机器学习与 推断统计学 联系尤为密切,也被称为 统计学习理论。 分类 监督学习: 带有人为标注信息。 常见算法有回归分析和统计分类 无监督学习: 不带有人为标注信息。 常见算法有聚类 半监督学习:介于两者之间 增强学习:通过观察来学习做成如何的动作。每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断。 具体算法 构造间隔理论分布:聚类分析和模式识别 人工神经网络 决策树 感知器 支持向量机 集成学习AdaBoost 降维与度量学习 聚类 贝叶斯分类器 构造条件概率:回归分析和统计分类 高斯过程回归 线性判别分析 最近邻居法 径向基函数核

KMeans

有些话、适合烂在心里 提交于 2020-01-15 00:37:42
概念: 聚类分析(cluster analysis ):是一组将研究对象分为相对同质的群组(clusters)的统计分析技术。聚类分析也叫分类分析,或者数值分类。聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或者相似度将其划分成若干个组,划分的原则是组内距离最小化而组间(外部)距离最大化。聚类和分类的不同在于:聚类所要求划分的类是未知的。 聚类度量的方法:分距离和相似度来度量。 聚类研究分析的方法: 1.层次的方法(hierarchical method) 2.划分方法(partitioning method) 3.基于密度的方法(density-based method)DBSCAN 4.基于网格的方法(grid-based method) 5.基于模型的方法(model-based method) •K-Means 算法: •受离群点的影响较大,由于其迭代每次的中心点到全部样本点的距离和的平均值。 优点: 原理简单 速度快 对大数据集有比较好的伸缩性 缺点: 需要指定聚类 数量K 对异常值敏感 对初始值敏感 •以欧式距离来衡量距离大小,使用 误差平方和( Sum of the Squared Error,SSE ) 作为聚类的目标函数: k表示k个聚类中心,ci表示第几个中心,dist表示的是欧几里得距离 •算法步骤; •创建k个点作为初始的质心点(随机选择)

聚类:Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed ob

北战南征 提交于 2020-01-15 00:37:09
最近在用python做数据挖掘,在聚类的时候遇到了一个非常恶心的问题,搜遍全网都没有解决方案。话不多说,直接上代码: from sklearn . cluster import KMeans from sklearn . decomposition import PCA import matplotlib . pyplot as plt #kmeans算法 df1 = df23 kmeans = KMeans ( n_clusters = 5 , random_state = 10 ) . fit ( df1 ) #贴上每个样本对应的簇类别标签 df1 [ 'level' ] = kmeans . labels_ #df1.to_csv('new_df.csv') df2 = df1 . groupby ( 'level' , as_index = False ) [ 'level' ] . agg ( { 'num' : np . size } ) print ( df2 . head ( ) ) #将用于聚类的数据的特征的维度降至2维 pca = PCA ( n_components = 2 ) new_pca = pd . DataFrame ( pca . fit_transform ( df1 ) ) print ( new_pca . head ( ) ) #可视化 d

聚类算法:DBSCAN密度聚类

丶灬走出姿态 提交于 2020-01-14 01:11:48
目录 1. 基本概念 2. 算法描述 3. 算法实例 4. 算法优缺点 DBSCAN(Density—Based Spatial Clustering of Application with Noise)算法是一种典型的 基于密度的聚类方法 ,即要求聚类空间中的一定区域内所包含对象(点或其他空间对象)的数目不小于某一给定阈值,它将簇定义为 密度相连的点的最大集合 。该方法能在具有噪声的空间数据库中发现任意形状的簇,可 将密度足够大的相邻区域连接,能有效处理异常数据,主要用于对空间数据的聚类 , 1. 基本概念 DBSCAN 算法中有两个重要参数:Eps 和 MmPtS。 Eps:定义密度时的邻域半径; MmPts :定义核心点时的阈值,形成簇所需的最小核心点数量 在 DBSCAN 算法中将数据点分为以下 3 类。 1) 核心点 :稠密区域内部的点 如果一个对象在其半径 Eps 内含有超过 MmPts 数目的点,则该对象为核心点。 2) 边界点 :稠密区域边缘的点 如果一个对象在其半径 Eps 内含有点的数量小于 MinPts,但是该对象落在核心点的邻域内,则该对象为边界点。 3) 噪音点 :稀疏区域中的点 如果一个对象既不是核心点也不是边界点,则该对象为噪音点。 通俗地讲,核心点对应稠密区域内部的点,边界点对应稠密区域边缘的点,而噪音点对应稀疏区域中的点。 在图 1 中,假设

机器学习~K-Means

余生颓废 提交于 2020-01-13 05:13:05
文章目录 概述 原理 示例 Sklearn实现 聚类效果的评估 KMeans存在的几个问题 初始重心选择 K值选择 基于密度聚类(DBSCAN) mini batch kmeans 参考 概述 k-means算法是一种聚类算法,所谓聚类,是指在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好。 聚类算法与分类算法不同,聚类算法属于无监督学习,通俗来讲:分类就是向事物分配标签,聚类就是将相似的事物放在一起。 聚类算法通常用来寻找相似的事物,比如:银行寻找优质客户,信用卡诈骗,社交划分社区圈等等。 原理 首先K-means中的K类似与KNN中的参数K,是指将数据聚类成K个类别。 算法原理: 先从没有标签的元素集合A中随机取K个元素,作为K个子集各自的重心。 分别计算剩下的元素到K个子集重心的距离,根据距离将这些元素分别划归到最近的子集。(这里的距离可以使用欧式距离或其他的距离量度) 根据聚类结果,重新计算重心(即子集中所有元素各个维度的算数平均数) 将集合A中全部元素按照新的中心然后再重新聚类 重复第4步,直到聚类结果不再发生变化。 示例 看着算法的步骤有点懵逼,我们来看个简单的例子。 1.假设画布上有四个点,如下: 我们想将其聚类成两类,首先我们先随机选取两个点,比如A,B两点选取两个类别的重心点,然后分别计算所有元素到这两个重心的距离

07逻辑回归、非监督学习

混江龙づ霸主 提交于 2020-01-11 16:30:54
一.逻辑回归 解决二分类问题的利器,算法自动分为0和1,比如设广告被点击为1,不被点击为0。 sigmoid函数: 1.公式 输出:[0,1]区间的概率值,默认0.5作为阀值 注:g(z)为sigmoid函数 2. 对数似然损失函数 1) cost损失的值越小,那么预测的类别准确度更高 2) 出现的问题:多个局部最⼩小值,目前解决不了 l 梯度下降求解 1) 多次随机初始化,多次⽐比较最⼩小值结果 2) 求解过程当中,调整学习率 尽量量改善。尽管没有全局最低点,但是效果都是不不错的 3.API sklearn.linear_model.LogisticRegression sklearn.linear_model.LogisticRegression( penalty=‘l2’, C = 1.0 ) Logistic回归分类器 coef_:回归系数 在实际使用时,对于目标值来说,哪⼀一个类别少,判定概率值是指的这个类别,即1为属于目标值所属类别较少的类别。 4.优缺点 1) 应用:广告点击率预测、电商购物搭配推荐 2) 优点:适合需要得到一个分类概率的场景 3) 缺点:当特征空间很大时,逻辑回归的性能不是很好(看硬件能力) 5.实例代码 def logistic(): """ 逻辑回归做二分类进行癌症预测(根据细胞的属性特征) :return: NOne """ # 构造列标签名字

聚类分析 Python 自定义K-means函数(学习笔记)

余生长醉 提交于 2020-01-04 00:39:44
from numpy import * import matplotlib . pyplot as plt from math import sqrt #距离度量函数(欧氏距离) def eucDistance ( vec1 , vec2 ) : return sqrt ( sum ( power ( vec2 - vec1 , 2 ) ) ) #初始聚类中心选择 def initCentroids ( dataSet , k ) : numSamples , dim = dataSet . shape centroids = zeros ( ( k , dim ) ) for i in range ( k ) : index = int ( random . uniform ( 0 , numSamples ) ) centroids [ i , : ] = dataSet [ index , : ] return centroids #K-means聚类算法 #创建K个质心,再将每个数据点分配到最近的质心,然后重新计算质心 def kmeanss ( dataSet , k ) : numSamples = dataSet . shape [ 0 ] clusterAssement = mat ( zeros ( ( numSamples , 2 ) ) )