<form id="hvz3n"><nobr id="hvz3n"><meter id="hvz3n"></meter></nobr></form>
    <form id="hvz3n"></form>
      <strike id="hvz3n"></strike>

        <form id="hvz3n"></form>

          <address id="hvz3n"></address><address id="hvz3n"><nobr id="hvz3n"><meter id="hvz3n"></meter></nobr></address>

          <sub id="hvz3n"><listing id="hvz3n"><menuitem id="hvz3n"></menuitem></listing></sub>

          新聞資訊

          新聞資訊 通知公告

          如何使用 Python 構建推薦引擎?

          編輯:005     時間:2020-08-28

          其實,多年以前,我寫了一個很小的應用程序,嘗試根據葡萄酒的等級來推薦葡萄酒。這是一個小應用,我只分享給了幾個好友,他們中有些人與我有相似的品味,而有些人則有不同的品味。

          最初,我主要是為了研究如何編寫推薦引擎,但如果能夠順便找到一些喜歡的新酒,那就是意外之喜了。事實證明,盡管只有少數幾種葡萄酒的評分,但這款應用的推薦依然超出了我的預期。

          另外,我也很喜歡 Postgres(不奇怪吧),最近我一直在想為什么我不能直接在 Postgres 中研究機器學習呢。沒錯,我們有 madlib,但是我想編寫自己的推薦引擎。于是,我做了簡單的嘗試,結果發現我可以在 Postgres 中做很多事情。下面就讓我來介紹一下如何在 Postgres 內快速構建一個推薦引擎。

          從現有代碼著手

          首先,我快速瀏覽了 Python 推薦的一些示例引擎。為了簡單起見,我想建立一款更小巧、更簡潔的應用,我并不介意使用其它庫。后來,我找到了一個簡潔的rec-engine(https://github.com/scottfitzcodes/rec-engine-example)示例,該示例利用了 Pandas 和簡單的數據模型大幅降低了構建推薦引擎的難度。

          設置初始表結構

          我抽取了該實例應用程序使用的數據集,并將其轉換為SQL進行加載:


          加載DataFrame

          該 Python 示例直接從 CSV 加載了 DataFrame。但我想在 Postgres 中構建應用。通過上面一步,我將所有數據都存儲在了表中,但是如今將其放入DataFrame中……我不是很想再解析成CSV格式。

          解決這個問題的方法有很多種(比如創建 JSONB 對象、創建自定義類型等),但我選擇了一種非常簡單而且很容易實現的方法:將兩個數組按照相同的方式排序,然后利用這兩個數組創建DataFrame。

          為此,我定義了一個函數,并導入了pandas:


          注意:首先你需要在 PostgreSQL 數據庫安裝 plpython3u。

          你可能注意到,我并沒有用一個數組或一個字典傳遞訂單而是傳遞了兩個數組,后面的產品也是兩個數組。為了將數據傳遞到SQL函數中,我創建了如下查詢:



          接下來,我就可以將訂單數據加載到 DataFrame 了:


          下一組數據與嵌入到PostgreSQL函數中的Python示例(

          https://github.com/scottfitzcodes/rec-engine-example/blob/master/engine.py)相同:


          產品部分的處理與訂單相同:創建字典,然后加載 DataFrame。最后,將結果集作為 JSONB 對象返回。兩部分結合到一起,完整的函數如下所示:


          運行推薦引擎

          直接在 SQL 中調用該函數,就可以獲得推薦結果:


          對于 Plpython3u 和 Pandas 來說,每天使用 pg_cron 運行上述代碼可能是一個更簡單的解決方案。


          本內容屬于網絡轉載,文中涉及圖片等內容如有侵權,請聯系編輯刪除

          鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

          回復列表

          相關推薦
          黄色电影网址