Используемые классы и методы Байесовского классификатора



Для анализа точности алгоритма упрощенного Байеса было разработано 12 методов.

Таблица 1.Используемые классы и методы

Класс Program

класс, в котором реализованы все методы, необходимые для классификации

Методы

staticstring[] MakeData(int numRows) Устанавливает значение количества строк с данными
staticstring MakeSex() Возвращает значение пола
staticstring MakeDominance(string sex) Возвращает значение доминирования
staticstring MakeOccupation(string sex) Возвращает значение профессии
staticstring MakeHeight(string sex) Возвращает значение высоты
staticstring[] BinData(string[] data, string[][] attributeValues, double[][] numericAttributeBorders) Категоризирует значение высоты
staticint[][][] MakeJointCounts(string[] binnedData, string[] attributes, string[][] attributeValues) Хранение совместных подсчетов данных
staticint AttributeValueToIndex(int attribute, string attributeValue) Возвращает числовое значение индекса признака
staticvoid ShowJointCounts(int[][][] jointCounts, string[][] attributeValues) Возвращает список признаков
Staticint[] MakeDependentCounts(int[][][] jointCounts, int numDependents) Количество мужских и женских данных
staticint Classify(string occupation, string dominance, string height, int[][][] jointCounts, int[] dependentCounts, bool withSmoothing, int xClasses) Классификация по формуле упрощенного алгоритма Байеса

 

Демонстрация работы приложения для классификации пола

Для генерации синтетических данных были использованы случайные значения роста людей в границах от 60 до 80 (заданы случайные значение в данном интервале), следует учесть увеличивающуюся точность при генерации больших объемов данных. Сглаживание Лапласа не влияет на результат так как в примере не выбраны данные, которые могли бы выдать в числителе формулы 0, такое возможно при наборе параметров ранее в выборке не сгенерированных, чаще возникает на малых объемах где возможны «аномалии», например, женщина левша строитель с высшим образованием может не находиться в данных.

Изменение точности в оценке бинарной классификации заметно если убрать доступную профессию у одного из полов, тогда при уменьшении количества информации будет значительное изменение вероятности, это видно на примере первой строки таблицы 2.Изменения точности при использовании двух характеристик зависят только от данных из выборки, сгенерированной случайным образом, что говорит о значимости только количества информации.

Таблица 2. Анализ упрощенного алгоритма Байеса

Количество строк Использовано характеристик Точность определения пола мужчина Время в тиках
400 2 0,3150 52539
400000 2 0,6878 67920
400 4 0,5759 92227
400000 4 0,6864 751053

 

Используемые классы и методы Нейронной сети

Для анализа точности нейронной сети на основе перцептронов Розенблатта было разработано три класса и 16 методов.

Таблица 3. Используемые классы и методы

Класс Program

Методы

staticvoid MakeData(string dataFile, int numLines) Устанавливает значение количества строк с данными
staticvoid MakeTrainAndTest(string file, outdouble[][] trainMatrix, outdouble[][] testMatrix) Создание тестовой и тренировочной матрицы

Класс NeuralNetwork

Конструкторы

public NeuralNetwork(int numInput, int numHidden, int numOutput) Конструктор

Методы

publicvoid SetWeights(double[] weights) Установка весов сети
publicdouble[] ComputeOutputs(double[] currInputs) Вычисление выходов
privatestaticdouble SigmoidFunction(double x) Сигмоидная функция, необходимые значения до 1.0
privatestaticdouble[] Softmax(double[] hoSums) Масштабирование с определением максимума
publicdouble[] Train(double[][] trainMatrix) Поиск лучших весов
privatedouble CrossEntropy(double[][] trainData, double[] weights) Вычисление кроссэнтропийной ошибки
publicdouble Test(double[][] testMatrix) Возвращает точность правильных прогнозов

Класс Helpers

Методы

publicstaticdouble[][] MakeMatrix(int rows, int cols) Создание матрицы
publicstaticvoid ShuffleRows(double[][] matrix) Смена строк
publicstaticint IndexOfLargest(double[] vector) Поиск индекса большего элемента
publicstaticvoid ShowVector(double[] vector, int decimals, bool newLine) Показать вектор
publicstaticvoid ShowMatrix(double[][] matrix, int numRows) Показать матрицу
publicstaticvoid ShowTextFile(string textFile, int numLines) Показать строки текстового файла

Класс Particle

public Particle(double[] position, double fitness, double[] velocity, double[] bestPosition, double bestFitness) Конструктор

 


Дата добавления: 2018-05-01; просмотров: 127; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!