私は、Haskellのスキルを操作するために、Haskellで機械学習ライブラリを書くことを試みています。 は私は似ているクラスを含む一般的な設計について考えた:例えばHaskell多形性と型クラスインスタンス
class Classifier classifier where
train :: X -> y -> trainingData
classify :: trainingData -> x -> y
、実施例Xの組与えられ、その真のラベルyは、列車が分類関数で使用される trainingDataを返します。
私はKNNを実装したいのであれば、私はそうのようにそれを行うだろう:
data KNN = KNN Int (Int -> Int -> Float)
最初のintは隣人の数と機能ベクトル間の距離を計算し、その測定基準である場合には
instance Classifier KNN where
---This is where I am stuck---
どのように彼らは私が作成する分類器のすべてに を汎用的になるので、私は分類子型クラスの機能を実装することができますか? 私はハスケルをあまりにも多くの命令のように扱っているように感じています OOPのような言語と私はこれをハスケルの方法でやりたいと思います。
間違ったところから問題が始まっているようです。作成しようとしているさまざまな分類子の実際の 'classify'関数と' train'関数のいくつかの型シグネチャを投稿できますか?それでは、物事を抽象化するかどうか、なぜ、どのように抽象化するのが明らかでしょうか? – jberryman