import pandas as pd from flask import Flask, request, jsonify from sklearn.compose import ColumnTransformer from sklearn.ensemble import RandomForestClassifier from sklearn.impute import SimpleImputer from sklearn.model_selection import train_test_split from sklearn.pipeline import Pipeline from sklearn.preprocessing import LabelEncoder, StandardScaler from streamlit import * import joblib # Load the CSV data data = pd.read_csv('dataset.csv') # Split the data into features and labels X = data.drop('PlacedOrNot', axis=1) y = data['PlacedOrNot'] # Encode categorical features categorical_features = ['HistoryOfBacklogs'] for feature in categorical_features: encoder = LabelEncoder() X[feature] = encoder.fit_transform(X[feature]) # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Create the pipeline numerical_features = ['Internships', 'CGPA'] numerical_transformer = StandardScaler() categorical_features = [ 'HistoryOfBacklogs'] categorical_transformer = SimpleImputer(strategy='most_frequent') preprocessor = ColumnTransformer( transformers=[ ('num', numerical_transformer, numerical_features), ('cat', categorical_transformer, categorical_features) ]) pipeline = Pipeline([ ('preprocessor', preprocessor), ('classifier', RandomForestClassifier(random_state=42)) ]) # Train the model pipeline.fit(X_train, y_train) # Evaluate the model accuracy = pipeline.score(X_test, y_test) print('Accuracy:', accuracy) joblib.dump(pipeline, 'student_placement_model.joblib') # Define Streamlit API def predict_placement(internships, cgpa, history_of_backlogs, stream): # Load the trained pipeline pipeline = joblib.load('student_placement_model.joblib') # Prepare input data input_data = pd.DataFrame({'internships': [internships], 'cgpa': [cgpa], 'history_of_backlogs': [history_of_backlogs], 'stream': [stream]}) # Make prediction prediction = pipeline.predict(input_data) return prediction[0] # Define Streamlit web app def streamlit_app(): title('Student Placement Prediction') internships = number_input('Number of internships:', min_value=0, max_value=10, step=1) cgpa = number_input('CGPA:', min_value=0.0, max_value=10.0, step=0.1) history_of_backlogs = number_input('Number of history of backlogs:', min_value=0, max_value=10, step=1) stream = selectbox('Stream:', options=['Science', 'Commerce', 'Arts']) prediction = predict_placement(internships, cgpa, history_of_backlogs, stream) if prediction == 1: result = 'Placed' else: result = 'Not Placed' button('Predict Placement') write(f'Result: {result}') if __name__ == '__main__': streamlit_app()