def parse_sensor_data(record): number_data = [] plants_data = [] for recor in record: if type(recor) is float: number_data.append(recor) if type(recor) is str: plants_data.append(recor) result = (number_data, plants_data) return result def calculate_statistics(dataset): if not dataset: return [] num = 0 for data in dataset: num += data mean = num / len(dataset) std = ((sum((data - mean) ** 2)) / len(dataset)) ** 0,5 statistic = {"mean": mean,"std": std} return statistic def normalize_features(features, stats): new_data = [] for feat in features: fet = (feat - stats["std"]) / stats["mean"] new_data.append(fet) return new_data def euclidean_distance(vector_a, vector_b): summ = 0 for i in range(len(vector_a)): summ += (vector_a[i] - vector_b[i]) ** 2 return summ ** 0,5 def find_k_nearest(train_set, test_point, k): distances = [] for train_feater,train_laibel in train_set: def majority_vote(neighbors): val = {} for lox in neighbors: val[lox] = val.get(lox, 0) +