我正在嘗試構建分佈式按需建模生產系統,並希望將數十萬個小型模型保存在內存中(並將它們傳輸到數據庫和進程之間)。我正在看statsmodels。可以修剪statsmodels結果序列化?
我最感興趣的只是能夠保存模型的係數並在模型上調用預測。
它看起來像statsmodels包含TONS附加信息(O(原始數據大小)),這是根本不需要用於此用例。序列化的大小是幾兆字節,而係數的大小隻有幾個字節。這充滿了我的數據庫,並且殺死了分佈式處理和緩存性能,只需很長的時間就可以序列化和反序列化。通過在內存中保留兩個數量級以上的模型,刪除非係數數據可能會導致兩個數量級的加速。
在statsmodels,有一般的方式:
- 我可以請求非輸出的係數數據不生成,或
- 從對象中刪除,或
- 提取係數(這很容易)和使用它們來進行預測(這似乎不那麼容易)的方法
我使用各種statsmodels模型,但主要是GLM和Logit。
我看起來並不重要。結果對象參考引用原始數據的模型對象。我無法讓它適用於單個模型,但是(通過逐個刪除字段)。但是,是否有適用於所有型號的通用型方法?
甜!非常感謝 – user48956
我在相關問題上增加了兩個段落。還有一個技巧就是存儲「params」,然後用新的或人造的數據創建一個假模型,這些數據只用於簡單的預測。 'model.predict(params,exog,offset)'。但是,這並不是單元測試,也不是「正式」支持。 – user333700