调用Numpy和scikit-从c#学习

本文关键字:学习 scikit- Numpy 调用 | 更新日期: 2023-09-27 18:07:52

我正在构建一个分类器,我希望将其作为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);

分类器在启动时训练自己(如上所述),我用我想分类的文本实时调用分类器。

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

Ironpython不支持scikit-learn。(可以从IronPython中使用scikit吗?)

谁能提出最好的方法?我愿意听取建议,但我需要将训练好的分类器保存在内存中,因为在每次调用时训练它将是令人望而却步的。

我的研究结果如下:

  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)。我特别需要线性支持向量机和TfidfVectorizer?

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

我愿意接受所有的想法和任何帮助。谢谢你。

调用Numpy和scikit-从c#学习

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

我知道IronPython从c#到Sklearn/Numpy似乎不起作用。

最好的方法是使用Flask之类的框架为Python Sklearn/Numpy代码创建一个REST API Webservice,然后使用HttpClient类从c#代码调用API。

这将完全消除IronPython,并独立于Python代码的性质工作。