Листинг 7.14.
IrisTest.java
package
chapter7;
import
java.util.ArrayList;
import
java.util.Arrays;
import
java.util.Collections;
import
java.util.List;
public class
IrisTest {
public static final
String
IRIS_SETOSA
= "Iris-setosa";
public static final
String
IRIS_VERSICOLOR
= "Iris-versicolor";
1
. Этот. репозиторий. доступен. на. GitHub. по. адресу. https://github.com/davecom/.
ClassicComputerScienceProblemsInJava.
2
.
Lichman
.
M.
.UCI.Machine.Learning.Repository..Irvine,.CA:.University.of.California,.School.
of.Information.and.Computer.Science,.2013..http://archive.ics.uci.edu/ml.
7.5. Задачи классификации
205
public static final
String
IRIS_VIRGINICA
= "Iris-virginica";
private
List<
double
[]> irisParameters =
new
ArrayList<>();
private
List<
double
[]> irisClassifications =
new
ArrayList<>();
private
List irisSpecies =
new
ArrayList<>();
public
IrisTest() {
// убедитесь, что iris.csv расположен правильно
List irisDataset =
Util.
loadCSV
("/chapter7/data/iris.csv");
// получаем наши строки данных в случайном порядке
Collections.
shuffle
(irisDataset);
for
(String[] iris : irisDataset) {
// первые четыре пункта — параметры (doubles)
double
[] parameters = Arrays.
stream
(iris)
.limit(4)
.mapToDouble(Double::
parseDouble
)
.toArray();
irisParameters.add(parameters);
// последний пункт — это виды
String species = iris[4];
switch
(species) {
case IRIS_SETOSA
:
irisClassifications.add(
new double
[] { 1.0, 0.0, 0.0 });
break
;
case IRIS_VERSICOLOR
:
irisClassifications.add(
new double
[] { 0.0, 1.0, 0.0 });
break
;
default
:
irisClassifications.add(
new double
[] { 0.0, 0.0, 1.0 });
break
;
}
irisSpecies.add(species);
}
Util.
normalizeByFeatureScaling
(irisParameters);
}
irisParameters
.представляет.собой.коллекцию.из.четырех.атрибутов.для.каж-
дого.образца..Применим.эту.коллекцию.для.классификации.каждого.ириса..
irisClassifications
.—.это.фактическая.классификация.любого.образца..В.нашей.
нейронной.сети.будет.три.выходных.нейрона,.каждый.из.которых.соответствует.
одному.из.возможных.видов..Например,.окончательный.набор.выходных.данных.
{0.9,
.
0.3,
.
0.1}
.будет.означать.классификацию.
Iris-setosa
,.поскольку.этому.
виду.соответствует.первый.нейрон.и.он.выдал.наибольшее.число.
Мы.уже.знаем.правильные.ответы.для.обучения,.поэтому.у.каждого.ириса.есть.
готовый.ответ..Для.цветка,.который.должен.иметь.тип.
Iris-setosa
,.запись.
в.
irisClassifications
.будет.иметь.вид.
{1.0,
.
0.0,
.
0.0}
..Эти.значения.станут.ис-
пользоваться.для.расчета.ошибки.после.каждого.этапа.обучения..В.
IrisSpecies
.
хранятся.непосредственные.соответствия.классификаций.для.каждого.цветка.
Do'stlaringiz bilan baham: |