C#中是否有任何机器学习库?我喜欢像WEKA这样的东西.谢谢.
在GitHub上查看这个很棒的列表.在列出的框架中,Accord.NET是开源的,最受欢迎的是2000多颗星.
另外,请查看Microsoft提供的.NET官方机器学习库:https://github.com/dotnet/machinelearning
旧
代码项目中有一个名为AForge.net的神经网络库.(代码托管在谷歌代码)(另外检查AForge主页 - 根据主页,新版本现在支持遗传算法和机器学习.看起来它自从我上次玩它以来取得了很大进展)
我不知道它是什么类似于WEKA,因为我从未使用过它.
(还有一篇关于它用法的文章)
您也可以将Weka与C#一起使用.最好的解决方案是使用IKVM,如本教程中所述,尽管您也可以使用桥接软件.
正如Shane所说,Weka可以很容易地从C#中使用,使用IKVM和一些"胶水代码".在weka页面上的教程创建weka的'.Net版本',然后你可以尝试运行以下测试:
[Fact] public void BuildAndClassify() { var classifier = BuildClassifier(); AssertCanClassify(classifier); } [Fact] public void DeserializeAndClassify() { BuildClassifier().Serialize("test.weka"); var classifier = Classifier.Deserialize("test.weka"); AssertCanClassify(classifier); } private static void AssertCanClassify(LinearRegression classifier) { var result = classifier.Classify(-402, -1); Assert.InRange(result, 255.8d, 255.9d); } private static LinearRegression BuildClassifier() { var trainingSet = new TrainingSet("attribute1", "attribute2", "class") .AddExample(-173, 3, -31) .AddExample(-901, 1, 807) .AddExample(-901, 1, 807) .AddExample(-94, -2, -86); return Classifier.Build (trainingSet); }
第一个测试显示,如何构建分类器并使用它对新示例进行分类,第二个测试显示,如何使用文件中的持久分类器对示例进行分类.如果您需要支持离散属性,则必须进行一些修改.上面的代码使用了2个辅助类:
public class TrainingSet { private readonly List_attributes = new List (); private readonly List > _examples = new List
>(); public TrainingSet(params string[] attributes) { _attributes.AddRange(attributes); } public int AttributesCount { get { return _attributes.Count; } } public int ExamplesCount { get { return _examples.Count; } } public TrainingSet AddExample(params object[] example) { if (example.Length != _attributes.Count) { throw new InvalidOperationException( String.Format("Invalid number of elements in example. Should be {0}, was {1}.", _attributes.Count, _examples.Count)); } _examples.Add(new List
我在C#中创建了一个ML库,用于处理常见的POCO对象.