太騷了,用Excel玩機(jī)器學(xué)習(xí)!
你們好,我是寶器!
最近發(fā)現(xiàn)了一個(gè)好玩的Python庫(kù),它可以將訓(xùn)練好的機(jī)器學(xué)習(xí)模型轉(zhuǎn)換為Java、C、JavaScript、Go、Ruby,VBA 本地代碼,可以讓連Python和機(jī)器學(xué)習(xí)一無所知的同學(xué)也能感受預(yù)測(cè)的神奇。
先看效果哈

這個(gè)小東西,感覺還能玩出別的花樣,但不清楚到底有什么場(chǎng)景。寫這篇文章的時(shí)候,我對(duì)Excel的 VBA 一無所知,百度了幾個(gè)用法就開搞了?,F(xiàn)在我也能用 VBA 寫一些函數(shù)和過程了,這也許是最大的收貨吧。
m2cgen
m2cgen(Model 2 Code Generator)是一個(gè)輕量級(jí)代碼生成器,它可以將訓(xùn)練好的機(jī)器學(xué)習(xí)模型轉(zhuǎn)換成無需依賴庫(kù)的本地代碼。
m2cgen目前支持的模型還蠻多的,常用常見的都包括了:
使用方法
m2cgen的安裝非常方便,直接pip:
pip?install?m2cgen
使用,先用XGBClassifier訓(xùn)練一個(gè)模型
#?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)
將模型轉(zhuǎn)為VBA
code?=?m2c.export_to_visual_basic(model,?function_name?=?'pred')
VBA的英文全稱是Visual Basic for Applications,是一門標(biāo)準(zhǔn)的宏語言,通常使用來實(shí)現(xiàn)Excel中沒有提供的功能、編寫自定義函數(shù)、實(shí)現(xiàn)自動(dòng)化功能等。VBA語言不能單獨(dú)運(yùn)行,只能被office軟件(如:Word、Excel等)所調(diào)用。
生成的VBA長(zhǎng)這樣:

實(shí)話實(shí)話,我對(duì)VBA還是小白,也懶得深究,于是就把代碼改成了過程,這里就不貼了,我把改好之后的代碼放到了github。有VBA大神可以幫忙,歡迎提交 PR。
https://github.com/tjxj/excel2ml
想省事的同學(xué)直接去copy即可

Excel
點(diǎn)擊excel菜單中的【開發(fā)工具】(如果沒有開發(fā)工具選項(xiàng)卡,請(qǐng)參考:excel開發(fā)工具選項(xiàng)卡在哪?原來需要自己添加),然后在代碼選項(xiàng)卡中點(diǎn)擊【Visual Basic】 即可,也可以直接Alt + F11 喚出:

點(diǎn)擊插入-模塊,把改好的 VBA 代碼貼進(jìn)去即可
保存后退出,然后回到sheet頁(yè),開發(fā)工具-插入-按鈕
編輯好文字后,右鍵指定宏,選中我們剛才保存的那個(gè)即可。
然后就一切OK了。


推薦閱讀
歡迎長(zhǎng)按掃碼關(guān)注「數(shù)據(jù)管道」
