我想在Haskell中編寫一個機器學習庫,以處理我的Haskell技能。 我考慮涉及一類是像這樣的一般設計:,給定一組實例X的Haskell多態性和類型實例
class Classifier classifier where
train :: X -> y -> trainingData
classify :: trainingData -> x -> y
例如,與它們的真實標記Y,列車返回 trainingData其在分類功能中使用。
所以,如果我想要實現KNN,我會做它像這樣:
data KNN = KNN Int (Int -> Int -> Float)
當第一個int是鄰居的數量和功能,它是計算矢量
之間的距離度量instance Classifier KNN where
---This is where I am stuck---
我該如何實現分類器類型的類函數,以便它們對於我將創建的所有分類器都是通用的 ? 我感覺就像我對待Haskell太像一個命令 面向對象的語言,我想這樣做的Haskell的方式。
這聽起來像你從錯誤的結局開始的問題。你可以爲你計劃創建的各種分類器發佈一些實際的'classify'和'train'函數的類型簽名嗎?那麼,如果,爲什麼以及如何抽象東西,可能會很明顯 – jberryman