Диабет — это серьезная проблема, с которой в настоящее время сталкиваются многие люди и которая может привести к другим серьезным заболеваниям. В период 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/
Источник: Ашиш Арья