
Додатки Мизніков
.docx
Додаток А
«Графічні матеріали атестаційної роботи»
ГЮИК. 506413.009
(позначення документу)
Харківський Національний Університет Радіоелектроніки
«ЗАТВЕРДЖУЮ»
Керівник атестаційної роботи, проф. Гребеннік І. В.
ДОСЛІДЖЕННЯ ТА РОЗРОБКА МЕТОДІВ АНАЛІЗУ ДАНИХ
ДЛЯ КЛАСИФІКАЦІЇ ЗАЯВОК
НА ОТРИМАННЯ БАНКІВСЬКИХ КРЕДИТІВ
Графічний матеріал
ЛИСТ ЗАТВЕРДЖЕННЯ
ГЮИК.506413.009 – ЛУ
РОЗРОБИВ:
Ст. гр. СПРм 19-1
Мизніков Р. І.
2020
ЗАТВЕРДЖЕНО
ГЮИК.506413.009 – ЛУ
ДОСЛІДЖЕННЯ ТА РОЗРОБКА МЕТОДІВ АНАЛІЗУ ДАНИХ
ДЛЯ КЛАСИФІКАЦІЇ ЗАЯВОК
НА ОТРИМАННЯ БАНКІВСЬКИХ КРЕДИТІВ
Графічний матеріал
ГЮИК.506413.009 – ЛУ
Аркушів 10
2020
Структура кредитних ризиків
|
|||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
|
Перевір. |
Гребеннік І. В. |
|
|
||
Н. Контр. |
Гребеннік І. В. |
|
|
||
|
|
|
|
СПРм 19-1 |
Лист 1 |
Затверд. |
Гребеннік І.В. |
|
|
СТ |
Листів 1 |
Концептуальна модель СППР
|
|||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
|
Перевір. |
Гребеннік І. В. |
|
|
||
Н. Контр. |
Гребеннік І. В. |
|
|
||
|
|
|
|
СПРм 19-1 |
Лист 1 |
Затверд. |
Гребеннік І.В. |
|
|
СТ |
Листів 1 |
Алгоритм навчання комбінованого методу на основі CART та SVM
|
|||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
|
Перевір. |
Гребеннік І. В. |
|
|
||
Н. Контр. |
Гребеннік І. В. |
|
|
||
|
|
|
|
СПРм 19-1 |
Лист 1 |
Затверд. |
Гребеннік І.В. |
|
|
СТ |
Листів 1 |
Концептуальна діаграма функції «Автоматизація прийняття рішень, щодо видачі банківських кредитів» з точки зору користувача
|
|||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
|
Перевір. |
Гребеннік І. В. |
|
|
||
Н. Контр. |
Гребеннік І. В. |
|
|
||
|
|
|
|
СПРм 19-1 |
Лист 1 |
Затверд. |
Гребеннік І.В. |
|
|
СТ |
Листів 1 |
Діаграма декомпозиції, що представляє функції системи
|
|||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
|
Перевір. |
Гребеннік І. В. |
|
|
||
Н. Контр. |
Гребеннік І. В. |
|
|
||
|
|
|
|
СПРм 19-1 |
Лист 1 |
Затверд. |
Гребеннік І.В. |
|
|
СТ |
Листів 1 |
Діаграма декомпозиції функції «Аналіз даних»
|
|||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
|
Перевір. |
Гребеннік І. В. |
|
|
||
Н. Контр. |
Гребеннік І. В. |
|
|
||
|
|
|
|
СПРм 19-1 |
Лист 1 |
Затверд. |
Гребеннік І.В. |
|
|
СТ |
Листів 1 |
Схема 3-шарової архітектури
|
|||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
|
Перевір. |
Гребеннік І. В. |
|
|
||
Н. Контр. |
Гребеннік І. В. |
|
|
||
|
|
|
|
СПРм 19-1 |
Лист 1 |
Затверд. |
Гребеннік І.В. |
|
|
СТ |
Листів 1 |
Логічне моделювання бази даних системи
|
|||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
|
Перевір. |
Гребеннік І. В. |
|
|
||
Н. Контр. |
Гребеннік І. В. |
|
|
||
|
|
|
|
СПРм 19-1 |
Лист 1 |
Затверд. |
Гребеннік І.В. |
|
|
СТ |
Листів 1 |
Оцінка ознак за допомогою моделі CART
|
|||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
|
Перевір. |
Гребеннік І. В. |
|
|
||
Н. Контр. |
Гребеннік І. В. |
|
|
||
|
|
|
|
СПРм 19-1 |
Лист 1 |
Затверд. |
Гребеннік І.В. |
|
|
СТ |
Листів 1 |
Класифікаційний звіт для комбінованого методу
|
|||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
|
Перевір. |
Гребеннік І. В. |
|
|
||
Н. Контр. |
Гребеннік І. В. |
|
|
||
|
|
|
|
СПРм 19-1 |
Лист 1 |
Затверд. |
Гребеннік І.В. |
|
|
СТ |
Листів 1 |
Додаток В
«Текст програми»
Харківський Національний Університет Радіоелектроніки
«ЗАТВЕРДЖУЮ»
Керівник атестаційної роботи, проф. Гребеннік І. В.
ДОСЛІДЖЕННЯ ТА РОЗРОБКА МЕТОДІВ АНАЛІЗУ ДАНИХ
ДЛЯ КЛАСИФІКАЦІЇ ЗАЯВОК
НА ОТРИМАННЯ БАНКІВСЬКИХ КРЕДИТІВ
Текст програми
ЛИСТ ЗАТВЕРДЖЕННЯ
ГЮИК. 506413.009 – ЛУ
РОЗРОБИВ:
Ст. гр. СПРм 19-1
Мизніков Р. І.
2020
ЗАТВЕРДЖЕНО
ГЮИК.506413.009
ДОСЛІДЖЕННЯ ТА РОЗРОБКА МЕТОДІВ АНАЛІЗУ ДАНИХ
ДЛЯ КЛАСИФІКАЦІЇ ЗАЯВОК
НА ОТРИМАННЯ БАНКІВСЬКИХ КРЕДИТІВ
Текст програми
ГЮИК. 506413.009 – 01 12 01 – ЛУ
Аркушів 8
2020
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
application_record = pd.read_csv('/kaggle/input/credit-card-approval-prediction/application_record.csv')
application_record.head()
application_record.shape
credit_record = pd.read_csv('/kaggle/input/credit-card-approval-prediction/credit_record.csv')
credit_record.head()
credit_record.shape
credit_record['ID'].nunique()
credit_record.shape[0]/credit_record['ID'].nunique()
credit_record.dtypes
credit_record.isnull().sum()
application_record.head().T
application_record.isnull().sum()
application_record.isnull().sum()/application_record.shape[0]
application_record['OCCUPATION_TYPE'].value_counts()
application_record['OCCUPATION_TYPE'].value_counts().sort_values().plot(kind='barh', figsize=(9,12), alpha=0.7)
application_record.drop('OCCUPATION_TYPE', axis=1, inplace=True)
application_record.head().T
credit_record.head()
credit_record.loc[credit_record['STATUS'] == 'X'].shape[0]/credit_record.shape[0]
credit_record['STATUS'].value_counts()/credit_record.shape[0]*100
defaulter_codes= ['0','1','2','3','4','5']
# data labelling. 1 is a defaulter 0 is not
credit_record['Label'] = np.where(credit_record.STATUS.isin(defaulter_codes), 1, 0)
credit_record.head(10)
credit_record.drop('STATUS', axis=1, inplace=True)
# since we do not need this column now
credit_record.head()
print('application_record', application_record.shape)
print('credit_record',credit_record.shape)
record = pd.merge(credit_record, application_record, on='ID', how='left')
record.head()
record.shape
record.sample(5).T
record.isnull().sum()
record.dropna(inplace=True)
record.head()
record.shape
record['Label'].value_counts()
chart=sns.countplot(x='Label', data = record, palette = 'hls')
pd.crosstab(record.CODE_GENDER,record.Label).plot(kind='bar')
plt.title('gender vs Label')
plt.xlabel('gender')
plt.ylabel('Number of Defaulters')
pd.crosstab(record.FLAG_OWN_CAR,record.Label).plot(kind='bar')
plt.title('car ownership vs Label')
plt.xlabel('car owner')
plt.ylabel('Number of Defaulters')
pd.crosstab(record.FLAG_OWN_REALTY,record.Label).plot(kind='bar')
plt.title('property ownership vs Label')
plt.xlabel('property ownder owner')
plt.ylabel('Number of Defaulters')
pd.crosstab(record.CNT_CHILDREN, record.Label).plot(kind='bar', figsize=(12,6))
plt.title('#children Vs Label')
plt.xlabel('number of children')
plt.ylabel('Number of Defaulters')
pd.crosstab(record.NAME_INCOME_TYPE, record.Label).plot(kind='bar', figsize=(12,6))
plt.title('Label by income type')
plt.xlabel('income type')
plt.ylabel('number of defaulters')
pd.crosstab(record.NAME_INCOME_TYPE, record.Label)
pd.crosstab(record.NAME_EDUCATION_TYPE, record.Label).plot(kind='barh', figsize=(9,9))
plt.title('education type vs label')
record.columns
pd.crosstab(record.NAME_FAMILY_STATUS, record.Label).plot(kind='bar', figsize=(9,6))
plt.title('FAMILY_STATUS versus Label')
pd.crosstab(record.NAME_HOUSING_TYPE, record.Label).plot(kind='bar', figsize=(9,6))
plt.title('HOUSING_TYPE versus Label')
pd.crosstab(record.CNT_FAM_MEMBERS,record.Label).plot(kind='bar', figsize=(9,6))
plt.title('Label by number of family')
plt.xlabel('number of family members')
plt.ylabel('number of defaulters')
plt.figure(figsize=(10,6))
record[record['Label']==1]['AMT_INCOME_TOTAL'].hist(alpha=0.7,color='blue',
bins=15,label='Label=1')
record[record['Label']==0]['AMT_INCOME_TOTAL'].hist(alpha=0.3,color='green',
bins=15,label='Label=0')
plt.title('defaulters across various income groups')
plt.legend()
plt.xlabel('AMT_INCOME')
plt.ylabel('Number of Defaulters')
plt.figure(figsize=(12,6))
record[record['Label'] == 1]['DAYS_BIRTH'].hist(alpha=0.7,color='blue', bins=5,label='Label=1')
record[record['Label'] == 0]['DAYS_BIRTH'].hist(alpha=0.3,color='green', bins=5,label='Label=0')
plt.title('days since birth versus number of defaulters')
plt.legend()
plt.xlabel('days since birth')
plt.ylabel('number of defaulters')
plt.figure(figsize=(12,6))
record[record['Label']==1]['DAYS_EMPLOYED'].hist(bins=5, alpha=0.7, color='blue', label='Label=1')
record[record['Label']==0]['DAYS_EMPLOYED'].hist(bins=5, alpha=0.2, color='green', label='Label=0')
plt.legend()
plt.title('days employed versus label')
plt.xlabel('days of employment')
plt.ylabel('number of defaulters')
record['ID'] = record['ID'].astype(str) + '__' + record['MONTHS_BALANCE'].astype(str)
record['DAYS_BIRTH'] = record['DAYS_BIRTH'] - (record['MONTHS_BALANCE'])*30
record['DAYS_EMPLOYED'] = record['DAYS_EMPLOYED'] - (record['MONTHS_BALANCE'])*30
record.head()
plt.figure(figsize=(12,6))
record[record['Label'] == 1]['DAYS_BIRTH'].hist(alpha=0.7,color='blue', bins=5,label='Label=1')
record[record['Label'] == 0]['DAYS_BIRTH'].hist(alpha=0.3,color='green', bins=5,label='Label=0')
plt.title('days since birth versus number of defaulters')
plt.legend()
plt.xlabel('days since birth')
plt.ylabel('number of defaulters')
plt.figure(figsize=(12,6))
record[record['Label'] == 1]['DAYS_BIRTH'].hist(alpha=0.7,color='blue', bins=5,label='Label=1')
record[record['Label'] == 0]['DAYS_BIRTH'].hist(alpha=0.3,color='green', bins=5,label='Label=0')
plt.title('days since birth versus number of defaulters')
plt.legend()
plt.xlabel('days since birth')
plt.ylabel('number of defaulters')
record['INCOME_PER_MEMBER'] = record['AMT_INCOME_TOTAL']/record['CNT_FAM_MEMBERS']
plt.figure(figsize=(12,6))
record[record['Label'] == 1]['INCOME_PER_MEMBER'].hist(alpha=0.7,color='blue', bins=15,label='Label=1')
record[record['Label'] == 0]['INCOME_PER_MEMBER'].hist(alpha=0.3,color='green', bins=15,label='Label=0')
plt.title('income per member versus number of defaulters')
plt.legend()
plt.xlabel('income per member')
plt.ylabel('number of defaulters')
record = pd.get_dummies(record, columns=['CODE_GENDER','FLAG_OWN_CAR','FLAG_OWN_REALTY','NAME_INCOME_TYPE',
'NAME_EDUCATION_TYPE','NAME_FAMILY_STATUS','NAME_HOUSING_TYPE'], drop_first = False)
record.head().T
record.drop('MONTHS_BALANCE', axis=1, inplace=True)
record.head().T
'DAYS_BIRTH', 'DAYS_EMPLOYED', 'FLAG_MOBIL', 'FLAG_WORK_PHONE',
'FLAG_PHONE', 'FLAG_EMAIL', 'CNT_FAM_MEMBERS', 'INCOME_PER_MEMBER',
'CODE_GENDER_F', 'CODE_GENDER_M', 'FLAG_OWN_CAR_N', 'FLAG_OWN_CAR_Y',
'FLAG_OWN_REALTY_N', 'FLAG_OWN_REALTY_Y',
'NAME_INCOME_TYPE_Commercial associate', 'NAME_INCOME_TYPE_Pensioner',
'NAME_INCOME_TYPE_State servant', 'NAME_INCOME_TYPE_Student',
'NAME_INCOME_TYPE_Working', 'NAME_EDUCATION_TYPE_Academic degree',
'NAME_EDUCATION_TYPE_Higher education',
'NAME_EDUCATION_TYPE_Incomplete higher',
'NAME_EDUCATION_TYPE_Lower secondary',
'NAME_EDUCATION_TYPE_Secondary / secondary special',
'NAME_FAMILY_STATUS_Civil marriage', 'NAME_FAMILY_STATUS_Married',
'NAME_FAMILY_STATUS_Separated',
'NAME_FAMILY_STATUS_Single / not married', 'NAME_FAMILY_STATUS_Widow',
'NAME_HOUSING_TYPE_Co-op apartment',
'NAME_HOUSING_TYPE_House / apartment',
'NAME_HOUSING_TYPE_Municipal apartment',
'NAME_HOUSING_TYPE_Office apartment',
'NAME_HOUSING_TYPE_Rented apartment', 'NAME_HOUSING_TYPE_With parents']
record['Label'].value_counts()
record_sample = record.sample(100000)
record_sample['Label'].value_counts()
from sklearn import model_selection
from sklearn.model_selection import train_test_split
train, test = train_test_split(record_sample, test_size = 0.3, random_state=21)
train = train.reset_index(drop=True)
test = test.reset_index(drop=True)
features_train = train[Features]
label_train = train['Label']
features_test = test[Features]
label_test = test['Label']
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier(random_state=0, max_depth=25)
tree.fit(features_train, label_train)
# predict train set
pred_train=tree.predict(features_train)
# predict test set
pred_test=tree.predict(features_test)
from sklearn.metrics import accuracy_score
accuracy_train = accuracy_score(pred_train,label_train)
accuracy_test = accuracy_score(pred_test,label_test)
from sklearn import svm classification_svm = svm.SVC(kernel='linear')
classification_svm.fit(features_train, label_train)
pred_train = classification_svm.predict(features_train)
pred_test=classification_svm.predict(features_test)
from sklearn.metrics import accuracy_score
accuracy_train = accuracy_score(pred_train,label_train)
accuracy_test = accuracy_score(pred_test,label_test)
predict = classification_svm.predict(clientData)
print("Predicted=%s" % (defaulter" if predict == 0 else "non_defaulter"));
№ |
Позначення |
Найменування |
Додаткові Відомості |
|||||
|
|
Текстові документи |
|
|||||
1. |
ГЮИК.506413.009 ПЗ |
Пояснювальна записка |
78 стор. |
|||||
2. |
ГЮИК.506413.009 – 01 12 01 – ЛУ |
Текст програми |
8 стор. |
|||||
|
|
|
|
|||||
|
|
Графічні документи |
|
|||||
3. |
ГЮИК.506413.009 – С10 |
Структура кредитних ризиків |
1 аркуш |
|||||
4. |
|
Концептуальна модель СППР |
1 аркуш |
|||||
5. |
|
Алгоритм навчання комбінованого методу на основі CART та SVM |
1 аркуш |
|||||
6. |
|
Концептуальна діаграма функції «Автоматизація прийняття рішень, щодо видачі банківських кредитів» з точки зору користувача |
1 аркуш |
|||||
7. |
|
Діаграма декомпозиції, що представляє функції системи |
1 аркуш |
|||||
8. |
|
Діаграма декомпозиції функції «Аналіз даних» |
1 аркуш |
|||||
9. |
|
Схема 3-шарової архітектури |
1 аркуш |
|||||
10. |
|
Логічне моделювання бази даних системи |
1 аркуш |
|||||
11. |
|
Оцінка ознак за допомогою моделі CART |
1 аркуш |
|||||
12. |
|
Класифікаційний звіт для комбінованого методу
|
1 аркуш |
|||||
|
|
|
|
|
ГЮИК.506413.009 Д3 |
|||
Змін |
Арк |
№ докум |
Підп. |
Дата |
||||
Розроб. |
Мизніков Р. І. |
|
|
Дослідження та розробка методів аналізу даних для класифікаціїї заявок на отримання банківських кредитів |
Аркуш |
Аркушів |
||
Перевір. |
Гребеннік І. В. |
|
|
1 |
1 |
|||
Н.контр. |
Гребеннік І. В. |
|
|
ХНУРЕ Кафедра СТ |
||||
Затв. |
Гребеннік І. В. |
|
|