https://github.com/aidana13/credit-score-analysis
Классификация кредитного скоринга: предобработка, обучение моделей, визуализация и предсказания
https://github.com/aidana13/credit-score-analysis
credit-scoring data-science machine-learning postgresql python
Last synced: 2 months ago
JSON representation
Классификация кредитного скоринга: предобработка, обучение моделей, визуализация и предсказания
- Host: GitHub
- URL: https://github.com/aidana13/credit-score-analysis
- Owner: aidana13
- Created: 2025-07-09T13:53:53.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-07-09T18:07:25.000Z (about 1 year ago)
- Last Synced: 2025-07-10T03:31:01.809Z (about 1 year ago)
- Topics: credit-scoring, data-science, machine-learning, postgresql, python
- Language: Jupyter Notebook
- Homepage:
- Size: 12.1 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Credit Score Classification Project
## 🎯 Цель проекта
Разработка и обучение моделей машинного обучения для прогнозирования кредитного рейтинга клиентов на основе различных финансовых и демографических характеристик.
## 📚 Источник данных
Данные взяты из публичного датасета с платформы Kaggle: Credit Score Classification, который содержит информацию о клиентах — возраст, доход, историю кредитов, задержки платежей и целевой столбец credit_score, определяющий категорию кредитного рейтинга: poor, standard, good.
🔗 Credit Score Classification — https://www.kaggle.com/datasets/parisrohan/credit-score-classification
## 📂 Структура проекта
- `models/` — сохранённые модели и препроцессор:
- `model_logistic.pkl`
- `model_tree.pkl`
- `model_random_forest.pkl`
- `preprocessor.pkl`
- `label_encoder.pkl`
- `results/` — результаты и предсказания:
- `test_predictions_labeled.csv` - результаты предсказания
- `README.md` — описание проекта;
- `RESULTS.md` - результаты проекта;
- `main.ipynb` — исследовательский анализ, предобработка, обучение моделей, визуализации;
- `preprocessing_utils.py` — функция препроцессинга;
- `test.csv` - тестовый датасет;
- `testing.ipynb` — предсказания на тестовых данных;
- `train.csv` - тренировочный датасет.
## 🗃️ Использованные данные
- **Файл**: `train.csv` (обучение), `test.csv` (предсказание)
- **Таблицы в PostgreSQL**:
- `credit_data` — сырые данные
- `credit_data_cleaned` — после `preprocess_credit_data`
- `credit_features_processed` — после трансформаций и pipeline
- `test_data` — сырые данные из `test.csv`
## 📊 Описание колонок
- `age`: возраст
- `occupation`: тип занятости
- `num_credit_card`: количество кредитных карт
- `annual_income`, `monthly_inhand_salary`, `outstanding_debt`: числовые финансовые признаки
- `credit_mix`, `payment_behaviour`, `credit_score`: категориальные признаки
- Дополнительно созданы признаки:
- `credit_utilization_rate`
- `credit_history_months`
## ⚙️ Алгоритмы и модели
- **Модели**:
- `LogisticRegression`
- `DecisionTreeClassifier`
- `RandomForestClassifier`
- **Метрики**:
- Accuracy
- Precision (macro)
- Recall (macro)
- F1-score (macro)
- **Pipeline**:
- Числовые признаки: `SimpleImputer + MinMaxScaler`
- Категориальные признаки: `SimpleImputer + OrdinalEncoder + MinMaxScaler`
- Объединение через `ColumnTransformer`
## 📈 Визуализации
- Доля 'poor' по:
- Возрастным группам
- Количеству кредитных карт
- Типу занятости
- Тепловая карта: профессия × количество кредитных карт
## 💾 Сохранение моделей и объектов
```python
with open("models/preprocessor.pkl", "wb") as f:
pickle.dump(preprocessor, f)
with open("models/model_logistic.pkl", "wb") as f:
pickle.dump(pipe_log, f)
with open("models/model_tree.pkl", "wb") as f:
pickle.dump(pipe_tree, f)
with open("models/model_random_forest.pkl", "wb") as f:
pickle.dump(pipe_rf, f)
with open("models/label_encoder.pkl", "wb") as f:
pickle.dump(label_encoder, f)
```
## Работа с базой данных PostgreSQL
Для удобства хранения, обработки и анализа данных проект использует базу данных PostgreSQL. Было создано несколько таблиц:
| Название таблицы | Описание |
|---------------------------|----------|
| `credit_data` | Сырые необработанные данные из `train.csv` |
| `credit_data_cleaned` | Данные после предварительной обработки (чистка и нормализация) |
| `credit_features_processed` | Данные после feature engineering и масштабирования |
| `test_data` | Сырые данные из `test.csv` |
### 🔌 Подключение к PostgreSQL
Для подключения к базе использовалась библиотека:
```python
from sqlalchemy import create_engine
import psycopg2
```
Пример подключения:
```python
engine = create_engine("postgresql+psycopg2://postgres:qwerty@localhost:5432/postgres")
conn = engine.connect()
```
Пример выгрузки DataFrame в PostgreSQL:
```python
df_clean.to_sql("credit_data_cleaned", engine, if_exists="replace", index=False)
```
Пример загрузки данных из таблицы:
```python
data = pd.read_sql("SELECT * FROM credit_data", conn)
```