Ежегодно от малярии умирает около 20 000 индийцев, и сообщается о 15 миллионах случаев заболевания.

Машинное обучение можно использовать в различных приложениях, но одним из наиболее интересных является то, как его можно применить в медицинской сфере.
Компьютеры + Биология = ОГРОМНЫЕ достижения в медицине!

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

Я объясню, как можно воспроизвести эту программу, если вы захотите попробовать ее сами! Не расстраивайтесь, если вы чего-то не понимаете, быстрый поиск в Google вам определенно поможет, но я постараюсь объяснить в меру своих возможностей.

Первое, что нужно понять, тиражируя проект, - это понять, зачем вы это делаете. Малярия стала одной из самых распространенных проблем за последние ~ 150 лет. Новые технологии быстро решают эту проблему, и если вы хотите увидеть реальное применение этих новых технологий, я определенно рекомендую сделать то, что сделал я:

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

Https: //drive.google.com/file/d/1lxVO ...

По этой ссылке вы можете получить изображения, которые мы собираемся идентифицировать:

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

Установка библиотек:

Сначала вам нужно назвать первоклассный «gen_dataset.py», а затем импортировать все необходимые библиотеки. Эти библиотеки включают:

  • cv2, os
  • numpy as np
  • csv
  • шарик

На этом этапе у вас должно получиться что-то вроде этого:

Поскольку все библиотеки импортированы, мы можем продолжить кодирование нашего проекта.

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

Кодирование фактического алгоритма:

label = "Uninfected" --> This part of the code is checking the label of the folder it is going to use to train the data set. 
dirList = glob.glob("cell_images/"+label+"/*.png")--> here is where the list is being created, and in parenthesesis is the folder that its going to use to create the list. 

file = open("csv/dataset2.csv", "a") --> this part of the code is creating the .csv file and the "dataset2" will be the name of the dataset. 

for img_path in dirList:

    im = cv2.imread(img_path)--> this is locating the code 
    im = cv2.GaussianBlur(im, (5,5), 2)--> a gaussian blur is added to easier differentiate the malaria infected cells from those that aren't

    im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)--> this changes the pictures to a gray color, because color is not needed for detecting malaria in cells. 

    ret, thresh = cv2.threshold(im_gray, 127, 255, 0) --> This part creates a threshold on the picture to make it easier to find contours. 
    contours,_ = cv2.findContours(thresh, 1, 2)--> Contours are outlines in the picture that are counted to detect malaria. 

    file.write(label)
    file.write(",")

    for i in range(5):
        try:
            area = cv2.contourArea(contours[i])
            file.write(str(area))
        except:
            file.write("0") 

        file.write(",")

    file.write("\n") --> this piece finished writing the file

Сбор данных:

Этот конкретный фрагмент кода будет запускаться дважды. Один раз, когда набор данных проверяет метку «не заражен», и один раз метку «инфицирован». Для незараженных убедитесь, что вы назвали набор данных = dataset2.csv, а зараженный набор данных = dataset1.csv.

Теперь вы закончили с первой частью, и у вас должно быть два файла: «dataset1.csv» и «dataset2.csv».

Объединение данных:

Просто объедините наборы данных в один набор данных с именем «dataset.csv».

Переходим ко второй части кода:

Импорт библиотек для нового кода:

Вы снова хотите импортировать необходимые библиотеки:

  • панды как pd
  • из sklearn.model_selection import train_test_split
  • из sklearn.ensemble импортировать RandomForestClassifier
  • из показателей импорта sklearn
  • Joblib

Это должно выглядеть примерно так:

Далее у нас есть собственно сам алгоритм:

dataframe = pd.read_csv("csv/dataset.csv")--> This is where the .csv file is read
print(dataframe.head())--> this part of the code is displaying the dataframe 

x = dataframe.drop(["Label"],axis=1)
y = dataframe["Label"]
x_train, x_test, y_train, y_test = --> this is where the dara is trained train_test_split(x,y,test_size=0.2,random_state=42)

model = RandomForestClassifier(n_estimators=100,max_depth=5)
model.fit(x_train,y_train) --> this part classifies the data. 


joblib.dump(model,"rf_malaria_100_5")

predictions = model.predict(x_test)--> First it has to make a predication to test how accurate its going to be. 

print(metrics.classification_report(predictions,y_test)) --> This is the actual test 

Ваш код и набор данных завершены и теперь должны выглядеть следующим образом:

По точности вы можете увидеть, что она составляет 90% и становится более точной в зависимости от типа классификатора, который вы используете, и количества изображений. Как вы знаете, если вы попробуете это, алгоритм должен будет пройти около 27000 изображений. Чем точнее набор данных, тем больше изображений вам понадобится.

Спасибо, что прочитали и, надеюсь, вы вместе со мной следите за этим уроком!

Социальные сети: 👤

Если вам понравилась эта статья или у вас есть какие-либо вопросы или проблемы, свяжитесь со мной по адресу [email protected]

Свяжитесь со мной в Linkedin по адресу https://www.linkedin.com/in/dexter-barahona-723314194

Instagram: DexterBarahona