zoukankan      html  css  js  c++  java
  • PCA 降维

    http://f.dataguru.cn/spark-751832-1-1.html

    我们可以利用PCA算法将向量的维数降低,从而实现特征转化。
    具体原理在《机器学习》课程中有详细的讲述。故此处将直接介绍如何利用MLlib中的PCA算法进行特征转换。下列演示了如何计算主成分向量并实现向量降维,同时保持标签计算线性回归。

    import org.apache.spark.mllib.regression.RegressionWithSGD
    import org.apache.spark.mllib.regression.LabeledPoint
    import org.apache.spark.mllib.linalg.Vectors
    import org.apache.spark.mllib.feature.PCA

           val data = sc.textFile("data/mllib/ridge-data/lpsa.data").map { line =>
             val parts = line.split(',')
             LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split('').map(_.toDouble)))
             }.cache()
             val splits = data.randomSplit(Array(0.6,0.4),seed=11L)
             val training = splits(0).cache()
             val test = splits(1)
             val pca = new PCA(training.first.feature.size/2).fit(data.map(_.features))
             val training_pca = training.map(p=>p.copy(features=pca.transform(p.features)))
             val test_pca = test.map(p=>p.copy(features=pca.transform(p.features)))
             val num Iterations = 100
             
             val model = LinearRegressionWithSGD.train(training, numIterations)
             val model_pca = LinearRegressionWithSGD.train(training_pca, numIterations)
             val valuesAndPreds = test.map { point =>
                 val score = model.predict(point.features)
                     (score, point.label)
             }
             
             val MSE = valuesAndPreds.map{ case(v,p) =>math.pow(v-p),2)}.mean()
             val MSE_pca = valuesAndPreds_pca.map{ case(v,p) => math.pow((v-p),2)}.mean()
             println("Means Squared Error="+MSE)
             println("PCA Means Squared Error="+MSE_pca)
             

  • 相关阅读:
    [LeetCode]98. SortColors颜色排序
    [LeetCode]97. Reorder List链表重排序
    [LeetCode]96. Min Stack带Min函数的栈
    [LeetCode]95. Implement Stack using Queues用队列实现栈
    opencv的学习笔记4
    opencv的学习笔记3
    RCNN 和SPPnet的对比
    CNN & RNN 及一些常识知识(不断扩充中)
    RCNN--对象检测的又一伟大跨越 2(包括SPPnet、Fast RCNN)(持续更新)
    【转】有监督训练 & 无监督训练
  • 原文地址:https://www.cnblogs.com/zhangbojiangfeng/p/7779453.html
Copyright © 2011-2022 走看看