Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import numpy as np | |
| from sklearn.model_selection import train_test_split | |
| from sklearn.ensemble import RandomForestClassifier | |
| from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score | |
| from sklearn.preprocessing import LabelEncoder | |
| import gradio as gr | |
| # Load dataset | |
| data = pd.read_csv("cpdata.csv") | |
| # Split features and target | |
| y = data["label"] | |
| x = data.drop("label", axis=1) | |
| # Encode target labels | |
| encoder = LabelEncoder() | |
| y_encoded = encoder.fit_transform(y) | |
| # Train-test split | |
| xtrain, xtest, ytrain, ytest = train_test_split(x, y_encoded, test_size=0.2, random_state=0) | |
| # Train model | |
| classifier = RandomForestClassifier(n_estimators=100, random_state=0) | |
| classifier.fit(xtrain, ytrain) | |
| # Evaluate | |
| output = classifier.predict(xtest) | |
| accuracy = accuracy_score(ytest, output) | |
| precision = precision_score(ytest, output, average="weighted") | |
| recall = recall_score(ytest, output, average="weighted") | |
| f1 = f1_score(ytest, output, average="weighted") | |
| print("Model Performance:") | |
| print(f"Accuracy: {accuracy:.2f}") | |
| print(f"Precision: {precision:.2f}") | |
| print(f"Recall: {recall:.2f}") | |
| print(f"F1-score: {f1:.2f}") | |
| # Gradio prediction function | |
| def predict(temp, humi, ph, rain, N, P, K): | |
| new_data = [[temp, humi, ph, rain, N, P, K]] | |
| pred = classifier.predict(new_data) | |
| plant = encoder.inverse_transform(pred)[0] | |
| return f"Predicted plant for given condition: {plant}" | |
| # Gradio UI | |
| demo = gr.Interface( | |
| fn=predict, | |
| inputs=[ | |
| gr.Number(label="Temperature"), | |
| gr.Number(label="Humidity"), | |
| gr.Number(label="pH"), | |
| gr.Number(label="Rainfall"), | |
| gr.Number(label="Nitrogen (N)"), | |
| gr.Number(label="Phosphorus (P)"), | |
| gr.Number(label="Potassium (K)") | |
| ], | |
| outputs=gr.Textbox(label="Prediction"), | |
| title="Crop Prediction App", | |
| description="Enter soil and climate conditions to predict the best plant." | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() |