c# - 从 C# 调用 Numpy 和 scikit-learn

标签 c# python numpy

我正在构建一个我希望作为 c# win 服务托管的分类器,公开一个端点,我可以使用我希望分类的文本远程调用。我目前有一个使用 ironpython 和自然语言工具包的工作,使用 c#4.0 动态。代码如下:

var py = Python.CreateEngine();
dynamic script = py.ImportModule("MyPythonScript");
classifier = script.GetClassifier();
//build features etc, then train
trainedClassifier = classifier.TrainClassifier(featureSet);

分类器在启动时进行 self 训练(如上),我用我希望分类的文本实时调用分类器。

我的问题是我想在 scikit-learn 中使用分类器和向量化器。

根据此链接,Ironpython 不支持 scikit-learn。 ( Can scikit be used from IronPython? )

有人可以为此建议最佳方法吗?我乐于接受建议,但我需要将经过训练的分类器保存在内存中,因为在每次调用时对其进行训练会让人望而却步。

我的研究取得了以下成果。

  1. IronPython 2.7 可以支持 numpy 和 scipy,( https://www.enthought.com/repo/.iron/ )。虽然当我尝试运行它时,我遇到了一个问题,即找不到 NumpyDotNet.dll。我放弃了,因为 scikit-learn 可能无论如何都无法与 IronPython 一起工作。

  2. 我看过“python for .net”(http://pythonnet.github.io/),但无法从 C# 调用它。我引用了 Python.Runtime.dll 但与这个人有相同的引用问题 ( https://stackoverflow.com/questions/22844519/missing-py-gil-from-c-pythonnet-example )

  3. 有人用过 sharpkit.learn 吗? (https://github.com/foreverzet/Sharpkit.Learn)。我特别需要 Linear SVM 和 TfidfVectorizer?

  4. 我对运行 python 脚本的其他解决方案持开放态度。但是,我需要缓存经过训练的分类器,并且不能重复训练它。

我对所有想法和任何帮助都持开放态度。 谢谢。

最佳答案

根据上述评论将此问题标记为已回答。我无法在 iron python 中托管 scikit-learn,而是使用 cpython 编写了一个服务。

关于c# - 从 C# 调用 Numpy 和 scikit-learn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24124586/

相关文章:

Python:无法将unicode转换为字符串

python - 按元素除法,忽略零

numpy - 填充和屏蔽批量数据集

c# - 使用 Mono.Cecil 重写程序集

python - 是否有自定义 Django 电子邮件确认链接模块?

python - 具有 4 个基本运算的表达式组合

python - 用 0 错误 :nan not supported for input type 替换 nan

c# - 递归到动态函数

c# - Windows 服务配置文件 C#

c# - 如何声明这个嵌套数组/列表?