最近發現了一個好玩的Python庫,它可以將訓練好的機器學習模型轉換為Java、C、JavaScript、Go、Ruby,VBA 本地代碼,可以讓連Python和機器學習一無所知的同學也能感受預測的神奇。
先看效果哈
其實做這個小東西,感覺還能玩出別的花樣,但不清楚到底有什么場景。寫這篇文章的時候,我對Excel的 VBA 一無所知,百度了幾個用法就開搞了。現在我也能用 VBA 寫一些函數和過程了,這也許是最大的收貨吧。
m2cgen
m2cgen(Model 2 Code Generator)是一個輕量級代碼生成器,它可以將訓練好的機器學習模型轉換成無需依賴庫的本地代碼。
m2cgen目前支持的模型還蠻多的,常用常見的都包括了:
使用方法
m2cgen的安裝非常方便,直接pip:
pip install m2cgen
使用,先用XGBClassifier訓練一個模型
# import packages
import pandas as pd
import numpy as np
import os re
from random import sample
from sklearn import datasets
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pickle
import m2cgen as m2c
seed = 2020
test_size = 0.3
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size, random_state=seed)
# fit model on training data
model = XGBClassifier()
model.fit(X_train, y_train)
將模型轉為VBA
code = m2c.export_to_visual_basic(model, function_name = 'pred')
VBA的英文全稱是Visual Basic for Applications,是一門標准的宏語言,通常使用來實現Excel中沒有提供的功能、編寫自定義函數、實現自動化功能等。VBA語言不能單獨運行,只能被office軟件(如:Word、Excel等)所調用。
生成的VBA長這樣:
實話實話,我對VBA還是小白,也懶得深究,於是就把代碼改成了過程,這里就不貼了,我把改好之后的代碼放到了github。有VBA大神可以幫忙,歡迎提交 PR。
想省事的同學直接去copy即可
Excel
點擊excel菜單中的【開發工具】(如果沒有開發工具選項卡,請參考:excel開發工具選項卡在哪?原來需要自己添加),然后在代碼選項卡中點擊【Visual Basic】 即可,也可以直接Alt + F11 喚出:
點擊插入-模塊,把改好的 VBA 代碼貼進去即可
保存后退出,然后回到sheet頁,開發工具-插入-按鈕
編輯好文字后,右鍵指定宏,選中我們剛才保存的那個即可。
然后就一切OK了。
The End