На самом деле mutlithreading здесь не требуется.
Пусть ваша бизнес-логика генерирует событие всякий раз, когда вы хотите обновить заставку.
Затем пусть ваша форма обновит заставку соответствующим образом в методе, подключенном к обработчику событий.
Чтобы различать обновления, вы можете запускать разные события или предоставлять данные в классе, унаследованном от EventArgs.
Таким образом, у вас может быть приятный сменный всплеск без какой-либо многопоточной головной боли.
Фактически с этим вы можете даже поддерживать, например, gif-изображение в форме всплеска. Чтобы он работал, вызовите Application.DoEvents () в вашем обработчике:
private void SomethingChanged(object sender, MyEventArgs e)
{
formSplash.Update(e);
Application.DoEvents(); //this will update any animation
}
Есть нечто, называемое книгами; вы знакомы с ними? Когда я изучал ИИ два десятилетия назад, было много книг. Я думаю, что сейчас, когда Интернет существует, книги архаичны, но вы, вероятно, можете найти их в древней библиотеке.
Я думаю, вы можете написать классификатор "Naive Bayes" для фильтрации нежелательной электронной почты. Вы можете получить много информации из этой книги.
http://nlp.stanford.edu/IR-book/information-retrieval-book.html
На каком языке (языках) вы будете развиваться? Если вы обладаете гибкостью, я рекомендую Matlab, python и R. Это одни из наиболее распространенных языков, используемых для разработки и оценки алгоритмов. Они облегчают быструю разработку и оценку алгоритмов, манипулирование данными и визуализацию.Большинство популярных алгоритмов машинного обучения также доступны в виде библиотек (с исходным кодом).
Я бы начал с сосредоточения внимания на базовых упражнениях по классификации и / или кластеризации в R2. Его легче визуализировать, и обычно этого достаточно для изучения проблем машинного обучения, таких как риск, дисбаланс классов, шумные ярлыки, онлайн или офлайн-обучение и т. Д. Создайте набор данных из повседневной жизни или проблемы, которая вас интересует. Или используйте классический, как набор данных Iris, так что вы можете сравнить свой прогресс с опубликованной литературой. Вы можете найти набор данных Iris по адресу:
Одной из его хороших особенностей является то, что у него есть один класс, setosa, который легко линейно отделим от других.
После того, как вы выберете пару интересных наборов данных, начните с реализации некоторых стандартных классификаторов и изучения их производительности. Это хороший краткий список классификаторов для изучения:
Используя набор данных Iris и один из упомянутых мною языков, вы можете легко провести мини-исследование, используя любой из классификаторов, быстро (от минут до часов, в зависимости от вашего скорость).
Изменить: вы можете погуглить "Классификацию данных радужки", чтобы найти множество примеров. Вот демонстрационный документ классификации Mathworks с использованием набора данных Iris:
]Дерево решений. Он часто используется в задачах классификации и имеет множество вариантов. Книга Тома Митчелла - хороший справочник по его реализации.
Нейронные сети, возможно, проще всего реализовать первыми, и они достаточно подробно описаны в литературе.