質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Spark

Spark(Apache Spark)とは、膨大なデータを迅速、柔軟に分散並行処理を行うフレームワークです。分析ツールであるApache Hadoopと比較し、最大で100倍の速度でデータ処理ができるとされています。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

1回答

2389閲覧

Apache Spark MLlib (Scala) による主成分分析

Masaaki_Inaba

総合スコア17

Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Spark

Spark(Apache Spark)とは、膨大なデータを迅速、柔軟に分散並行処理を行うフレームワークです。分析ツールであるApache Hadoopと比較し、最大で100倍の速度でデータ処理ができるとされています。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

1グッド

0クリップ

投稿2016/05/09 08:34

編集2016/05/09 09:01

Apache Spark MLlib (Scala)に関して質問させて下さい。

###質問

Spark MLlibで主成分分析をしたいのですが、RDD[(String, String, Double)]RowMatrixに変換するにはどうすれば良いでしょうか?

下記の、データ変換のイメージをご参照いただき、そもそもやりたいことに対して、アプローチが正しいかどうかについてもアドバイスを頂けると幸いです。
アプローチとは、RDD[(String, String, Double)]の次元削減をするために、RowMatrixに変換してcomputePrincipalComponentsすることを指しています。

質問の背景としては、言語処理100本ノック 85. 主成分分析による次元圧縮 にてハマり中です。。。

###データ変換のイメージ

変換前データ
(composition,studies,1.791759469228055) (coaching,tenure,3.6375861597263857) (college,ranked,1.0986122886681098) (created,Media,1.0986122886681098) (ca,ca,6.173786103901937) (Chief,served,2.3978952727983707) (calculate,To,3.9889840465642745) (childbirth,after,2.70805020110221) (congested,most,3.1354942159291497) (competition,amateur,2.833213344056216) (contiguous,United_States,3.6375861597263857) (contains,photographs,2.1972245773362196) (Christians,Protestant,4.330733340286331) (以下略)
変換後データ

主成分分析で次元削減するには、変換前データを下記のような疎行列に変換する必要があるという認識です。

studiestenureranked(以下略)
composition1.79175946922805500
coaching03.63758615972638570
college001.0986122886681098
(以下略)

バージョン情報

scalaVersion := "2.11.8" libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1" libraryDependencies += "org.apache.spark" % "spark-mllib_2.11" % "1.6.1"
KiyoshiMotoki👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

次元のラベルは捨ててしまって良いことに気づき、自己解決しました。

py

1 def reduceDimension(rdd: RDD[((String, String), Double)]): Map[String, Array[Double]] = { 2 // 疎行列化 3 val contextMap = rdd.collect.toMap 4 val words = rdd.keys.map(_._1).distinct 5 val contexts = rdd.keys.map(_._2).distinct.collect 6 val contextMatrix: RDD[Vector] = words.map(w => Vectors.dense(contexts.map(c => contextMap.getOrElse((w, c), 0.0)).slice(0, word_count))) 7 8 // RowMatrix型に変換 9 val rowMatrix = new RowMatrix(contextMatrix) 10 11 // PCA実行 12 val pcMatrix = rowMatrix.computePrincipalComponents(300) 13 14 // 以下略

投稿2016/05/11 15:27

Masaaki_Inaba

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問