creditscore / Credit_Score_Classifier.py
roseyshi's picture
Upload 13 files
dcd714c verified
"""i
mport streamlit as st
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from joblib import dump, load
# Load and process data
data = pd.read_csv("C:/Users/lenovo/Downloads/Create_score_model/clean_train.csv")
X = data.drop('Credit_Score', axis=1)
y = data['Credit_Score']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train.head()
# Train the model
rf = RandomForestClassifier(random_state=42)
rf.fit(X_train, y_train)
# Save the model
#dump(rf, 'credit_classifier.joblib', compress=('gzip', 9))
# Streamlit App
# %%writefile scoring_app.py
loaded_model = load(rf)
# Streamlit interface
st.title("Credit Score Prediction App")
# Input fields
feature1 = st.number_input("Outstanding Debt")
feature2 = st.number_input("Credit Mix")
feature3 = st.number_input("Credit History Age (in months)")
feature4 = st.number_input("Monthly Balance")
feature5 = st.number_input("Payment Behaviour")
feature6 = st.number_input("Annual Income")
feature7 = st.number_input("Number of Delayed Payments")
# Define target names
target_names = {0: "Good", 1: "Poor", 2: "Standard"}
if st.button("Predict"):
prediction = loaded_model.predict([[feature1, feature2, feature3, feature4, feature5, feature6, feature7]])
st.write(f"Predicted Class: {target_names[prediction[0]]}")
"""
import streamlit as st
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from joblib import dump, load
@st.cache_resource
def load_and_train_model():
try:
# Load and process data
data = pd.read_csv("clean_train.csv")
except FileNotFoundError:
st.error("Error: The file 'clean_train.csv' was not found. Please upload the file.")
st.stop()
# Splitting data into features and target
X = data.drop('Credit_Score', axis=1)
y = data['Credit_Score']
# Train-test split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train the Random Forest model
rf = RandomForestClassifier(random_state=42)
rf.fit(X_train, y_train)
# Save the trained model to a file
dump(rf, 'credit_classifier.joblib')
return rf
@st.cache_resource
def load_model():
import os
if os.path.exists('credit_classifier.joblib'):
try:
return load('credit_classifier.joblib')
except Exception as e:
st.warning(f"Error loading model: {e}. Retraining the model...")
return load_and_train_model()
else:
st.warning("Model file not found. Training a new model...")
return load_and_train_model()
# Load the trained model
loaded_model = load_model()
# Streamlit App
st.title("Credit Score Prediction App")
st.markdown("Predict the credit score category based on user inputs.")
# Input fields
st.sidebar.header("Enter Feature Values:")
feature1 = st.sidebar.number_input("Outstanding Debt", min_value=0.0, step=100.0)
feature2 = st.sidebar.selectbox("Credit Mix (0=Bad, 1=Good, 2=Excellent)", [0, 1, 2])
feature3 = st.sidebar.number_input("Credit History Age (in months)", min_value=0.0, step=1.0)
feature4 = st.sidebar.number_input("Monthly Balance", min_value=0.0, step=100.0)
feature5 = st.sidebar.number_input("Payment Behaviour", min_value=0.0, step=1.0)
feature6 = st.sidebar.number_input("Annual Income", min_value=0.0, step=1000.0)
feature7 = st.sidebar.number_input("Number of Delayed Payments", min_value=0, step=1)
# Define target names
target_names = {0: "Good", 1: "Poor", 2: "Standard"}
# Predict Button
if st.button("Predict"):
try:
# Prepare the input as a 2D array
inputs = np.array([[feature1, feature2, feature3, feature4, feature5, feature6, feature7]])
# Make prediction
prediction = loaded_model.predict(inputs)
# Display result
st.success(f"Predicted Credit Score: {target_names[prediction[0]]}")
except Exception as e:
st.error(f"An error occurred during prediction: {e}")