将sklearn的标准化函数封装供Qt调用为什么成功不了?
问题描述:
如代码所示,我将sklearn标准化函数封装起来QT调用返回为空
def StandardScalarTransformer(Xarray):
from sklearn.preprocessing import StandardScaler
clf=StandardScaler()
X=clf.fit_transform(Xarray)
# X=Xarray
return (X,)
!
但是如果是将数组原封不动的返回,其他语句都注释掉,程序是可以正常返回值的
def StandardScalarTransformer(Xarray):
# from sklearn.preprocessing import StandardScaler
# clf=StandardScaler()
# X=clf.fit_transform(Xarray)
X=Xarray
return (X,)
请问我是不是哪个地方配置不对
答
睡了一觉迷之修复了,Python端和Qt端的代码我都没有动过,自己也是一头雾水。估计是构建工程之前需要彻底清除然后重新构建吧,不管怎样,感谢各位同行的建议和意见!
答
X=clf.fit_transform(Xarray) 中 clf.fit_transform(Xarray) 的返回值估计就是空的,你单独测试一下试试
答
建议你采用程序调用的方式(而不是封装成dll),去掉用python端代码。如果需要包装程序不想让用户接触到源代码,就打包下。
通过程序调用,从标准输入/输出(stdin/out)交换数据兼容性比较好,也好调试。
dll调用,需要考虑很多二进制兼容问题,比如x86/x64下指针的不同,内存的分配,参数的长度,数据类型。