Spaces:
Runtime error
Runtime error
# imports | |
# ==================================== | |
import numpy as np | |
import pandas as pd | |
import streamlit as st | |
import streamlit.components.v1 as components | |
import plotly.express as px | |
components.html( | |
""" | |
<a href="https://git.io/typing-svg"><img src="https://readme-typing-svg.herokuapp.com?font=Fira+Code&pause=1000&width=435&lines=Анализ+банкротства+компании" alt="Typing SVG" /></a> | |
<a href="https://git.io/typing-svg"><img src="https://readme-typing-svg.herokuapp.com?font=Fira+Code&pause=1000&width=435&lines=методами+искуственного+интеллекта" alt="Typing SVG" /></a> | |
""" | |
) | |
st.markdown("<h1 style='text-align: center;'>Применение методов машинного обучения в анализе банкротства</h1>", unsafe_allow_html=True) | |
with open("./img.png", "rb") as f: | |
st.image(f.read(), use_column_width=True) | |
st.write( | |
""" | |
# Краткое описание задачи | |
Эффективное и заблаговременное прогнозирование банкротства компаний имеет важно значение для всех участников рынка. По мере развития информационного общества традиционные методы выявления банкротства становятся менее эффективными и более трудозатратными. Поэтому сочетание традиционных методов с современными моделями искусственного интеллекта может быть эффективно применено в современных экономических условиях. | |
Основная цель работы - оценить риск банкротства с помощью нескольких алгоритмов машинного обучения, сравнить результаты их работы, определить наилучшую модель и соответствующий набор признаков для прогнозирования банкротства компаний. | |
""" | |
) | |
st.write("""# Этапы разработки""") | |
#image = Image.open("./stages.jpg") | |
#st.image(image, output_format="auto", use_column_width="auto") | |
with open("./stages.png", "rb") as f: | |
st.image(f.read(), use_column_width=True) | |
with st.expander("Описание пайплайна работы", expanded=True): | |
st.write( | |
""" | |
### Этапы разработки | |
<b><i>1. Поиск и сбор данных:</b></i> | |
Был использован датасет из Тайваньского экономического журнала за период с 1999 по 2009 год. Банкротство компании было определено на основании правил ведения бизнеса Тайваньской фондовой биржи. (<a href="https://www.kaggle.com/datasets/fedesoriano/company-bankruptcy-prediction">Ссылка на данные</a>) | |
<b><i>2. Обработка (препроцессинг):</b></i> | |
Удаление ненужных колонок, one hot encoding категориальных переменных, заполнение пропущенных значений. С использованием библиотек pandas, numpy, seaborn. | |
<b><i>3. Анализ статистических показателей и визуализация:</b></i> | |
Инструменты для этого - с использованием библиотек pandas, seaborn. | |
<b><i>4. Выбор моделей, обучение и валидация модели с ними (без фичей):</b></i> | |
С использованием библиотек scikit-learn, pandas, seaborn. | |
<b><i>5. Выбор моделей, обучение и валидация модели с ними (с фичами):</b></i> | |
С использованием библиотек scikit-learn, pandas, seaborn. | |
< | |
b><i>6. Сравнение результатов:</b></i> | |
Анализ и графическое представление работы алгоритмов. При некорректной работе или плохим результатом проводится п. 4 и п. 5. | |
<b><i>7. Оформление микросервиса Streamlit:</b></i> | |
С использованием библиотеки streamlit. | |
""", | |
unsafe_allow_html=True | |
) | |
with st.expander("Описание пайплайна работы", expanded=True): | |
st.write( | |
""" | |
### Информация о применении методов машинного обучения для бизнес-задач: | |
Прогнозирование финансовой неустойчивости – важный компонент управления компанией. Из-за банкротства акционеры теряют доходы, бизнес, нарушаются цепочки поставок, фискальные органы лишаются налоговых поступлений, госорганы фиксируют снижение экономического роста и повышение социальной напряженности, а работники вынуждены искать новую работу. Поэтому получение ясной картины финансового и имущественного состояния компаний уже много лет является целью специалистов самых разных областей знаний. | |
Компании активно внедряют современные технологии в основную деятельность, автоматизируя большое количество бизнес-процессов. Это позволяет выстраивать, например, электронную экспертизу, c помощью которой возможно оперативно объединять множество экспертов из разных предметных областей для полного охвата рассматриваемой проблемы и принятия коллективного решения. Электронная экспертиза также подразумевает взаимодействие людей с интеллектуальными системами, которые способны строить анализ и прогнозы на основе более широкого пространства переменных. Так, в частности, методы машинного обучения применяются уже в значительном количестве бизнес-задач, в том числе для интеллектуальной аналитики больших данных, которые компания аккумулирует для построения моделей прогнозирования. | |
Однако риски банкротства могут также возникнуть из-за некорректного стратегического менеджмента. Такой менеджмент подразумевает разработку долгосрочных целей и действий, которые позволят достичь более высоких результатов в будущем, например, стать лидирующей компанией в своей отрасли. Разрабатываемые при этом стратегии обычно носят амбициозный характер, поэтому цели компании в таком случае не направлены на пролонгацию сложившейся динамики. Правильный анализ стратегической ситуации также важен для прогнозирования банкротства. Существует множество методов для ее оценки, в том числе и на основе анализа больших данных.<a href="http://infosoc.iis.ru/article/view/509"> Источник<a> | |
""", | |
unsafe_allow_html=True | |
) | |
# INFO | |
# ===================================== | |
st.write( | |
""" | |
# 1. Информация о датасете | |
<b><i>Похожие наборы данных:</i></b> | |
- <a href="https://www.kaggle.com/datasets/fedesoriano/the-boston-houseprice-data">The Boston House-Price Data</a> | |
- <a href="https://www.kaggle.com/datasets/fedesoriano/gender-pay-gap-dataset">Gender Pay Gap Dataset</a> | |
- <a href="https://www.kaggle.com/datasets/fedesoriano/california-housing-prices-data-extra-features">Spanish Wine Quality Dataset</a> | |
<b><i>Про сами данные:</i></b> | |
Данные были получены из Тайваньского экономического журнала за период с 1999 по 2009 год. Банкротство компании было определено на основании правил ведения бизнеса Тайваньской фондовой биржи. | |
<i>P.S. Обновлены имена столбцов и описание, чтобы упростить понимание данных (Y = выходной объект, X = входной объект).</i> | |
""", | |
unsafe_allow_html=True | |
) | |
st.write( | |
""" | |
<b><i>Источник:</i></b> | |
Deron Liang and Chih-Fong Tsai, deronliang '@' gmail.com; cftsai '@' mgt.ncu.edu.tw, National Central University, Taiwan. | |
<a href="https://archive.ics.uci.edu/ml/datasets/Taiwanese+Bankruptcy+Prediction">The data was obtained from UCI Machine Learning Repository.</a> | |
<b><i>Статья:</i></b> | |
<a href="https://www.sciencedirect.com/science/article/abs/pii/S0377221716000412">Тык</a> | |
""", | |
unsafe_allow_html=True | |
) | |
data = pd.read_csv("./dataset.csv", sep=",") | |
st.write(""" ### Таблица с данными: """, data) | |
st.write( | |
""" | |
# 2. Обработка (препроцессинг) | |
""" | |
) | |
# PREPROCESS | |
# ================================== | |
st.write(""" ### Статистика:""") | |
st.code( | |
""" | |
data.describe() | |
""" | |
) | |
st.text(data.describe()) | |
st.code( | |
""" | |
data.shape | |
""" | |
) | |
st.write(""" #### Shape данных (номер строк и столбцов):""") | |
st.text(data.shape) | |
#st.table(data) - лучше не запускать :) | |
data.columns = [i.title().strip() for i in list(data.columns)] | |
row = data.shape[0] | |
col = data.shape[1] | |
null_values = data.isnull().sum().sort_values(ascending=False).head() | |
st.code( | |
""" | |
null_values = data.isnull().sum().sort_values(ascending=False).head() | |
""" | |
) | |
st.write(null_values) | |
st.code( | |
""" | |
data.info() | |
""" | |
) | |
st.text(data.info) | |
st.write("""Поскольку пропущенных значений нет, мы можем перейти к анализу данных.""") | |
# VISUALIZATIONS | |
# ================================== | |
# values = st.sidebar.slider("Target", int(data["Bankrupt?"])) | |
st.write("""Тут должен быть график """) | |
with open("./plot_1.png", "rb") as f: | |
st.image(f.read(), use_column_width=True) | |
st.code( | |
""" | |
values = [0,1] | |
values = list(data[""].count()) | |
f = px.histogram(values, x="Bankrupt?", nbins=15, title="Price distribution") | |
f.update_xaxes(title="Price") | |
f.update_yaxes(title="No. of listings") | |
st.plotly_chart(f) | |
""" | |
) | |
st.write( | |
""" | |
Записи кажутся сильно несбалансированными. Таким образом, необходимо рассмотреть возможность балансировки набора данных с помощью методов повышения или понижения дискретизации. | |
""" | |
) | |
st.write( | |
""" | |
С помощью data.info() мы заметили, что у нас есть большинство данных «float64». Категориальные данные различаются как двоичные 1 и 0, поэтому сохраняются как «int64». Мы разделяем числовые и категориальные данные для анализа нашего набора данных. | |
""" | |
) | |
st.code( | |
""" | |
numeric_features = data.dtypes[data.dtypes != 'int64'].index | |
categorical_features = data.dtypes[data.dtypes == 'int64'].index | |
data[categorical_features].columns.tolist() | |
""", | |
language="python" | |
) |