58 lines
1.1 KiB
Python
58 lines
1.1 KiB
Python
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) + |