太骚了,用Excel玩机器学习!

本文介绍了如何使用Python库m2cgen将训练好的机器学习模型,如XGBoost,转换为VBA代码,使得非Python和机器学习背景的用户也能在Excel中实现预测功能。通过简单的步骤,作者展示了如何生成和应用VBA代码,并分享了在Excel中实现这一功能的过程,提供了一个将机器学习模型嵌入到Excel的实用示例。
摘要由CSDN通过智能技术生成

大家好,我是小z

最近发现了一个好玩的Python库,它可以将训练好的机器学习模型转换为Java、C、JavaScript、Go、Ruby,VBA 本地代码,可以让连Python和机器学习一无所知的同学也能感受预测的神奇。

先看效果哈

1573cd3ab91e2477956d360a423d0584.gif
输入特征数据,点击开始预测,即可输出类别概率

这个小东西,感觉还能玩出别的花样,但不清楚到底有什么场景。写这篇文章的时候,我对Excel的 VBA 一无所知,百度了几个用法就开搞了。现在我也能用 VBA 写一些函数和过程了,这也许是最大的收货吧。

m2cgen

m2cgen(Model 2 Code Generator)是一个轻量级代码生成器,它可以将训练好的机器学习模型转换成无需依赖库的本地代码。

m2cgen目前支持的模型还蛮多的,常用常见的都包括了:8cac84eb00b99a1442f01b2cbe0ad5cd.png

使用方法

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长这样:

b94458fef0a07405289656986c31d74c.png

实话实话,我对VBA还是小白,也懒得深究,于是就把代码改成了过程,这里就不贴了,我把改好之后的代码放到了github。有VBA大神可以帮忙,欢迎提交 PR。

https://github.com/tjxj/excel2ml

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

c7e6dcf873d2d8a043d3a567595c6e7a.png

Excel

点击excel菜单中的【开发工具】(如果没有开发工具选项卡,请参考:excel开发工具选项卡在哪?原来需要自己添加),然后在代码选项卡中点击【Visual Basic】 即可,也可以直接Alt + F11 唤出:

462243c1dbfdb21ada3a4bb027220e7f.png

点击插入-模块,把改好的 VBA 代码贴进去即可c5675b6104ac2797aadde57769a1a854.png

保存后退出,然后回到sheet页,开发工具-插入-按钮5ff0969dba498d98c122fa06a9993f93.png编辑好文字后,右键指定宏,选中我们刚才保存的那个即可。

8bcaaa35c463326a25c718538035e856.png然后就一切OK了。

29888017c580ce3f948f67a58e3b347f.gif

bbc1268849fe96877e8ac473f96e101e.gif

 
 
●适婚农村青年找对象有多难?
●品牌知名度分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值