shuffle(irises)  # Get our lines of data in random order

        for iris in irises:
            parameters = [float(n) for n in iris[:4]]
            iris_parameters.append(parameters)
            species = iris[4]

            if species == 'Iris-setosa':
                iris_classifications.append([1.0, 0.0, 0.0])
            elif species == 'Iris-versicolor':
                iris_classifications.append([0.0, 1.0, 0.0])
            else:
                iris_classifications.append([0.0, 0.0, 1.0])
            iris_species.append(species)

    normalize_by_feature_scaling(iris_parameters)
    iris_network = Network([4, 6, 3], 0.3)

    def iris_interpret_output(output) -> str:
        if max(output) == output[0]:
            return 'Iris-setosa'
        elif max(output) == output[1]:
            return 'Iris-versicolor'
        else:
            return 'Iris-virginica'

    # Train over the first 140 irises in the data set 50 times
    iris_trainers = iris_parameters[:140]
    iris_trainers_corrects = iris_classifications[:140]

    for _ in range(50):
    with open(os.path.join(BASE_DIR, 'wine.csv'), mode='r') as wine_file:
        # quoting参数的意思是不要把数字引起来
        wines: List = list(csv.reader(wine_file, quoting=csv.QUOTE_NONNUMERIC))
        shuffle(wines)
        for wine in wines:
            parameters: List[float] = [float(n) for n in wine[1:14]]
            wine_parameters.append(parameters)
            species: int = int(wine[0])
            if species == 1:
                wine_classifications.append([1.0, 0.0, 0.0])
            elif species == 2:
                wine_classifications.append([0.0, 1.0, 0.0])
            else:
                wine_classifications.append([0.0, 0.0, 1.0])
            wine_species.append(species)
    normalize_by_feature_scaling(wine_parameters)

    wine_network: Network = Network([13, 7, 3], 0.9)

    def wine_interpret_output(output: List[float]) -> int:
        if max(output) == output[0]:
            return 1
        elif max(output) == output[1]:
            return 2
        else:
            return 3

    # 用前150个数据训练10次
    wine_trainers: List[List[float]] = wine_parameters[:150]
    wine_trainers_corrects: List[List[float]] = wine_classifications[:150]
    for _ in range(10):