Практический пример логистической регрессии.

Доступ к первой части этой серии можно получить, нажав здесь.

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

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

Предпосылки

  • интернет-соединение
  • Аккаунт Google Диска. Если у вас его нет, создайте учетную запись, прежде чем продолжить
  • Хотя это и не обязательно, базовый опыт программирования может быть полезен.

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

Загрузите данные на свой компьютер.

Нажмите здесь, чтобы загрузить данные из моей учетной записи Google Drive на свой компьютер. Сохраните его как wisconsin_breast_cancer.CSV. Откройте файл с помощью excel или google drive и посмотрите, как устроены наши данные.

Инструменты торговли

  • Google Диск. Мы будем использовать ваш браузер для написания и выполнения кода. Нет необходимости загружать какое-либо программное обеспечение. Все коды будут записаны в файл гугл диска.
  • Google Colabratory – это бесплатный инструмент машинного обучения, предоставляемый Google. Вам нужно добавить CoLab на свой диск Google. Перейдите на свой диск Google, нажмите Создать. В раскрывающемся меню нажмите Еще. Появится еще одно раскрывающееся меню, нажмите подключить больше приложений. В новом окне введите Colab в поле поиска и нажмите Enter. Это добавит CoLab на ваш диск Google. Видео на youtube по настройке Colab можно посмотреть здесь. После того, как вы установили CoLab. Нажмите Новый, Еще, Совместная работа. Это создаст для вас новый блокнот Colab. Мы будем писать наши коды в блокноте Colab.
  • Python — это язык, который мы будем использовать для написания кода. На данный момент вам не нужно больше знать о программировании на Python. Позже, если вы захотите узнать больше о программировании на Python, нажмите здесь.

Лучший способ научиться машинному обучению — делать это. Итак, приступим к кодированию! Текст, выделенный курсивом, является фактическим кодом.

Вы можете скопировать и вставить его в свой блокнот CoLab. Чтобы выполнить каждую строку, нажмите SHIFT + ENTER.

Вместо того, чтобы копировать каждую строку кода, вы также можете сохранить копию готовой записной книжки с Google Диска по адресу https://drive.google.com/file/d/1Ikf0O1zQ8bwu0GnN0tKSHa7YUUsnFl8X/view?usp=sharing.

Кодирование

импортировать панд как pd

Panda — это библиотека для анализа данных на Python. Нам нужно это, чтобы прочитать наш файл базы данных .csv.

из google.colab импортировать файлы
uploaded = files.upload()
for fn в uploaded.keys():
print('Пользователь загрузил файл «{name}» длиной {length} bytes'.format(
name=fn, length=len(uploaded[fn])))

Приведенный выше код откроет диалоговое окно загрузки файла. Используйте его для загрузки файла данных «wisconsin_breast_cancer.CSV» с локального компьютера.

import io
data =pd.read_csv(io.StringIO(uploaded['wisconsin_breast_cancer.csv'].decode('utf-8')))

Эта строка считывает файл нашей базы данных «wisconsin_breast_cancer.csv» и сохраняет содержимое в переменной фрейма данных Pandas «data».

данные.голова()

Отображает первые 5 строк CSV-файла. Всегда рекомендуется проверять содержимое файла после его импорта.

данные.форма

Отображает общее количество строк и столбцов.

данные.isnull().сумма()

Мы хотим убедиться, что нет пропущенных значений. isnull() вернет недостающие значения. Выполнение этого кода покажет, что в столбце «ядра» пропущено 16 значений.

data=data.dropna(как='любой')

Удаляет все строки, в которых есть пропущенные значения.

Далее мы должны разделить набор данных на x и y. x будет содержать функции, которые мы будем использовать для прогнозирования рака. x будет содержать все столбцы переменной dataframe «data», кроме «id» и «class». y будет содержать данные из столбца «класс». «класс» имеет два значения: 1 = рак и 0 = рак отсутствует. Вся эта операция выполняется следующими двумя строками кода.

x=data[['толщина','размер','форма','слипание','одиночное','ядра','хроматин','ядрышки','митоз']]
y=data[ 'класс']

Наша цель — создать модель логистической регрессии для прогнозирования рака молочной железы. Как только мы создадим модель, нам нужно протестировать ее, чтобы оценить точность нашей модели. Для этого мы разделили наши данные на набор данных для обучения и тестирования. Логистическая модель будет создана на основе данных в обучающем наборе. Затем мы используем эту модель для прогнозирования рака в тестовом наборе. Поскольку мы уже знаем о возникновении рака в тестовых данных, предсказанные значения можно сравнить с известными значениями, чтобы оценить производительность модели.

Нам нужна библиотека Sklearn Python для разделения данных. В этой библиотеке также есть функция логистической регрессии.

из sklearn.cross_validation import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)

Сначала мы импортируем функцию train_test_split из раздела cross_validation библиотеки Sklearn. Вторая строка разбивает наши данные x (признаки) и y (рак или нет) на x_train, x_test, y_train и y_test.

Данные разбиваются на обучающую и тестовую группы случайным образом. «random_state=0», оставьте это значение равным нулю, чтобы результаты были воспроизводимыми. Если вы хотите, вы можете изменить его на любое другое число, но это приведет к разделению данных по-другому.

из sklearn.linear_model import LogisticRegression
logreg = LogisticRegression() logreg.fit(x_train,y_train)

Затем мы импортируем модель логистической регрессии из Sklearn. Затем мы назначаем функцию LogisticRegression() переменной модели logreg. После этого мы обучаем модель logreg, используя функцию подгонки. Наша модель обучена, и мы можем использовать ее для прогнозирования рака.

y_pred_class = logreg.predict (x_test)

Мы используем функцию «предсказания» нашей модели «logreg», чтобы делать прогнозы на основе x_test и сохранять их в y_pred_class.

из показателей импорта sklearn
print (metrics.accuracy_score(y_test, y_pred_class))

Функция metrics.accuracy_score используется для прогнозирования точности модели. Эта функция принимает два параметра y_test (реальное возникновение рака) и y_pred_class (прогнозируемое возникновение рака) для расчета точности.

Для получения бонусного материала, т. е. чувствительности, положительной прогностической ценности, кривой ROC, просмотрите полную записную книжку по адресу https://drive.google.com/file/d/1Ikf0O1zQ8bwu0GnN0tKSHa7YUUsnFl8X/view?usp=sharing.