#include "stdafx.h"
#include <iostream>
#include <python.h>
int _tmain(int argc, _TCHAR* argv[])
{
Py_SetPythonHome(L"C:\\Users\\Administrator\\anaconda3\\envs\\py38");
Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
PyObject *pName = PyUnicode_FromString("fenleiqi");
PyObject *pMoudle = PyImport_Import(pName);
if (pMoudle != NULL)
{
printf("加载成功!\n");
// PyObject *pFun = PyObject_GetAttrString(pMoudle,"ii");
// PyObject* pArgs = PyTuple_New(2);
//
// PyObject *pValue1 = Py_BuildValue("i",5);
// PyObject *pValue2 = Py_BuildValue("i",3);
// PyTuple_SetItem(pArgs, 0, pValue1);
// PyTuple_SetItem(pArgs, 1, pValue2);
// PyObject* pReturn = PyObject_CallObject(pFun,pArgs);
PyObject* pReturn = PyObject_CallMethod(pMoudle,"select","i",1);
}
else
{
printf("脚本加载不成功!");
}
Py_Finalize();
return 0;
}
PyImport_Import 总是返回空值
import numpy as np
import xgboost as xgb
def select(classifier):
from numpy import genfromtxt
tz_noise = genfromtxt("tz_noisetrain.csv", delimiter=',')
X=tz_noise[:,:-2]
y=tz_noise[:,-2]-1
import pickle
if classifier==1:
from xgboost import XGBClassifier
model = xgb.XGBClassifier(objective='multi:softmax')
model.fit(X, y)
pickle.dump(model, open("pima.pickle.dat", "wb"))
elif classifier==2:
from sklearn import tree
model_tree = tree.DecisionTreeClassifier(criterion='entropy')
model_tree.fit(X,y)
pickle.dump(model_tree, open("pima.pickle.dat", "wb"))
elif classifier==3:
from sklearn.ensemble import RandomForestClassifier
model_rf= RandomForestClassifier()
model_rf.fit(X,y)
pickle.dump(model_rf, open("pima.pickle.dat", "wb"))
elif classifier==4:
from sklearn import ensemble
model_gbdt=ensemble.GradientBoostingClassifier(random_state=2018)
model_gbdt.fit(X,y)
pickle.dump(model_gbdt, open("pima.pickle.dat", "wb"))
elif classifier==5:
from sklearn import ensemble
from sklearn.tree import DecisionTreeClassifier
model_AdaBoost=ensemble.AdaBoostClassifier(DecisionTreeClassifier(max_depth=5),algorithm="SAMME")
model_AdaBoost.fit(X,y)
pickle.dump(model_AdaBoost, open("pima.pickle.dat", "wb"))
elif classifier==6:
from lightgbm.sklearn import LGBMClassifier
model_lightgbm = LGBMClassifier(objective ='multiclass')
model_lightgbm.fit(X,y)
pickle.dump(model_lightgbm, open("pima.pickle.dat", "wb"))
#def recog(data):
# import pickle
# model = pickle.load(open("pima.pickle.dat", "rb"))
# ss=np.array(data).reshape(-1, 1).T
# result=model.predict(ss)
# return result
select(6)
# data=[1,1,1,1,1,1]
# ff=recog(data)
上述是python代码
c++嵌入python时,python中不能有对系统操作的函数不然就报错。
你可以换一个简单的hello的py脚本试下,如果能调用成功就证明没问题。如 https://blog.csdn.net/wd1603926823/article/details/98086550 的最后所述
fenleiqi.py