first commit

This commit is contained in:
fferreira 2025-09-01 21:43:35 +01:00
commit 77eb99cbf5
3 changed files with 87 additions and 0 deletions

31
Model.py Normal file
View File

@ -0,0 +1,31 @@
import pandas as pd
import numpy as np
# Make numpy values easier to read.
np.set_printoptions(precision=3, suppress=True)
import tensorflow as tf
from tensorflow.keras import layers
ecvalve = pd.read_csv(
"/home/fferreira/Documents/teste_ecvalve.csv",
names=[ "frequency", "state", "pressure", "capacity"])
print("Data shape:", ecvalve.shape)
print("Columns:", ecvalve.columns)
ecvalve.head()
ecvalve_features = ecvalve.copy()
ecvalve_labels = ecvalve_features.pop('state')
ecvalve_features = np.array(ecvalve_features)
ecvalve_model = tf.keras.Sequential([
layers.Dense(64, activation='relu', input_shape=(ecvalve_features.shape[1],)),
layers.Dense(32, activation='relu'), # Add another layer
layers.Dense(1, activation='sigmoid') # Sigmoid for binary classification
])
ecvalve_model.compile(loss=tf.keras.losses.BinaryCrossentropy(), optimizer=tf.keras.optimizers.Adam(), metrics=['accuracy'])
ecvalve_model.fit(ecvalve_features, ecvalve_labels, epochs=20)
ecvalve_model.save('EcValve_1.h5')

14
Predict.py Normal file
View File

@ -0,0 +1,14 @@
import tensorflow as tf
import numpy as np
import tensorflow as tf
import numpy as np
model = tf.keras.models.load_model('EcValve_1.h5')
input_data = np.array([[-0.029184604, 7, 60]], dtype=np.float32) # Shape: (1, 3)
prediction = model.predict(input_data)
print("Prediction (probability of leak):", prediction)
print("Leak detected" if prediction[0] > 0.5 else "No leak")

42
graph.py Normal file
View File

@ -0,0 +1,42 @@
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
# Set seaborn style for better visuals
sns.set(style="whitegrid")
# Load CSV
ecvalve = pd.read_csv(
"/home/fferreira/Documents/teste_ecvalve.csv",
names=["frequency", "state", "pressure", "capacity"])
print("Data shape:", ecvalve.shape)
print("Label distribution:", ecvalve['state'].value_counts())
# Group by frequency and get unique states
freq_states = ecvalve.groupby('frequency')['state'].unique().reset_index()
freq_states['category'] = freq_states['state'].apply(
lambda x: '0' if len(x) == 1 and x[0] == 0 else '1' if len(x) == 1 and x[0] == 1 else 'Both'
)
print("\nFrequencies and their state categories:")
print(freq_states[['frequency', 'category']].sort_values('frequency'))
# Create scatter plot
plt.figure(figsize=(10, 6))
sns.scatterplot(
x='frequency',
y='category',
hue='category',
style='category',
data=freq_states,
palette={'0': '#36A2EB', '1': '#FF6384', 'Both': '#FFCE56'},
s=100
)
plt.title('Frequencies by State Category (0 = No Leak, 1 = Leak, Both = Mixed)')
plt.xlabel('Frequency (Hz)')
plt.ylabel('State Category')
plt.savefig('/home/fferreira/Documents/HarvardX/teste/frequency_state_categories.png')
plt.close()
print("Graph saved: /home/fferreira/Documents/HarvardX/teste/frequency_state_categories.png")