Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| import numpy as np | |
| import pickle | |
| # Load the pre-trained model | |
| with open('abalone_model.pkl', 'rb') as file: | |
| model = pickle.load(file) | |
| # Define the prediction function | |
| def predict_age(sex, length, diameter, height, whole_weight, shucked_weight, viscera_weight, shell_weight): | |
| shell_volume = length * diameter * height | |
| meat_ratio = whole_weight / shell_weight | |
| bmi = whole_weight / (length ** 2) | |
| shell_surface_area = 2 * (length * diameter + length * height + diameter * height) | |
| volume_to_weight_ratio = shell_volume / whole_weight | |
| shell_weight_to_length_ratio = shell_weight / length | |
| meat_weight_to_lenth_ratio = whole_weight / length | |
| features = [[ | |
| sex, | |
| length, | |
| diameter, | |
| height, | |
| whole_weight, | |
| shucked_weight, | |
| viscera_weight, | |
| shell_weight, | |
| shell_volume, | |
| meat_ratio, | |
| bmi, | |
| shell_surface_area, | |
| volume_to_weight_ratio, | |
| shell_weight_to_length_ratio, | |
| meat_weight_to_lenth_ratio | |
| ]] | |
| columns = [ | |
| 'Sex', | |
| 'Length', | |
| 'Diameter', | |
| 'Height', | |
| 'Whole_weight', | |
| 'Shucked_weight', | |
| 'Viscera_weight', | |
| 'Shell_weight', | |
| 'Shell_Volume', | |
| 'Meat_Ratio', | |
| 'BMI', | |
| 'Shell_Surface_Area', | |
| 'Volume_to Weigh_Ratio', | |
| 'Shell_Weight_to Length_Ratio', | |
| 'Mea_Weight_to_Length Ratio' | |
| ] | |
| features_df = pd.DataFrame(data=features, columns=columns) | |
| prediction = model.predict(features_df) | |
| age = prediction[0] + 1.5 | |
| return age | |
| # Streamlit app | |
| st.title('Abalone Age Predictor') | |
| st.write("Enter the physical measurements of the abalone to predict its age.") | |
| # Input fields | |
| sex = st.selectbox('Sex', ['M', 'F', 'I']) | |
| length = st.number_input('Length (mm)', min_value=0.0, value=0.0) | |
| diameter = st.number_input('Diameter (mm)', min_value=0.0, value=0.0) | |
| height = st.number_input('Height (mm)', min_value=0.0, value=0.0) | |
| whole_weight = st.number_input('Whole Weight (grams)', min_value=0.0, value=0.0) | |
| shucked_weight = st.number_input('Shucked Weight (grams)', min_value=0.0, value=0.0) | |
| viscera_weight = st.number_input('Viscera Weight (grams)', min_value=0.0, value=0.0) | |
| shell_weight = st.number_input('Shell Weight (grams)', min_value=0.0, value=0.0) | |
| # Predict button | |
| if st.button('Predict Age'): | |
| try: | |
| # Check for valid input values | |
| if length <= 0 or diameter <= 0 or height <= 0 or whole_weight <= 0 or shucked_weight <= 0 or viscera_weight <= 0 or shell_weight <= 0: | |
| st.error("All input values must be greater than zero.") | |
| else: | |
| age = predict_age(sex, length, diameter, height, whole_weight, shucked_weight, viscera_weight, shell_weight) | |
| st.write(f'The predicted age of the abalone is: {age:.2f} years') | |
| except Exception as e: | |
| st.error(f"An error occurred: {e}") |