プログラミング、アカデミック、何か面白いこと。 記載されているものは基本的に私が所属する団体とは関係がありません。

  1. プログラミング
  2. 22 view

[Scala]線形補間でデータのスケーリング

やりたいこと

Scalaの勉強で簡単なデータ列の加工をしてみる。

データの大きさを合わせる為に、
線形補間を使ってデータ列を0から1の値にスケーリングする。

線形補間の式はこれ
linearinterpol

最低値からの差分を出して、最も大きな差分の割合を計算する。

ソースコード

import scala.util.Random

object LinearInterpolation {
    def main(args: Array[String]) {
        // Make random array
        def randomArray(size:Int, max_val:Int)={
            val rand = new Random
            for (a <- 0 to size) yield rand.nextInt(max_val)
        }
        val data = randomArray(20, 100).toList
        println("values:")
        println(data)

        // Find max and min value
        val max_val = data.reduceLeft{ (a,b) => a max b }
        val min_val = data.reduceLeft{ (a,b) => a min b }
        println("max : " + max_val)
        println("min : " + min_val)

        // Do Linear Interpolation to change the range of values
        val after = data.map(x => (x - min_val).toFloat / (max_val - min_val).toFloat)
        println("after :")
        println(after)
    }
}

プログラミングの最近記事

  1. sbt1.0.0のインストールとサンプル実行

  2. [機械学習]各種Pythonライブラリ入りの実験用Dockerイメージを作った

  3. [Node.js]バッチスクリプトの書き方

  4. [Play][Scala]PlayFrameworkでリクエスト駆動のバッチを作る

  5. [OpenCV][Ruby]Webページのデザイン崩れ確認の自動化

関連記事

PAGE TOP