Используемые классы и методы Байесовского классификатора
Для анализа точности алгоритма упрощенного Байеса было разработано 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!
