библиотеки машинного обучения в C# [закрыто]
есть ли библиотеки машинного обучения на C#? Я после чего-то вроде WEKA.
Спасибо.
6 ответов:
проверить этот удивительный список на GitHub. Из перечисленных структур, Accord.NET является открытым исходным кодом и наиболее популярным с более чем 2000 звезд.
кроме того, проверьте официальную библиотеку машинного обучения для .NET, предоставленную Microsoft:https://github.com/dotnet/machinelearning
старый
есть библиотека нейронных сетей под названием AForge.net на codeproject. (Код размещен по адресу код Google) (также заказ Домашняя страница AForge - согласно домашней странице, новая версия теперь поддерживает генетические алгоритмы и машинное обучение, а также. Похоже, он сильно продвинулся с тех пор, как я в последний раз играл с ним)
Я не знаю, что это что-то вроде WEKA, поскольку я никогда не использовал это.
(есть также статья об этом использование)
вы можете используйте Weka с C#. Лучшим решением является использование IKVM, так как в этом уроке, хотя вы также можете использовать программное обеспечение моста.
Weka можно использовать с C# очень легко, как заявил Шейн, используя IKVM и некоторый "код клея". Следовать учебник о страница weka чтобы создать ".Net-версию" weka, вы можете попробовать выполнить следующие тесты:
[Fact] public void BuildAndClassify() { var classifier = BuildClassifier(); AssertCanClassify(classifier); } [Fact] public void DeserializeAndClassify() { BuildClassifier().Serialize("test.weka"); var classifier = Classifier.Deserialize<LinearRegression>("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<LinearRegression>(trainingSet); }public class TrainingSet { private readonly List<string> _attributes = new List<string>(); private readonly List<List<object>> _examples = new List<List<object>>(); 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<object>(example)); return this; } public static implicit operator Instances(TrainingSet trainingSet) { var attributes = trainingSet._attributes.Select(x => new Attribute(x)).ToArray(); var featureVector = new FastVector(trainingSet.AttributesCount); foreach (var attribute in attributes) { featureVector.addElement(attribute); } var instances = new Instances("Rel", featureVector, trainingSet.ExamplesCount); instances.setClassIndex(trainingSet.AttributesCount - 1); foreach (var example in trainingSet._examples) { var instance = new Instance(trainingSet.AttributesCount); for (var i = 0; i < example.Count; i++) { instance.setValue(attributes[i], Convert.ToDouble(example[i])); } instances.add(instance); } return instances; } } public static class Classifier { public static TClassifier Build<TClassifier>(TrainingSet trainingSet) where TClassifier : weka.classifiers.Classifier, new() { var classifier = new TClassifier(); classifier.buildClassifier(trainingSet); return classifier; } public static TClassifier Deserialize<TClassifier>(string filename) { return (TClassifier)SerializationHelper.read(filename); } public static void Serialize(this weka.classifiers.Classifier classifier, string filename) { SerializationHelper.write(filename, classifier); } public static double Classify(this weka.classifiers.Classifier classifier, params object[] example) { // instance lenght + 1, because class variable is not included in example var instance = new Instance(example.Length + 1); for (int i = 0; i < example.Length; i++) { instance.setValue(i, Convert.ToDouble(example[i])); } return classifier.classifyInstance(instance); } }
Я создал мл библиотека В C#, который предназначен для работы с общими объектами POCO.
есть также проект под названием Encog, который имеет код C#. Его поддерживает Джефф Хитон, автор книги "Введение в нейронную сеть", которую я купил некоторое время назад. Кодовая база Git находится здесь:https://github.com/encog/encog-dotnet-core
Я ищу библиотеки машинного обучения для .NET, а также и нашел Infer.NET из исследования Microsoft на nuget.org/machine-learning:
Comments