特征的转换_06-特征降维PCA
来源:互联网 发布:java写的程序怎么运行 编辑:程序博客网 时间:2024/06/05 11:29
1. 为什么特征要降维?
(1)特征之间如果存在多重共线性,或者说是较高的相似性,则模型会不准确,或被高估了水平,PCA降维可以消除特征之间的相似性,保持特征的独立性。
(2)特征太多则模型复杂,在保持模型表现能力不减弱的情况下对特征进行降低维度能够简化模型。
2. 如何降维?
比如有特征x1, x2, x3.
寻找PC1 = w11*x1 + w12*x2 + w13*x3; PC2 = w21*x1 + w22*x2 + w23*x3
PC1, PC2就是降维后的新特征,w11表示元特征x1可以被新特征PC1解释的程度。
如果原来的3个特征有较大的相似性,那么PC1就是取出了他们某个相同的特征信息,通过加权形成了一个专门用来解释这类特征信息的新特征。PC2也同理。也就是说PC1, PC2都是提取了原来特征中某个特征信息,保证了新特征之间的独立性,从而也降低了特征的维度,简化了模型。
3.代码
object FeatureTransform01 { def main(args: Array[String]) { Logger.getLogger("org.apache.spark").setLevel(Level.WARN) val conf = new SparkConf().setAppName("FeatureTransform01").setMaster("local") val sc = new SparkContext(conf) val spark = SparkSession .builder() .appName("Feature Extraction") .config("spark.some.config.option", "some-value") .getOrCreate() // 创建3个样本5个特征的DataFrame val data = Array( Vectors.sparse(5, Seq((1, 1.0), (3, 7.0))), Vectors.dense(2.0, 0.0, 3.0, 4.0, 5.0), Vectors.dense(4.0, 0.0, 0.0, 6.0, 7.0) ) val df = spark.createDataFrame(data.map(Tuple1.apply)).toDF("features") df.show(false) // 进行PCA降维,维度维3 val pca = new PCA() .setInputCol("features") .setOutputCol("pcaFeatures") .setK(3) .fit(df) // 转换 val result = pca.transform(df) result.show(false) sc.stop() }}
打印结果:5个特征降低到3个特征。
+---------------------+|features |+---------------------+|(5,[1,3],[1.0,7.0]) ||[2.0,0.0,3.0,4.0,5.0]||[4.0,0.0,0.0,6.0,7.0]|+---------------------++---------------------+-----------------------------------------------------------+|features |pcaFeatures |+---------------------+-----------------------------------------------------------+|(5,[1,3],[1.0,7.0]) |[1.6485728230883807,-4.013282700516296,-5.524543751369388] ||[2.0,0.0,3.0,4.0,5.0]|[-4.645104331781534,-1.1167972663619026,-5.524543751369387]||[4.0,0.0,0.0,6.0,7.0]|[-6.428880535676489,-5.337951427775355,-5.524543751369389] |+---------------------+-----------------------------------------------------------+
0 0
- 特征的转换_06-特征降维PCA
- PCA特征降维
- PCA数据降维(Eigenfaces特征脸)
- PCA方法对特征降维
- 特征降维——PCA
- opencv笔记(9):特征降维-PCA
- 基于PCA的特征提取
- 基于PCA的特征提取
- 特征降维-PCA(Principal Component Analysis)
- deep learning PCA(主成分分析)、主份重构、特征降维
- 模式识别特征降维-PCA(Principal Component Analysis)
- 特征降维-PCA(Principal Component Analysis)
- 特征降维-PCA(Principal Component Analysis)
- sklearn 特征降维利器 —— PCA & TSNE
- PCA(主成分分析)、主份重构、特征降维
- 『 特征降维』PCA原理-Principal Component Analysis
- 使用PCA对特征数据进行降维
- 基于PCA的人脸特征抽取
- 大数据测试类型&大数据测试步骤
- Android中使用level-list改变View显示状态
- EL表达式、基本语法、隐式对象,禁用EL表达式,EL主要作用
- Android 一张图片(BitMap)占用内存的计算 图片内存优化
- iOS音频
- 特征的转换_06-特征降维PCA
- 在git上push代码时缺少Change-Id
- GitHub for Windows使用教程(一)
- Counting the String 动态规划 + KMP
- Iterator和ListIterator主要区别有
- linux写定时任务
- 【Unity3D】图片纹理压缩方式,干货走起!
- oracle12c存在pdb情况下的dataguard简单搭建
- (27)Java学习笔记——常用对象 / Math 类