Skip to content

Commit

Permalink
Merge pull request #19 from denBruneBarone/format_corrections
Browse files Browse the repository at this point in the history
REFACTOR: Made small format changes/corrections across several files.
  • Loading branch information
denBruneBarone authored Mar 15, 2024
2 parents 0dae3a4 + 0d04fb2 commit 655ab41
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 35 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,6 @@ All documentation can be found on Overleaf


### Contact Info
Please call 30246017
In order to contact an author, please feel free to send an e-mail or via GitHub.

Available all hours.
2 changes: 1 addition & 1 deletion data_processing/data_cleansing/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@


def read_csv(file_path):
return pd.read_csv(file_path)
return pd.read_csv(file_path)
8 changes: 4 additions & 4 deletions data_processing/energy_consumption/read_energy_consumption.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import pandas as pd
import matplotlib.pyplot as plt

from data_processing.energy_consumption import datapoints_summation, trapeziod_integration
from data_processing.energy_consumption.trapeziod_integration import trapezoidal_integration
from data_processing.energy_consumption import trapeziod_integration


def read_csv():
Expand All @@ -14,14 +12,16 @@ def read_csv():
def plot_connected_graph(data_x, data_y, label, color, linestyle='-'):
plt.plot(data_x, data_y, linestyle, color=color, marker='o', label=label)


def plot_stacked_chart(data_summing, data_integrated):
plt.figure(figsize=(50, 30))

# Plot connected graph for data_summing
plt.plot(list(data_summing.keys()), list(data_summing.values()), color='blue', marker='o', label='Data Summing')

# Plot connected graph for data_integrated
plt.plot(list(data_integrated.keys()), list(data_integrated.values()), color='orange', marker='o', label='Data Integrated')
plt.plot(list(data_integrated.keys()), list(data_integrated.values()), color='orange', marker='o',
label='Data Integrated')

# Stacked chart
for flight in data_summing.keys():
Expand Down
8 changes: 2 additions & 6 deletions data_processing/energy_consumption/trapeziod_integration.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import numpy as np
import pandas as pd
from scipy.interpolate import interp1d


Expand Down Expand Up @@ -39,9 +38,6 @@ def integrate_flight_data(df):
return flight_energy




# TODO: Caasper fix this. Lige nu finder jeg ikke integralet ved interpolation. Jeg laver den udregning, som du brugte i starten.
def add_power_to_df(df):
df['power_consumption'] = df['battery_voltage'] * df['battery_current']
df = df.sort_values(by='time')
Expand All @@ -65,7 +61,8 @@ def integrate_specific_flight_data(data):


def integrate_each_row_specific_flight_data(data):
"""Integrate power consumption for flight 1 between each consecutive pair of rows and add integrated power to DataFrame."""
"""Integrate power consumption for flight 1 between each consecutive pair of rows
and add integrated power to DataFrame."""
flight_data = data[data['flight'] == 1] # Filter data for flight 1
time_points = flight_data['time'].values
power_values = calculate_power(flight_data)
Expand Down Expand Up @@ -98,4 +95,3 @@ def add_cumulative_column(data):
"""Add a cumulative sum column to the flight data."""
data['cumulative'] = data['integrated_power'].cumsum()
return data

22 changes: 10 additions & 12 deletions machine_learning/grid_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,35 @@
from sklearn.model_selection import GridSearchCV, KFold
from sklearn.tree import DecisionTreeRegressor
from machine_learning.config import GridSearchConfig
from machine_learning.prepare_for_training import organize_data
from machine_learning.prepare_for_training import format_data


def grid_search(array_of_df):
# n_splits: number of subsets,
# splits the train-val data into n_splits number of subsets for cross validation
decisionTree = DecisionTreeRegressor()
cv = KFold(n_splits = 5, shuffle = True, random_state = 42)
cv = KFold(n_splits=5, shuffle=True, random_state=42)

grid_search = GridSearchCV(estimator = decisionTree, param_grid = GridSearchConfig.param_grid,
cv = cv, scoring = 'friedman_mse')
grid_search = GridSearchCV(estimator=decisionTree, param_grid=GridSearchConfig.param_grid,
cv=cv, scoring='friedman_mse')

flight_dict_list = organize_data(array_of_df)
flight_dict_list = format_data(array_of_df)

# Extract features and target variable from flight_dict_list
X_train_list = [flight['data'] for flight in flight_dict_list]
x_train_list = [flight['data'] for flight in flight_dict_list]
y_train_list = [flight['power'] for flight in flight_dict_list]

# Convert lists of DataFrames/Series into a single DataFrame and Series
X_train = pd.concat(X_train_list, ignore_index=True)
x_train = pd.concat(x_train_list, ignore_index=True)
y_train = pd.concat(y_train_list, ignore_index=True)

# Perform grid search
grid_search.fit(X_train, y_train)
grid_search.fit(x_train, y_train)

best_params = grid_search.best_params_
best_score = grid_search.best_score_

best_regressor = DecisionTreeRegressor(**best_params)
best_regressor.fit(X_train, y_train)
best_regressor.fit(x_train, y_train)

return best_params, best_score, best_regressor



3 changes: 1 addition & 2 deletions machine_learning/pre_processing.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,11 @@ def extract_flights(df):

def split_data(df, train_size=0.8, random_state=42):
flights_list = extract_flights(df)
train_data, test_data = train_test_split(flights_list, test_size=1-train_size, random_state=random_state)
train_data, test_data = train_test_split(flights_list, test_size=1 - train_size, random_state=random_state)
return train_data, test_data


def pre_process_and_split_data(file_path):
df = load_data(file_path)
train_data, test_data = split_data(df)
return train_data, test_data

2 changes: 0 additions & 2 deletions machine_learning/prepare_for_training.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import numpy as np
from torch.utils.data import Dataset
from data_processing.energy_consumption.trapeziod_integration import add_power_to_df
from sklearn.preprocessing import StandardScaler
import pandas as pd
Expand Down
12 changes: 5 additions & 7 deletions machine_learning/training.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,18 +65,16 @@ def training_and_evaluating(train_data, test_data):
# Calculate RMSE on the original cumulative power for the test set
test_targets_cumulative_power = np.cumsum(test_targets_np[:, 0] * test_targets_np[:, 1] * time_diff)
original_test_rmse = np.sqrt(mean_squared_error(test_targets_cumulative_power, cumulative_power))
# udtryk for forskellen fra cumulative power på ground truth og cumulative power på vores predictions. Jo tættere på nul, jo strammere hul

# Udtryk for forskellen fra cumulative power på ground truth og cumulative power på vores predictions.
# Jo tættere på nul, jo strammere hul
print(f"Original Test Root Mean Squared Error (RMSE) for Cumulative Power: {original_test_rmse}")

# Calculate RMSE on the adjusted cumulative power for the test set
test_rmse = np.sqrt(
mean_squared_error(test_targets_np[:, 0] * test_targets_np[:, 1], power_consumption_predictions))
# Udtryk for hvor præcis vores cumulative power på vores predictions er i forhold til sig selv. Store udsving er dårlige.
# Udtryk for hvor præcis vores cumulative power på vores predictions er i forhold til sig selv.
# Store udsving er dårlige.
print(f"Adjusted Test Root Mean Squared Error (RMSE) for Cumulative Power: {test_rmse}")

print("Training finished somehow!")

# TODO: Caasper her regnet jeg også bare cumulative power consumption på den simple måde.
# Her skal den også være integralet i stedet. Du kan bruge dem samme funktion som du laver i trapezoid_integration.


0 comments on commit 655ab41

Please sign in to comment.