pca

无监督学习与sklearn库

故事扮演 提交于 2020-03-30 22:40:19
一、无监督学习基础知识 利用无标签的数据学习数据的分布或数据与数据之间的关系被称作无监督学习 有监督学习和无监督学习的最大区别在于 数据是否有标签 无监督学习最常应用的场景是 聚类(Clustering) 和 降维(Dimension Reduction) 二、聚类 聚类是根据数据的“相似性”将数据分为多类的过程。评估两个不同样本之间的“相似性”,通常使用的方法就是计算两个样本之间的“距离”。使用不同的方法计算样本间的距离会关系到聚类结果的好坏 1、欧氏距离 欧氏距离是最常用的一种距离度量方法,源于欧式空间中两点的距离 2、曼哈顿距离 曼哈顿距离也称作“城市街区距离”,类似于在城市之中驾车行驶,从一个十字路口到另一个十字路口的距离 3、马氏距离 马氏距离表示数据的协方差距离,是一种尺度无关的度量方式。马氏距离会先将样本点的各个属性标准化,再计算样本间的距离 4、夹角余弦 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个样本差异的大小。余弦值越接近于1,说明两个向量夹角越接近0度,表明两个向量越相似 5、sklearn库 scikit-learn库(简称sklearn库)提供的常用聚类算法函数包含在sklearn.cluster这个模块中,如:k-means,近邻传播算法,DBSCAN等。以同样的数据集应用于不同的算法,可能会得到不同的结果,算法所耗费的时间也不尽相同

Is there any way to draw UMAP or t-SNE plot for data table?

梦想与她 提交于 2020-03-25 18:55:25
问题 I have a huge file (below is a small set of data) like below, I would like to draw a PCA, I could draw PCA using PCA function but it looks a bit messy, because I have 200 columns so I think maybe t-SNE or UMAP works better, but I couldn't draw using them. I would like to show the relation and clustering between columns (column name) in a plot. In fact, I collected A, B and ...data from different studies and I like to check is there any batch effect between them or not. It would be appreciated

Is there any way to draw UMAP or t-SNE plot for data table?

徘徊边缘 提交于 2020-03-25 18:52:46
问题 I have a huge file (below is a small set of data) like below, I would like to draw a PCA, I could draw PCA using PCA function but it looks a bit messy, because I have 200 columns so I think maybe t-SNE or UMAP works better, but I couldn't draw using them. I would like to show the relation and clustering between columns (column name) in a plot. In fact, I collected A, B and ...data from different studies and I like to check is there any batch effect between them or not. It would be appreciated

PCA主成分分析应用

醉酒当歌 提交于 2020-03-08 18:28:03
主成分分析 PCA降维 Notes: KNN(K-NearstNeighor)有监督算法(近邻个数); KMeans无监督算法(最终聚类的个数/分成K类) 决策边界: datasets: 数据集载入 :load_digits() .data / .target / .target_names .images:张数1792 X 每张尺寸(8X8) PCA降维: fit_transform()返回降维后的数据 fit()仅 返回模型参数 可视化: 灰度图:plt.imshow(image,cmap=plt.cm.gray_r) 手写数字识别聚类: #手写数字数据集 1797张 8X8 from sklearn import decomposition from sklearn . cluster import KMeans digits_data = datasets . load_digits ( ) #载入数据集 X = digits_data . data #X.shape=>(1797,64) y = digits_data . target #降维 estimator = decomposition . PCA ( n_components = 2 ) reduce_data = estimator . fit_transform ( X ) #训练 model =

【算法原理】主成分分析(PCA)

十年热恋 提交于 2020-03-07 19:33:20
目标: 降低特征维度 如何降维: 基变换(将原始特征所依赖的基组变换为新的基组,基组改变,原始特征也会按照基组的变换而变)。 如何确定新基组: 变换后方差越大越好(保留的原始信息越多),同时基组中的基协方差要为0(协方差衡量变量间的相关程度,协方差为0则两个变量不相关,即基组中的基两两正交,几何表示为垂直)。 有了新基组的确定标准,该如何计算新基组: 利用协方差矩阵(对角线上是方差,其余位置是协方差,该矩阵为对称矩阵),因为实对称矩阵一定能找到单位正交的特征向量,所以利用协方差矩阵的对角化(考研数学知识)找到特征值及对应的特征向量。 特征向量与降维的关系: 选择出的特征向量乘以原始数据就可以实现对原始数据的降维。例如将150个具有4个特征的数据(150 4)乘以两个特征向量(加入为4 2),则原始数据降维成150*2,特征维度降为2维。 那么该如何选择特征向量个数及具体哪些特征向量呢: 以特征值为标准,特征值越大,代表该特征值所对应的特征向量越重要。对特征值大小排序,按照预先指定的降维后的特征数(如2),选择特征值排名前2的所对应的特征向量。 来源: CSDN 作者: 不停下脚步的乌龟 链接: https://blog.csdn.net/weixin_44680262/article/details/104718311

[Scikit-learn] 2.5 Dimensionality reduction - ICA

丶灬走出姿态 提交于 2020-03-07 09:59:16
写在前面 数据降维的几种形式 数据降维的几种方法,包括 PCA 、 LDA 、 ICA 等,另外还有一种常用的降维方法就是 因子分析 。 关于这几种方法的各自的优劣,有必要之后跟进一下。 概率图角度理解 打开prml and mlapp发现这部分目录编排有点小不同,但神奇的是章节序号竟然都为“十二”。 prml:pca --> ppca --> fa mlapp:fa --> pca --> ppca 这背后又有怎样的隐情?不可告人的秘密又会隐藏多久? 基于先来后到原则,走prml路线。 首先,这部分内容,尤其是pca,都是老掉牙且稳定的技术,既然是统计机器学习,这次的目的就是借概率图来缕一遍思路,以及模型间的内在联系。 PPCA's PGM 我们要建立的是一套完整的知识体系,而非“拿来一用,用完就扔”的态度。 有菜鸡问了,为何你总是强调“体系”? 因为我是马刺队球迷。 首先,我希望大家重视prml的第12章开章这段话: " 本章中,我们⾸先介绍标准的、⾮概率的PCA⽅法,然后我们会说明,当求解线性⾼斯潜在变量模型的 ⼀种特别形式的最⼤似然解 时, PCA如何 ⾃然地产⽣ 。这种概率形式的表⽰⽅法会带来很多好处,例如在参数估计时可以使⽤EM算法,对混合PCA模型的推广以及主成分的数量可以从数据中⾃动确定的贝叶斯公式。最后,我们简短地讨论潜在变量概念的几个推广

pca图像识别

心不动则不痛 提交于 2020-03-03 19:48:39
代码下载: 基于PCA(主成分分析)的人脸识别 人脸识别是一个有监督学习过程,首先利用训练集构造一个人脸模型,然后将测试集与训练集进行匹配,找到与之对应的训练集头像。最容易的方式是直接利用欧式距离计算测试集的每一幅图像与训练集的每一幅图像的距离,然后选择距离最近的图像作为识别的结果。这种直接计算距离的方式直观,但是有一个非常大的缺陷—计算量太大。如果每幅图像大小为100*100,训练集大小1000,则识别测试集中的一幅图像就需要1000*100*100的计算量,当测试集很大时,识别速度非常缓慢。 解决上述问题的一个途径是对图像进行降维,通过只保留某些关键像素可以使识别速度大大提升。降维的一个方法即是PCA(主成分分析),在此我们介绍通过PCA进行人脸识别的步骤。 1 读取训练集图像数据 读取测试集目录下指定个数的图像,然后将其保存在一个二维数组中。如果图像个数为m,图像长宽为i、j,则我们创建一个二维数组A[m][i*j=n]用来保存图像数据。 数组的每一行表示一个图像的所有像素信息,每一列表示一个随机变量,也即不同图像同一位置的像素信息,降维也即用更少的列来代表图像。 2 每列减去均值 将步骤一的每列减去该列的均值,这样每列的数据均值为0。在利用matlab的函数princomp执行PCA的过程中,princomp会首先将每一列减去该列均值,不用我们自己执行。 3 计算协方差矩阵

PCA与LDA

我们两清 提交于 2020-03-03 11:48:00
PCA: “最能代表原始数据”希望降维后的数据不能失真,也就是说,被PCA降掉的那些维度只能是那些噪声或是冗余的数据。 1:冗余,就是去除线性相关的向量(纬度),因为可以被其他向量代表,这部分信息量是多余的。 2:噪声,就是去除较小特征值对应的特征向量。 因为特征值的大小就反映了变换后在特征向量方向上变换的幅度,幅度越大,说明这个方向上的元素差异也越大,换句话说这个方向上的元素更分散。 LDA: Fisher判别分析的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、不同类样例的投影点尽可能远离。在对新样本进行分类时,将其投影到同样的这条直线上,再根据新样本投影点的位置来确定它的类别。 ——周志华《机器学习》 PCA vs LDA LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。 首先我们看看相同点: 1、两者均可以对数据进行降维 2、两者在降维时均使用了矩阵特征分解的思想 3、两者都假设数据符合高斯分布 我们接着看看不同点: 1、LDA是有监督的降维方法,而PCA是无监督的降维方法 2、LDA降维最多降到类别数k-1的维数,而PCA没有这个限制 3、LDA除了可以用于降维,还可以用于分类 4、LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向 来源: CSDN 作者:

tooltip with names in a PCA plot

浪子不回头ぞ 提交于 2020-03-03 08:43:34
问题 I want to generate an interactive plot with ggplotly(). The tooltip should show me the name of the variable. interactive <- ggplotly(pca,dynamicTicks = T,tooltip = c("x","y",label = list)) pca is a visualization of a PCA. sub is a data.frame that contains variable names. sub <- PCA(dataframe) pca <- fviz_pca_ind(sub, pointsize = "cos2", pointshape = 21, fill = "#E7B800", repel = TRUE, # Avoid text overlapping (slow if many points) geom = c("text","point"), xlab = "PC1", ylab = "PC2",label =

数据压缩·课前任务二(PCA)

徘徊边缘 提交于 2020-03-03 05:10:55
要求:主成分分析:步骤、应用及代码实现 目的: 降维。 简介: 通俗易懂见详解:https://www.matongxue.com/madocs/1025.html 这里举一个例子帮助理解。 首先我们观察一下下面这个矩阵: 会发现,这个矩阵的第一列,第二列,第四列这三个列向量在空间中的指向是没有变的,仅仅只是缩放了相应的倍数而已,所以这个看起来是四维度矩阵其实是个二维矩阵。看到这你可能开始迷惑了,为啥是二维,这个矩阵不是有四个列向量吗?鲁迅曾经说过:不要被表象迷惑了双眼。好吧,不管这句话是不是鲁迅说的,但总之,仔细想想我们就会发现,第一、二、四个列向量它们都处在同一条直线上,用线性代数的语言来说,就是这三个列向量张成的空间是一条直线,那在加上第三个列向量所张成的直线,那这个矩阵不就只代表了一个二维平面嘛!所以说,这个四维的矩阵其实只是一个二维矩阵而已! 到这里,我们就会顺理成章产生这样的想法:既然是一个二维的矩阵,干嘛不用二维的形式呢?所以自然地我们就会想到要找一个办法让这个矩阵降维,让它把冗余数据给去掉,只留下它的主成分。我们可以把上面的矩阵看成是一个四维空间中的二维平面,既然是二维平面,就应该在二维平面上重建一个坐标系,这样就可以把原来的列向量都表示出来,也就是说,这四个列向量在空间中没有变,只是我们换了一个参考系,表征它们的值也就变了,原来需要四个数(x,y,z,r