.
Haskel Financial Data Modeling and Predictive Analytics
Friss meleg nyomdaszagú könyv:) Csak 165 oldal és így is annyira kemény a témája, hogy csak hírt vagyok képes adni róla, kutyafuttában, egyéb teendők miatt.
Mennyi, de mennyi rossz érzésem volt a funkcionális nyelvek irányába, minden erényük elismerése mellet, mit vitatkoztam az ügyben, árral szembemenve :)
Az ellenérzéseim perdöntően abból fakadtak, hogy
* Ki fogja ezeket megtanulni (na és melyiket: Scala, Clojure, Erlang etc.)?
* Na pláne ki fog módosítani, egy korábbi fejlesztést?
* Mennyire átjárhatók egy C/PASCAL analógiában?
* Mennyire zavar be az OO-paradigma támogatása?
* Mennyire elég, ami belőlük a Pythonban van implementálva, limitáltan?
* Mennyi hozzáadott érték van, effektíve pros-cons alapon számbavehető módon?
* Mennyiben intellektuális onanizálás az egész?
* Mennyiben l'art pour l'art -> valami mesterséges absztrakt szépség ideálért?
* Mennyiben hype?
Ami a véleményemmel szemben zavart_
* A párhuzamos feldolgozás látványos támogatása kezdettől fogval nyugtalanító volt számomra :)
* Tömörség,
* Lambda-kalkulus tömör ám kifejező ereje
* A hírek szerint, jobban működő programok írhatók, értsd
valószínűbben csinálják azt, amire írták
* Ehhez jött a MapReduce paradigmában betöltött életerős szerepük.* És most már a prediktív analitika ajtaján is dörömbölnek a funkcionális nyelvek.
* Alkalmazás is van már láttam Clojure-wrappert java-s data mining libraryhez.
* Könyv is jelenik meg még ha első körben csak 165 oldalban
Érdekesség: a 165 oldalba még install-folyamat, nyelvi bevezető és text-feldolgozás is belefért.
Az első "igazi" topik, a Grubb's test outlier analízishez.
Igazándiból a Kálmán-filter-t lett volna érdekes kiemelni, mert az jóval közismertebb, de kedvezzünk az egyszerűségi elvnek. :)
Bemásolom ide alább a vontkozó kódot, elmékedésre, és én elhallgatok. ;)
module Grubbs (
grubbs
) where
import qualified Data.Vector.Unboxed as U
import Statistics.Sample
grubbs :: [Double] -> Maybe Double
grubbs xs
| numOfOutliers > 0 = Just $ fst $ U.maximumBy cmpByG outliers
| otherwise = Nothing
where n = fromIntegral $ length xs
gCritical = (n-1)/(sqrt n)
v = U.fromList xs
(m,s) = meanVarianceUnb v
stddev = sqrt s
getGtuple x = (x, (abs (x - m))/stddev)
isOutlier (_, g) = g > gCritical
outliers = U.filter isOutlier $ U.map getGtuple v
numOfOutliers = U.length outliers
cmpByG (_, a) (_, b) = compare a b
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése