1. 程式人生 > 其它 >m2cgen庫:將Python(sklearn)訓練的模型轉化為C/C++程式碼

m2cgen庫:將Python(sklearn)訓練的模型轉化為C/C++程式碼

技術標籤:C++c++python

m2cgen庫:將機器學習模型轉換為零依賴的本機程式碼(Java,C,Python,Go,JavaScript)。本文演示將其轉換為C/C++程式碼,使用sklearn機器學習庫中的隨機森林迴歸,訓練波士頓資料集,而後匯出為C程式碼,並在visual studio中編譯執行。

m2cgen庫的github地址:https://github.com/markWZX/m2cgen

  1. 首先安裝m2cgen庫,在命令列視窗輸入:pip install m2cgen (Python版本> = 3.4)。
  2. 開啟pycharm,輸入以下程式碼:
from sklearn.
datasets import load_boston from sklearn.ensemble import RandomForestRegressor import m2cgen as m2c boston = load_boston() X, y = boston.data, boston.target clf = RandomForestRegressor(random_state=0,n_jobs=-1) model=clf.fit(X, y) code = m2c.export_to_c(model)#匯出為c程式碼 print(code)

匯出的c程式碼有1萬多行,就不在此貼上了,將其複製到visual studio中專案的原始碼中,再手動新增一個main()函式,在main()函式中呼叫匯出來的score()函式,進行迴歸預測。(另外添加了計算程式執行時間的程式碼,畢竟1萬多行有點可怕,經過測試連續呼叫10萬次score()函式,所花時間為0.009s,所花費時間可以接受)

int main()
{
	double features[] = { 2.7290e-02, 0.0000e+00, 7.0700e+00, 0.0000e+00, 4.6900e-01,
	   7.1850e+00, 6.1100e+01, 4.9671e+00, 2.0000e+00, 2.4200e+02,
	   1.7800e+01, 3.9283e+02, 4.0300e+00 };
	clock_t start, finish;
	double totaltime;
	start = clock();
	//for (int i = 0; i < 100000; ++i)
	//{
		double output = score(features);
	//}
	finish = clock
(); totaltime = (double)(finish - start) / CLOCKS_PER_SEC; cout << "\n此程式的執行時間為" << totaltime << "秒!" << endl; std::cout << output << std::endl; }

輸出結果為:35.91在這裡插入圖片描述
在Python中的結果為34.7,可驗證C程式碼的正確性