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) input_type = 'csv' output_type = 'label' # Define the function to make predictions using the trained model def predict_placement(Internships, CGPA, HistoryOfBacklogs): # Create a DataFrame from the input data input_df = pd.DataFrame({'Internships': [Internships], 'CGPA': [CGPA], 'HistoryOfBacklogs': [HistoryOfBacklogs]}) # Make a prediction using the trained model prediction = pipeline.predict(input_df)[0] # Return the predicted label return 'Placed' if prediction else 'Not Placed' # Create the Gradio interface iface = gr.Interface(fn=predict_placement, inputs=input_type, outputs=output_type, title='Student Job Placement Predictor', description='Predicts whether a student will be placed in a job or not based on internships, CGPA, and history of backlogs.') # Launch the Gradio interface iface.launch()