2017/06/30 · Haskellで確率モデル · Pureはその事象が確率1で起きるような確率分布 · PrimitiveもRVarという確率変数が重み1で起きるような確率分布 · Conditionalは、 ...
こんな表のことを確率分布といいます。サイコロをふったときに起こるイベントの確率、たとえば「偶数の目が出る」確率を調べることは、この確率分布からこんな別の確率分布への変換だと考えられます。 この変換は、具体的にはこんな対応です。P(偶数) = P(2) + P(4) + P(6) P(奇数) = P(1) + P(3) + P(5)P(X)がイベントXに対する確率を表しているわけですが、Pを「イベントの集合から[0,1]区間の実数への関数」だとみなすこともできます。確率分布から確率分布への変換は、関数に対する演算でもあるわけです。確率分布を連想リストで表せば、高階関数や代数型を使って、この変換をモデル化できそうです。 以前、このアイデアをSchemeで試してみたことがありました。当時は、そもそも確率についての理解が今よりもいっそうあやしかったし、実装もちゃちでしたが、このアイデアが特別なもの
A Probabilistic Functional Programming Library for Haskell Version: June 2006 The PFP library is a collection of modules for Haskell that facilitates probabilistic functional programming, that is, programming with stochastic values. The probabilistic functional programming approach is based on a data type for representing distributions. A distribution represent the outcome of a probabilistic event
かねてから噂のあったARM 64bitの開発用ボードが姿を現しました! Applied Micro X-GeneはARM 64bit CPUでは世界初の製品で、サーバー用途が目的のCPUです。 とうぜん、社内の開発もサーバー用だったために開発者向けに64bit CPUが提供されない状態でしたが、サーバー用のボードからシングルCPUだけを切り出した開発者向けボードがやっとお目見えしました! 主なスペック SoC – Applied Micro X-Gene eight core ARMv8 processor @ 2+GHz System Memory – 2x DDR3 memory slots Storage – 4x SATA 2/3 ports + SD card slot Connectivity – 3x 10 Gb Ethernet ports USB – 2x SuperSp
状態をモナドで実現する方法を考えます。 リスト 例は簡単な方がいいので、データ構造として Lisp 風のリストを定義しましょう。 data List a = Nil | Cons a (List a) deriving Show リストは、こんな風に表せます。 Cons "c" (Cons "b" (Cons "a" Nil)) Lisp 風の cons も定義してみましょう。 cons :: a -> List a -> List a cons x xs = Cons x xs cons "c" $ cons "b" $ cons "a" Nil → Cons "c" (Cons "b" (Cons "a" Nil)) 状態を持つリスト さて、この Lisp 風のリストに、要素の数を覚えさせておきたいとしましょう。もちろん、数えれば分りますが、数えなくても一瞬で分るようにしたいのです。
Structure and Interpretation of Computer Programs Interactive Version Wizard Book n. Structure and Interpretation of Computer Programs, an excellent computer science text used in introductory courses at MIT. So called because of the wizard on the jacket. One of the bibles of the LISP/Scheme world. Interactive SICP n. Interactive Structure and Interpretation of Computer Programs. Online version of
MIT Press graciously distributes the second edition of the book Structure and Interpretation of Computer Programs (SICP) in HTML format. In 2001 or earlier, Lytha Ayth converted the book to Texinfo format, so that the book can be viewed in Emacs and used on low-power computers. S/he apparently redrew all the figures using "ASCII art" text characters. I've made very minor modifications to a version
ヨドバシカメラで買いたいものがあったので、町田まで行ってきた。 youtu.be 尻手黒川道路は木々があって適度なアップダウンもあり、好きな道路だ。ただ、今日はお盆休みに規制する車で混雑していた。 町田から鶴見川経由で帰宅しても良かったのだが、せっかくなので境川を堪能してきた。前に境川を下ったのは 2022 年の 3 月で、まだブロンプトンを買ったばかりのときだった。あの頃と比べると、全てにおいて余裕がある。 帰りも輪行せずに自走した。ちょうど、 先月雨に降られたルート を逆回りで回った形である。せっかく大船に行ったので、栄光坂も登っておいた。 動画は大船近辺で切れている。 Insta360 Go 2 の電池が切れてしまったのだ。アダプタもモバイルバッテリもあったのだが、電圧が合わなくて充電できなかった。 2A ✕ 8V が推奨と書いてあったが、最近は USB-C で直接つなげるものしか持
個人的 Forth 情報の更新版。 実装するための情報 Moving Forth: Part1 http://www.bradrodriguez.com/papers/moving1.htm Threaded code について CS 636 / 536 Spring 2009 The Structure of Programming Languages 講義録。詳しくてとてもよい。 http://eliza.newhaven.edu/lang/attach/L2.pdf http://eliza.newhaven.edu/lang/attach/L3.pdf Forth の有用/有名な文章 eForth http://offete.com/files/zeneForth.htm eForth と禅/ eForth Overview Starting Forth http://www.fo
かつて、CMOS撮像素子は画質が悪く、評判も悪かった。 携帯電話のカメラやトイカメラで良く使われたが、速く動くものが撮れない、ノイズが多い、といった問題を抱えていた。 しかし技術革新の末これらの問題も改善され、現在ではハイエンドのデジタル一眼レフカメラでも採用されるに至っている。 CCD撮像素子と違いデータの読み出しにバケツリレーをする必要が無く、CCDとはデータの読み出し方が大きく異なるのが特徴である。 CMOSは半導体素子であるため、IC/LSIの内部回路と同様、撮像素子周辺に回路を組むことが可能である。各画素ごとにアンプを付けて電子回路に繋げることができ、各画素から個別に信号を取り出すことができる。これは、CCDではまず出来ない特徴と言える。
概要 Clojureでデータマイニングに必要な各手法を解説する記事です。 本記事を読むと、全くClojureを知らない方でも データ抽出・集計 可視化 機械学習(決定木、ランダムフォレスト、k-meansクラスタリング) をClojureで実行できるようになります。 はじめに ClojureとはJVM上で動く(つまりOSを問わず沢山の環境で動く上に Java資産をそのまま使える)Lisp系の言語です。 Clojureではデータマイニングを行う際、 Incanterとclj-mlという2つの便利なツールがあります。 Incanterは統計処理用の専門ライブラリで、 単体で様々な統計分析を行ったり集計を便利にしたりする機能が沢山用意されています。 clj-mlはwekaという機械学習系のツールをClojureで簡単に使えるようにしたラッパーで、 決定木やランダムフォレストなどの分類器や 各種ク
セカイカメラがリリースされた’09年。iPhoneの日本発売から1年が過ぎ、スマホが普及し始めたというときだった。スマホのカメラをかざすと、目の前の風景にコメントや画像が浮かぶ。そんなSFの世界のような体験に、スマホの未来を感じた方も多いのではないだろうか。そんなセカイカメラが、’14年2月22日、サービスを終える。AR(拡張現実)で注目を集めたアプリはなぜ、終了に至ったのか? 運営会社のtab(旧:頓智ドット)CEO谷口昌仁氏に話を聞いた。 ◆混沌×混沌の世界を捨て、思想は次アプリへ引き継ぐ 「まず、ダメだった点から3点お話しします。1つ目は、使うにあたりスマホをかざさなくてはいけなかったこと。セカイカメラが登場する前から研究されていたARを、スマホというデバイスを使って身近なものにしたことは大きい。けれど、かざすのは実際恥ずかしいですよね。周辺の情報はスマホの画面を見てリストや地図で見
前フリ 最近@seizansさんが新人Haskell使いを増やしまくっている。 で、その人達がググった時のために先にたくさんブログ記事書いて釣ろうぜっていう話をしていたけど、@kazu_yamamotoさんとか@nom4476さんらが仰るように、一旦自分がわかってしまうとなかなか記事を書く気力が起きない(し、子育てで忙しいので後は任せたって言われた)。 そうこうしているうちに@seizansさんがすごい勢いでHaskell力を伸ばしはじめた。 なので最近彼が覚えたらしいモナドトランスフォーマーの入門的な記事をStateモナドと合わせて先回りして書いてしまおうというわけす。引用数を稼ぐには先手必勝です。 Stateモナド Haskellで一時的な状態を持たせたい時はStateモナドを使うらしいですよ。 といっても何が何だかよくわかんないんですけど、 状態モナド遊び - あどけない話 この記事
私の感覚としては、モナドはかなりわかりづらい。モナドの定義とか計算法則はわりとわかる。以下サイトがおすすめ。 Haskell の State モナド (1) - 状態を模倣する | すぐに忘れる脳みそのためのメモ: http://jutememo.blogspot.jp/2009/10/haskell-state-1.html しかし実際にプログラムを書いてみると、使い方がわからない。特に IO モナドがわからない。実際にプログラムを書いて困った点、それらをどのように解決しているか? ということをまとめる。 今から振り返ると Real World Haskell の内容ちゃんと理解して読んでたら問題にすらならなかったんですけどね。 1. 副作用の分離? モナドは副作用のある計算を分離するなど言われる。確かに多くのモナドでは純粋な関数からモナドを使用し、run することにより値を取り出すこと
もっと、モナドの力を引き出したくはないか? え?アクションの前後で型を変えたい?いやいやいや、モナドは自己関手の圏上の単なるモノイドだよ、そんなことができ…る…!?えっ、できるの…マジで…? できる。そう、Haskellならね。 {-# LANGUAGE QuasiQuotes #-} import Control.Monad.Indexed.State import Control.Monad.Indexed import Language.Haskell.IndexedDo hoge :: IxState Int [Int] () hoge = [ido|do imodify (*10) imodify show imodify reverse imodify (++"123") imodify $ map fromEnum |] *ghci> runIxState hoge 42 (
今日もHaskellネタ。 Haskellでは避けて通れないモナドの話をしてみようと思ったのですが ・・・やっぱり難しい。 結局のところ、 モナドを理解する ≒ モナドのインスタンスをたくさん覚える だよなぁと思ったので、モナドについて解説するのはやめにして、 実際にモナドを使ったコードを書いてみます。 Stateモナドを使った、簡単な乱数ライブラリ 使い方 拡大 ソースコード module EasyRandom ( Random(..), random, uniform, permutation, normal, runRandom ) where import Control.Monad.State.Lazy (state, State(..), runState) import qualified System.Random as R (random, randomR, getStd
こないだ、@kumagiさんがJubatusのクラスタリングのテスト書いたらNaNになるというので、デバッグしてたらabsにハマってたという恐ろしいバグを発見したので書いておきます。 C++で絶対値を求める関数は3つあります。 ::abs Cの関数でintを引数に取る ::fabs Cの関数でdoubleを引数に取る std::abs C++の関数でint引数とdouble引数でオーバーロードされている さて、大事なのは std::abs はオーバーロードされているので、doubleを渡すと::fabs相当の処理をしてくれる、ところが::absはCの関数なのでdoubleを渡してdoubleで結果を受け取ろうとすると、intにキャストして絶対値を計算してからdoubleに戻す、という恐ろしい挙動を示すことです。さて、std::absを呼んでるつもりで、absと書くとどうなるか。usingし
Note that the Debian/Ubuntu package won’t work before Debian Jessie (8.0) or Ubuntu Trusty (14.04), due to missing dependencies. Furthermore, you are more than welcome to make a package for your OS of choice, if you do so please contact us. ☺ Build from the source (if you don’t use our packages) You will need: Python 3.4+, the interpreter, as well as the headers and shared objects needed to compil
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く