用sklearn进行降维的七种方法 (用sklearn线性回归算法需要导入函数库)
本文目录导航:
用sklearn进行降维的七种方法
在实际的应用中,有时候我们会遇到数据的维度太少,我们需要新生成新的维度,可以用我们之前的分享( 如何自动化进行特征工程 );有时候维度太多,这时候我们就需要降维了。
降维的方法有许多,我们这里介绍了sklearn中介绍的7种,供大家学习和收藏。

主成分分析(PCA)用于将多维的数据集分解为一组具有最大方差的连续正交分量。
在sklearn这个包中,PCA是一个transformer对象,使用fit方法可以选择前n个主成分,并且用于投射到新的数据中。
PCA有两种实现方式,一种是特征值分解去实现,一种是奇异值分解去实现。
特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,如果不使用SVD,PCA只会寻找每个特征的中心,但并不会对数据进行缩放(scaled)。
使用参数whiten=True ,可以将数据投射到奇异空间中,并且将每个组分缩放到方差为1,这个对于后续分析中,假设每个特征是isotropy 是很有帮助的,例如SVM和Kmeans聚类。
PCA不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。
PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。
SVD是一种矩阵分解法,把一个大矩阵分解成易于处理的形式,这种形式可能是两个或多个矩阵的乘积。
参数
例子2:获取每个主成分与特征的关系
PCA虽然很有用,但是需要将数据全部都存入内存,因此当当要分解的数据集太大,会导致内存很大。
这时候,增量主成分分析(IPCA)通常用作主成分分析(PCA)的替代,可以通过部分计算的方式,获得跟PCA一样的结果。
IPCA使用与输入数据样本数无关的内存量为输入数据建立低秩近似。
它仍然依赖于输入数据功能,但更改批量大小可以控制内存使用量。
该函数,增加了一个batch_size的参数,用来控制批次,其余都一样,至此不再赘述。
实例
对于大型矩阵的分解,我们往往会想到用SVD算法。
然而当矩阵的维数与奇异值个数k上升到一定程度时,SVD分解法往往因为内存溢出而失败。
因此,Randomized SVD算法,相比于SVD,它更能适应大型矩阵分解的要求,且速度更快。
此外,在某些场景下,我们期望丢掉某些lower sigular values,来达到减少噪音,保留尽可能多的方差,从而达到更好的预测效果。
比如人脸的识别,如果是64X64的像素,那么整个维度有4096个。
我们利用这个方法,可以保留重要的维度,从而利于后续的分析。
使用 svd_solver=randomized 可以实现随机化的SVD,来去掉部分的奇异矩阵。
主成分分析(Principal Components Analysis, PCA)适用于数据的线性降维。
而核主成分分析(Kernel PCA,KPCA)可实现数据的非线性降维,用于处理线性不可分的数据集。
kernel的选择有 {linear, poly, rbf, sigmoid, cosine, precomputed},默认是linear。
详细说明见官方说明,与普通的PCA差不多。
SparsePCA 期望找到一组可以最优地重构数据的稀疏主成分。
稀疏性的大小由参数alpha给出的L1惩罚系数来控制。
Mini-batch sparse PCA是sparsePCA的变种,提高了速度,但是降低了精度。
主成分分析(PCA)的缺点是,该方法提取的成分是一种密集表达式,即用原始变量的线性组合表示时,它们的系数是非零的。
这可能会使解释模型变得困难。
在许多情况下,真实的基础分量可以更自然地想象为稀疏向量;例如,在人脸识别中,主成分会只包含部分的图像,映射到人脸的某些部分。
稀疏主成分产生了一种更简洁的、可解释的表示,清楚地强调是哪些原始特征导致了样本之间的差异。
通过调节alpha来调整惩罚度,alpha越大,越导致许多系数为0。
TruncatedSVD是普通SVD的一个变种,只计算用户指定的前K个奇异值。
TSVD通常用于语义分析中,是LSA的其中的一部分,可以解决一词多义和一义多词的问题。
LSA潜在语义分析的目的,就是要找出词(terms)在文档和查询中真正的含义,也就是潜在语义,从而解决上节所描述的问题。
具体说来就是对一个大型的文档集合使用一个合理的维度建模,并将词和文档都表示到该空间,比如有2000个文档,包含7000个索引词,LSA使用一个维度为100的向量空间将文档和词表示到该空间,进而在该空间进行信息检索。
而将文档表示到此空间的过程就是SVD奇异值分解和降维的过程。
降维是LSA分析中最重要的一步,通过降维,去除了文档中的“噪音”,也就是无关信息(比如词的误用或不相关的词偶尔出现在一起),语义结构逐渐呈现。
相比传统向量空间,潜在语义空间的维度更小,语义关系更明确。
使用例子如下:
用事先预定义好的字典来对矩阵进行稀疏化编码,达到降维和简化的目的。
就像人类的所有语言都是由单词组成一样,因此使用已知的词典可以减少维度;其次,稀疏化可以减少计算的成本,让后续的计算更快。
这个对象没有fit的方法,transformation方法会将数据表示为尽可能少的字典原子的线性组合。可以用transform_method来控制初始化参数,有以下几种:
使用的函数为,会找到一个可以将fitted>【综述】三维点云深度学习算法综述,sota pointcloud
在三维空间的深度学习探索中,点云技术的应用正在重塑无人驾驶、机器人技术等前沿领域。
一种新兴的研究热点是Transformer模型在点云处理中的创新应用,如Deep Learning for 3D Point Clouds: A Survey,它为分类、分割等任务提供了深入的综述。
点云处理方法多种多样,大致可以分为多视图、点基、体素基和混合策略。
点基方法的代表作有PointNet和PointNet++,PointNet通过独特的设计解决了点云的无序性问题,而PointNet++则通过增强局部信息的整合,实现了性能的显著提升。
追踪最新的进展,pointcloud-sota为我们揭示了不断演进的技术前沿。
点云深度学习涉及的任务繁多,包括分类、分割、目标检测等,每个任务都有其独特的挑战和解决方案。
以PointNet为例,它通过FPS采样和球形Grouping,利用PointNet提取点特征,其中包括邻域特征。
在分割任务中,上采样和反距离加权插值是常见的技术。
PointNet++的提升并非仅来自网络结构的创新,而是训练策略的改进。
PointNext则通过InvResMLP优化,如增加MLP通道数,以增强特征的丰富度,尤其在S3DIS数据集上表现出色。
卷积方法如Pointconv和KPConv各具特色,前者学习位置相关的权重,而KPConv则为每个核心点分配权重矩阵。
而Point Transformer引入了注意力机制,以高效处理点云的复杂性。
图方法如DGCNN通过EdgeConv层,强化了点之间的联系和表达能力。
在更复杂的网络结构中,体素法如VoxelNet和VoTr采用了3D卷积和Transformer技术,而点云检测则涉及Voxel划分、特征编码和稀疏张量表示等步骤。
多视图方法如MVCNN通过多视角投影进行训练,融合方法如PVCNN则结合点云和体素信息,提升了效率和准确性。
分类任务如PointGPT在ModelNet40和ScanObjectNN上展现出卓越性能,而语义分割数据集如ShapeNetPart、S3DIS、SemanticKITTI和ScribbleKITTI,则展示了不同模型的卓越表现。
在最新技术方面,如Window-Normalization处理不同密度的点云,Superpoint_transformer则以高效和低参数量实现卓越性能。
Stratified-Transformer、RepSurf、Point Transformer V2、PointNext和ContrastBoundary等模型都在各自领域取得了突破。
在目标检测和实例分割方面,Kitti、nuScenes、Apollo等数据集与CAGroup3D、3D-Dual-Fusion等模型相互印证。
而配准和重构技术,如3DMatch、GEDI和AdaPoinTr,正解决着点云完整性的问题。
数据集方面,Scenes、STPLS3D、SensatUrban、ScanNetV2和npm3d等提供了丰富的数据资源,为研究提供了坚实的基础。
在点云重建和变化检测领域,Sformer-Encoder、Transformer-Decoder和Siamese KPConv等模型展现了强大的潜力。
开源项目如MMDetection3D、Paddle3D等则为开发者提供了丰富的工具和算法,如Open3D-ml中的randla、kpconv和PointTransformer,以及CloudCompare的交互式标注和分类功能。
基于AlphaFold2进行蛋白质结构预测的文章解析
蛋白质结构预测是生物信息学中的关键问题,实验观测方法如X射线晶体学、冷冻电镜、核磁共振和中子散射,受限于成本和结晶条件,准确预测结构的局限性明显。
结构预测方法包括物理相互作用的从头计算法、序列共进化、拓扑结构重构和综合法。
然而,缺乏同源蛋白结构信息和预测准确性是主要挑战。
AlphaFold2采用深度学习方法解决蛋白质结构预测问题,利用Transformer等模型,特别是多头自注意力机制,这与自然语言处理领域中的应用类似。
Transformer模型在氨基酸序列上下文中实现跨序列的交互,通过多序列比对整合生物信息学数据,构建深度学习算法。
这一步骤利用Transformer的多头自注意力模型,增强模型泛化能力,提升预测准确度。
AlphaFold2的工作流程包括目标氨基酸序列、多序列比对(MSA)和同源模板搜索,然后将这些输入直接端到端预测三维结构。
MSA模块在比对序列间交换信息,生成较为相似的比对序列,进而得到蛋白质结构预测。
Evoformer块在MSA内部进行信息交换,允许直接推理空间和进化关系,显著提高预测准确性。
AlphaFold2通过特征构造、表示和抽象,实现从氨基酸文本序列到Pair representation的转换,进一步构建蛋白质的三维结构。
这一过程中,Invariant point attention(IPA)和backbone frames等机制,对转角信息等进行整合,构建8块结构模型,直接构建蛋白质3D结构。
整个过程包含三次迭代循环,以提高预测精度。
AlphaFold2的预测结果显著优于其他模型,准确度达到0.96 Å,相比Last best G009的2.8 Å,预测效果表现出巨大优势。
这种方法联合嵌入多序列比对和成对特征,实现准确的端到端结构预测,广泛运用了Attention架构。
AlphaFold2的使用价值在于其在蛋白质结构预测领域的突破性贡献,但同时也存在局限性,如依赖于大量数据和计算资源,以及对同源结构的依赖。
未来展望,该技术将进一步推动蛋白质结构预测的准确性,促进生物、医药等相关领域的研究发展。