Github項目地址:https://github.com/gxtrobot/bustag
目錄
基於機器學習的老司機車牌自動推薦系統
Bustag 是一個基於我開發的 python 異步爬蟲框架開發aspider的自動車牌推薦系統, 系統原理為定時爬取最新車牌信息, 然後可以對車牌進行打標(標示是否喜歡), 打標車牌到一定數量可以進行訓練並生成模型, 以後就可以基於此模型自動對下載的車牌進行預測是否喜歡, 可以過濾掉大量不喜歡的車牌, 節約時間
Python in Action 學習視頻發布
https://github.com/gxtrobot/pyinaction
為提高解決問題效率 ,建了個qq群
QQ群: 941894005
注意, 該群僅討論python學習, 爬蟲開發, aspider 框架學習開發, Bustag系統bug, 運行問題等, 請勿討論無關主題
免責聲明: 本軟件僅用於技術學習使用,禁止用於商業用途,使用本軟件所造成的的後果由使用者承擔! 如果你覺得這個軟件不錯, 可以請我喝杯冰闊落 ^_^.
windows, mac 綠色版下載地址
鏈接: https://pan.baidu.com/s/1pqarq7fOXjsbad0WN4Uaaw 提取碼: budu
壓縮包密碼: gxtrobot
docker 版本同步更新
運行 docker pull gxtrobot/bustag-app:latest
後重新啟動項目即可
使用須知
只需在data目錄下創建config.ini, 然後啟動系統, 訪問localhost:8000
使用視頻
鏈接: https://pan.baidu.com/s/1pqarq7fOXjsbad0WN4Uaaw 提取碼: budu
在視頻目錄下
- 群暉docker安裝bustag 視頻發布(2019-10-16)
- bustag最新使用視頻發布(2019-10-15)
- linux/mac docker版本安裝
- win10 docker版本安裝
更新
release 0.2.1(2019-10-12)
- 修復幾個bug
- 增加系統啟動錯誤信息打印, 方便排查
該版本主要是為了更好發現錯誤, 如果能正常運行的可以不更新
系統功能
- 自動抓取最新車牌信息, 抓取頻率可以自定義
- 系統啟動後自動開啟一次下載, 然後安裝設置抓取頻率下載
- 車牌打標功能
- 模型訓練, 基於當前所有打標數據訓練模型
- 有了模型後, 自動預測判斷是否喜歡
- 手動上傳番號, 本地文件管理
- 數據庫打標數據導入
- Docker 鏡像一鍵運行, 省去新手配置項目的麻煩
- 項目訪問地址: localhost:8000
系統截圖(隱藏了左邊封面圖片)
如何運行項目
windows , mac綠色版如何使用
下載zip包後解壓縮到任意目錄, 然後在目錄下的data目錄里, 創建文件config.ini – windows 版: 執行(雙擊)bustag.exe – mac 版: 執行(雙擊)bustag – 瀏覽器訪問: localhost:8000, 訪問成功說明運行正常, 如果訪問不成功, 可以看bustag程序窗口有無報錯
本地源代碼安裝
懂 python 開發的可以 clone 本項目, 建立一個虛擬環境並按照 requirements.txt 的 python 包後, 在項目根目錄下 直接運行
python bustag/app/index.py
或者安裝了gunicorn
gunicorn bustag.app.index:app --bind='0.0.0.0:8000'
使用 docker 運行(推薦)
- 建立一個目錄, 如 bustag, 然後在該目錄下建一個子目錄 data, data 目錄用於保存配置文件以及下載數據的數據庫
- 在 data 下需要建立一個文件, config.ini, 該文件用於設置爬取的初始地址, 以及每次下載的最大數量
- 運行命令
linux, mac
docker run --rm -d -e TZ=Asia/Shanghai -e PYTHONUNBUFFERED=1 -v $(pwd)/data:/app/data -p 8000:8000 gxtrobot/bustag-app
windows powershell
docker run --rm -d -e TZ=Asia/Shanghai -e PYTHONUNBUFFERED=1 -v ${PWD}/data:/app/data -p 8000:8000 gxtrobot/bustag-app
注: -e TZ=Asia/Shanghai , 指的是docker container的時區設置, 如果需要其他時區可自行設置, 如果不設置默認為UTC時區
-e PYTHONUNBUFFERED=1 , 指的是顯示所有log輸出, 如果不設置, 那隻能看到debug 的錯誤log日誌
如何使用項目
請按照以下順序
- 到打標頁面進行打標, 達到一定數量(喜歡+不喜歡), 比如 300
- 到其他頁面訓練模型
- 坐等系統自動推薦
- 在推薦頁面進行確認(確認過的數據轉為打標數據)
- 積累更多打標數據, 再次訓練模型, 打標數據越多模型效果越好
data 目錄文件說明
|____bus.db
|____config.ini
|____crontab.txt
|____model
| |____ label_binarizer.pkl
| |____model.pkl
- config.ini, (系統配置文件, 必須, 系統啟動時候需要此文件, 參考文件)
- root_path: 制定bus網站主頁地址, 爬蟲起始地址, 由於地址可能變化, 確保本機能夠訪問該地址, 如果需要代理才能訪問, 必須開啟全局代理, 系統本身無代理設置
- count: 每次下載總數, 建議不要太多, 500以下比較好
- interval: 每次下載間隔時間, 單位為秒, 建議不要低於1800秒
- bus.db (數據庫文件, 可選, 但是可以放一個現成的庫, 有 2000 條數據, 方便直接開始打標, 不需要等下載)
- crontab.txt (定時下載配置文件, 可選, 參考例子)
- model 目錄(系統訓練生成的模型)
其他問題
- 改變自動下載的頻率 修改config.ini的interval 參數即可, 單位是秒, 比如修改為一小時更新一次為
interval=3600
- 改變下載初始 url 因為該 url 會經常改變, 所有系統的 config.ini -> download -> root_path 定義了初始 url, 可以根據需要改變
- 是否可以使用代理 目前系統還沒加入代理功能, 不過可以在 docker 設置代理訪問
- 下載數量多少合適 鑒於爬蟲的穩定性, 不建議每次下載太多, 也可能會給 bus 服務器帶來壓力, 如果需要, 初次使用可以加大到 1000, 這樣可以下載多點初始數據用於打標, 後面可以改為 300
- 模型效果如何 經過一些測試, 最終使用了 KNN 模型, 效果的話談不上非常好, 在準確率上還可以, 不過召回率相對低一些, 也就是說推薦的準確率相對高點, 但是會漏掉一些喜歡的數據. 所以, 鑒於定期對推薦數據進行確認, 經過確認後, 推薦數據轉為打標數據, 然後重新訓練,打標數據越多效果越好
- 要多少打標數據才能訓練模型 建議至少達到 300 打標數據(包括喜歡, 不喜歡), 如何嘗試訓練模型, 並查看模型效果值, 如不滿意可以增加訓練數據並重新訓練
- 模型用了什麼數據訓練 模型目前主要使用了各種標籤數據, 比如影片分類, 女優名等等, 目前沒有使用到標題
- 如何改變服務器運行端口 服務器默認為 8000 端口, 如果需要改變, 可以修改啟動 docker 容器命令, 比如 8000
修改為8000端口, 注意:後面的8000不要變, 然後可以通過localhost:8000訪問
docker run --rm -d -v $(pwd)/data:/app/data -p 8000:8000 gxtrobot/bustag-app
- 如何備份數據庫 系統使用的數據庫保存在 data 目錄下的 bus.db, 如果有需要可以將此文件拷貝一份作為備份, 比如在打標測試模型時, 如果不想使用當前打標數據, 可以將數據庫恢復到原來的版本 該數據庫為 sqlite 格式, 可以直接使用軟件打開, 比如 DB Browser for Sqlite, 該軟件支持多平台