太強了,用Excel玩機器學習


最近發現了一個好玩的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。

https://github.com/tjxj/excel2ml

想省事的同學直接去copy即可

Excel

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

點擊插入-模塊,把改好的 VBA 代碼貼進去即可

保存后退出,然后回到sheet頁,開發工具-插入-按鈕

編輯好文字后,右鍵指定宏,選中我們剛才保存的那個即可。

然后就一切OK了。
輸入特征數據,點擊開始預測,即可輸出類別概率

The End


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM