Диабет — это серьезная проблема, с которой в настоящее время сталкиваются многие люди и которая может привести к другим серьезным заболеваниям. В период Covid-19 мы также узнали, что состояние пациента с диабетом гораздо более критическое, чем у пациента без диабета. Таким образом, если мы сможем воспользоваться помощью глубокого обучения, чтобы предсказать риск развития диабета, а раннее прогнозирование диабета поможет людям позаботиться о своем здоровье и предотвратить диабет.

Содержание

  • Введение в cAINvas
  • Импорт набора данных
  • Анализ данных и очистка данных
  • Trainset-TestSet Создание
  • Архитектура модели и обучение модели
  • Введение в DeepC
  • Компиляция с DeepC

Введение в cAINvas

cAInvas — это интегрированная платформа разработки для создания интеллектуальных периферийных устройств. Мы можем не только обучать нашу модель глубокого обучения с помощью Tensorflow, Keras или Pytorch, мы также можем скомпилировать нашу модель с помощью периферийного компилятора под названием DeepC, чтобы развернуть нашу рабочую модель на периферийные устройства для производства. Модель прогнозирования диабета, о которой мы собираемся рассказать, также разработана на cAInvas. Все зависимости, которые вам понадобятся для этого проекта, также предустановлены.

cAInvas также предлагает различные другие блокноты для глубокого обучения в своей галерее, которые можно использовать для справки или для получения информации о глубоком обучении. Он также имеет поддержку графического процессора, что делает его лучшим в своем роде.

Импорт набора данных

При работе над cAInvas одной из его ключевых функций является UseCases Gallary. При работе над любым из его UseCases вам не нужно искать данные вручную. Данные находятся в таблице и представлены в формате csv. Мы загрузим набор данных через pandas в качестве фрейма данных в нашей рабочей области.

df = pd.read_csv('https://cainvas-static.s3.amazonaws.com/media/user_data/cainvas-admin/diabetes.csv')

Анализ данных и очистка данных

Чтобы получить информацию о данных, с которыми мы имеем дело, мы будем использовать команду df.info() и получим следующую информацию.

RangeIndex: 2000 entries, 0 to 1999
Data columns (total 9 columns):
 #   Column                    Non-Null Count  Dtype  
---  ------                    --------------  -----  
 0   Pregnancies               2000 non-null   int64  
 1   Glucose                   2000 non-null   int64  
 2   BloodPressure             2000 non-null   int64  
 3   SkinThickness             2000 non-null   int64  
 4   Insulin                   2000 non-null   int64  
 5   BMI                       2000 non-null   float64
 6   DiabetesPedigreeFunction  2000 non-null   float64
 7   Age                       2000 non-null   int64  
 8   Outcome                   2000 non-null   int64  
dtypes: float64(2), int64(7)

Затем мы удалим повторяющиеся данные, заменим ноль на NaN, затем удалим все значения NaN из фрейма данных и снова получим информацию. Для этого мы можем запустить следующие команды;

df.duplicated().sum()
df.drop_duplicates(inplace=True)
columns = ['Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI']

for col in columns:
    df[col].replace(0, np.NaN, inplace=True)
df.dropna(inplace=True)
df.info()

Создание TrainSet-TestSet

Следующим шагом является создание данных поезда и тестовых данных. Для этого мы удалим столбец «результат» из фрейма данных и сохраним его в переменной. Для меток мы будем использовать столбец «результат» и сохранить его в другой переменной. Затем мы воспользуемся раздельным модулем обучения и тестирования scikit, чтобы создать набор данных для обучения и тестирования.

X = df.drop('Outcome', axis=1)
X = StandardScaler().fit_transform(X)
y = df['Outcome']
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.20, random_state=0)

Архитектура модели и обучение модели

Следующим шагом после создания набора данных является передача наших обучающих данных для нашей модели глубокого обучения, чтобы научиться классифицировать пациентов с диабетом и без диабета. Используемая архитектура модели была следующей:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 8)                 72        
_________________________________________________________________
dense_1 (Dense)              (None, 8)                 72        
_________________________________________________________________
dense_2 (Dense)              (None, 4)                 36        
_________________________________________________________________
dense_3 (Dense)              (None, 1)                 5         
=================================================================
Total params: 185
Trainable params: 185
Non-trainable params: 0
_________________________________________________________________

Использовалась функция потерь «binary_crossentropy», а оптимизатор — «Адам». Для обучения модели мы использовали Keras API с тензорным потоком на бэкэнде. Модель показала хорошую производительность с приличной точностью. Вот графики обучения для модели:

Введение в DeepC

Компилятор DeepC и платформа логического вывода предназначены для включения и выполнения нейронных сетей глубокого обучения с упором на функции устройств малого форм-фактора, таких как микроконтроллеры, eFPGA, процессоры и другие встроенные устройства, такие как raspberry-pi, odroid, arduino, SparkFun Edge, risc. -V, мобильные телефоны, x86 и портативные компьютеры.

DeepC также предлагает заблаговременно компилятор, создающий оптимизированный исполняемый файл на основе цепочки инструментов компилятора LLVM, специализированной для глубоких нейронных сетей с ONNX в качестве внешнего интерфейса.

Компиляция с DeepC

Во время обучения модели мы сохранили лучшую модель с помощью контрольной точки модели Keras и сохранили ее в формате H5 с помощью Keras, поскольку он легко сохраняет веса и конфигурацию модели в одном файле.

checkpointer = ModelCheckpoint('diabetes.h5', monitor='val_acc', mode='max', verbose=2, save_best_only=True)
history=model.fit(X_train, y_train, batch_size=16, epochs=350, validation_data=(X_test, y_test), callbacks=[checkpointer])

После сохранения файла в формате H5 мы можем легко скомпилировать нашу модель с помощью компилятора DeepC, который входит в состав платформы cAInvas, чтобы он преобразовывал нашу сохраненную модель в формат, который можно легко развернуть на периферии. устройства. И все это можно сделать очень легко с помощью простой команды.

!deepCC diabetes.h5

И это все, создать модель прогнозирования диабета, которая также готова к развертыванию на периферийных устройствах, очень просто.

Ссылка на блокнот cAINvas: https://cainvas.ai-tech.systems/use-cases/diabetes-prediction-app/

Источник: Ашиш Арья