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)
             

  • 相关阅读:
    使用VMWare实现主机一拖二(笔记本分身术)
    Implementing RelativeSource binding in Silverlight
    CLRProfiler V4 Released
    Host WCF on IIS 7.5
    增加智能感知的RichTextBox扩展控件(WPF)
    Troubleshooting Visual Studio 2010 and QT 4.7 Integration
    windows命令行下如何查看磁盘空间大小
    模拟谷歌今日使用的css动画
    粗聊Mysql——你会建库建表么?
    彩票项目难点分析
  • 原文地址:https://www.cnblogs.com/zhangbojiangfeng/p/7779453.html
Copyright © 2011-2022 走看看