Statistical Programming

Scala

ScalaTestすごい楽。

試してみたのは単純な、FunSuiteクラスを継承するタイプ。 class Datates extends FunSuite { test("name of this test"){ assert(0==0,"if fail,message appears") } でもDoubleが比較に入ってくると小数点以下がちょこっと違うだけでほとんど同じ!みたい…

スピアマンの順位相関係数を実装 in Scala

この前ピアソンの相関係数を実装したので次はノンパラメトリックなスピアマンの順位相関係数を実装してみた。ピアソンの場合、外れ値の影響を大きく受けるのと、厳密にはデータが正規分布であると仮定している。つまりデータ数が小さい時は正確性に欠ける。…

ピアソンの相関係数を実装 in Scala

レコメンデーション等をするためには各アイテムの相関度などを調べる手法があり、そこで必要なのがユークリッド距離やピアソンの相関係数など。今回実装してみたのはピアソンの方。 2つの変数X,Y(X,Yに属する値のリストみたいなもん。実装ではStream[Doubl…

関数とメソッド in Scala

関数とメソッド。一見同じように見えるが、メソッドはオブジェクトやクラスに結びついているもの。関数はそれらに結びついていない単独な第一級オブジェクト(少なくともScala利用者の立場的には)であり値として扱うことが出来る。僕みたいなめんどくさがり…

意中の相手への告白がうまくいくかどうか過去の事例を解析し成否を占う。with Scala

告白したい!でもうまくいくか不安…だから掲示板にでも相談しよう…こんなケースってよくありがちだけどそれらのデータを蓄積して解析してるシステムってあんまないなーって思う。だからちょっと作ってみよう!と思い立ってのこと。とは言っても迷惑メールフ…

入力処理… Iterator continually

scala.ioをディスってる記事にちょくちょく載ってる(こっちの方がいいよ的な意味で)Iterator continuallyが良いなと思ったんでめもる。 val lines=Iterator.continually(readLine).takeWhile(_ != "finish") lines.foreach(println) これで"finish"が入力さ…

誰だよこんなの思いついたやつ

scalaのStreamを使った無限フィボナッチ数列の作り方っ★ ※StreamとはListを遅延評価にしたようなやつ。遅延評価なので実際にその値が必要になるまで評価されず、無限に要素を持つことが可能。 なんか普通に綺麗で、思いついたやつcrazyだと思う。 def fib(a:…

Iteratee, Websocket周りのメモ書き

server側のwebsocketコード def ws =WebSocket.using[String]{ request => val in=Iteratee.foreach[String]{str => str match{ case "click"=> println("clicked") case "grasp"=> println(“grasp please”) case "drop"=> println("Why don we stop it here…

Iterator, Iteratee, そしてEnumerator

Play FrameworkのIteratee, Enumeratorが最高に謎なんで現状の理解をここに記します。間違っている点を指摘してもらえると助かります。 参考にしたのは http://qiita.com/sunny4381/items/a711fa72db26c9263b3f http://mandubian.com/2012/08/27/understandi…

reduceとfold…

例えばこんなコレクションがあったとして List(1,2,3,4,5) このコレクションの各要素に10を足したものを掛け合わしたいとする。そんなとき便利なのかreduce系もしくはfold系メソッド。例えばreduceLeft(f)メソッドは,リスト x1, x2, …, xn に対して f(f(…f(…

Scalaでフロントサイドが書ける!scala-js!!

scala-jsとはjavascriptに嫌気がさした僕のような人のためにscalaでサーバーからクライアントまで書けるようにしてくれる優れもの!!と言いたいところですがまだ開発途中なこともありドキュメントの整備や機能においても完成されたものではありません。それ…

scalaのIDEについてーeclipse&IntelliJ

今までscala IDE for eclipseを利用してきて特に問題ないどころか非常に満足していたのですが、どうやらscala使いの方々はIntelliJを好むのか!?という不安にかられIntelliJを試してみました。印象としては、、、eclipseの方がいいなあ(慣れてるからですよ…

jarを作りたいならsbt-assembly!!

とあるライブラリ、もしくは単なるプログラムがあるとしてそのjarファイルを作りたい時に登場するのがsbt-assemblyです。その名の通りjarファイルを生成してくれるすぐれもの!準備は簡単で、まずはsbtのフォルダ構成に乗っ取ったフォルダを生成し、その中に…

テキストマイニング入門が簡単な時代になったのですなあ〜

kuromojiという形態素解析ライブラリを利用してテキストマイニングしてみる。やってみたけど超簡単。やばい、これ。しかもScalaから利用するからJavaと比べてさらにすっきりするしいいね。以下からjarファイルをダウンロード。 Downloads · atilika/kuromoji…

Slick実装例

Slickを使った実装例。 今回はTypesafeが提供しているActivatorを利用しながら開発してみる Slick Typesafe Activator – Typesafe Reactive Platform - Typesafe まずはActivatorをダウンロードし、フォルダの中にあるactivatorファイルをクリック。 しばら…

もがく、WebSocket!!

前回ソリティアを作ろうと思い立ち開発しているさなかでそうだ、WebSocketを使ってみよう!と決意し調べてみたら見事にはまったのでメモっておきます。Scalaは他の言語と比べてもその言語仕様も外部ライブラリも変更が頻繁にあるのでそこんとこではまりまし…

Play Framework入門

Play2フレームワークの開発フローについてまとめます。インストールなどは省略して、プロジェクト作成から。まずはターミナルを起動しプロジェクトを作成したいディレクトリに移ります。cd /Desktopその後playコマンドでプロジェクト作成。play new sampleす…

Scala immutableなコレクションと便利なメソッド

関数型言語定番のimmutableなデータ構造がScalaのひとつの特徴ですが、今回はimmutableなデータの集まりであるコレクションとそれを扱う便利メソッドについてです(Javaではimmutableで変更不可なデータはfinalキーワードを用いて特別に定義していましたよね…

Scala 関数のカリー化と部分適用

Scalaにはカリー化と部分適用という機能が備わっています。 まずはカリー化から。 カリー化とは、複数の引数を受け取る関数を一つの引数を受け取る関数の積み上げ形にすることです。もしくは、複数の引数を取る関数を一引数を取る関数のチェインにすると表現…

Scala 暗黙の型変換、implicit !?

ScalaにはJavaにはない暗黙の型変換という機能があります。これはScalaに自動的に呼び出させることの出来る、型変換用の関数を定義できる機能です。 関数定義の最初に implicit というキーワードをつけて、この暗黙型変換関数を定義します。この関数は型変換…

Scala 関数の書き方

Scalaでは関数の書き方がJavaとは異なる上、Javaよりもより強力な関数的機能が備わっています。まずは関数の定義の仕方から。Scalaでは記述方法がかなり柔軟なためいろいろあるのですが、代表的な書き方を二つほど。 def 関数名(引数の変数名:変数の型):戻り…

簡潔な記述のScala

ScalaはJavaと比べてもいろいろな部分で簡潔です。その最たるものが型推論ではないでしょうか。 • 型推論;JavaではたとえばScannerクラスのインスタンスを作成し変数に入れる場合以下のように型を明示しなければなりませんでした。 Scanner sc=new Scanner(…

Scala 並行処理のActorさん

ちょっと話が飛んじゃって申し訳ないのですが今勉強中の並行処理についてまとめてみます。Scalaでは並行処理のためにいくつか選択肢があり、そのうちのひとつがActorです。ではさっそく試しにコードを書いていきます。メッセージを受け取りそれに対応した値…

Scala開発環境構築

Scala言語を利用するにあたってこれは必要じゃない??と個人的に思うもののインストールの仕方についてです。 というわけでScala言語、sbtというビルドツール、playというframework, 最後にScala IDE for eclipseをインストールしていきます。 僕はmac派な…