Есть ли какие-либо компьютерные библиотеки для изучения в C#? Я за чем-то вроде WEKA. Спасибо.машины, изучающие библиотеки в C#
ответ
В кодебере есть библиотека нейронной сети под названием AForge.net. (Код размещен на Google code) (Также проверку на AForge homepage - Согласно странице, новая версия теперь поддерживает генетические алгоритмы и машинное обучение, а также Похоже, что прогрессировал очень много, так как я в последний раз играл с ним.)
Я надеваю Я не знаю, что это что-то вроде WEKA, поскольку я никогда не использовал это.
(есть также статья о его usage)
Хорошая. Upvoted. –
Неплохо, хотя хотя бы для кого-то, не очень знакомого с темой, это действительно не тот хороший выбор. Они не используют частичные классы для своих форм (затрудняет чтение кода за их образцами), и я не могу найти для него приличную документацию. – RCIX
@RCIX: Я согласен, что это не совсем просто, вам действительно нужно понять нейронные сети и математику позади них. Это, конечно, не предназначено для обучения NN, а скорее для их реализации, когда вы знаете, что делаете. Документы находятся здесь: http://www.aforgenet.com/framework/docs/, но да, они выглядят немного редкими. Лично я не использовал его в течение нескольких лет, и похоже, что с тех пор он много добавлен, поэтому он, вероятно, вырос сложнее. –
Вы также можете use Weka with C#. Лучшим решением является использование IKVM, as in this tutorial, хотя вы также можете использовать мостовое программное обеспечение.
В чем «разводящее программное обеспечение» вы говорите? который? – lmsasu
Я создал в C# ML library, который предназначен для работы с общими объектами POCO.
Weka можно использовать с C# очень легко, как сказал Шейн, используя IKVM и некоторый «код клея». Folow учебник по weka page, чтобы создать «версию .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);
}
Первый тест показывает, как построить классификатор и классифицировать новый пример с ним, второй показывает, как вы можете использовать сохраняемый классификатор из файла для классификации примера. Если вам нужна поддержка дискретных атрибутов, некоторые изменения потребуются. В приведенном выше коде используются 2 вспомогательных класса:
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);
}
}
Существует также проект под названием Encog с кодом C#. Его поддерживает Джефф Хитон, автор книги «Введение в нейронную сеть», которую я купил некоторое время назад. Кодовая Git здесь: https://github.com/encog/encog-dotnet-core
Я ищу машинного обучения библиотек для .NET, а также и нашел Infer.NET от Microsoft Research на nuget.org/machine-learning:
- 1. Рельсы, изучающие простой ajax/jquery
- 2. Независимы ли машины статической библиотеки?
- 3. Государственные машины в C#
- 4. Государственные машины в C
- 5. Neo4j Cypher найти все пути, изучающие отсортированные отношения
- 6. Кодирование машины состояния в C++
- 7. C государственный дизайн машины
- 8. C++ генератор состояний машины
- 9. Установка времени машины C#
- 10. Реализация многопотоковой машины в C/C++
- 11. C++ Кодирование виртуальной машины
- 12. Использование библиотеки C в C++
- 13. библиотеки кватернионов в C/C++
- 14. Вызов библиотеки C++ в C#
- 15. Встраивать библиотеки C++ в .Net-библиотеки
- 16. Файлы библиотеки классов библиотеки C#
- 17. Переопределить функции библиотеки библиотеки c?
- 18. Файлы библиотеки в C
- 19. Библиотеки зданий в C#
- 20. C++ библиотеки в Android
- 21. Ограничение регистрации для машины C#
- 22. C# и библиотеки C++
- 23. C/C++ PLSA библиотеки
- 24. Как загрузить весь каталог с удаленной машины с помощью библиотеки scp libssh в C++?
- 25. C# библиотеки?
- 26. Как получить имя локальной машины в C#?
- 27. Поймать невыполненные чистые виртуальные машины в C++
- 28. Фактическое значение машины - «Особенности» в C
- 29. Реализация государственной машины в C++ HOW?
- 30. C++/R: RInside в Windows 7 машины
Я не согласен, что это не конструктивный вопрос. Я думаю, что очень полезно иметь набор пользовательских советов по библиотеке по автоматическим результатам, поиск Google появляется. Я не понимаю, почему предложения библиотеки не могут сопровождаться «фактами, ссылками и конкретным опытом», как описано в примечаниях к закрытию. –
@IsmailDegani Можете ли вы проголосовать за повторное открытие? –
ЛЮБОЙ СМОТРЕТЬ ДЛЯ РАМКИ: приведенные ниже ответы датируются, потому что вопрос заблокирован. Существует популярная платформа C# для обучения с открытым исходным кодом под названием Accord.NET, и вот ее веб-страница: http://accord-framework.net/ –