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):