predictt / placement.py
harshiv's picture
Upload 2 files
6ec2ef9
raw
history blame
2.9 kB
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()