Введение
Рак молочной железы является распространенным и серьезным заболеванием, от которого страдают миллионы женщин во всем мире. Раннее обнаружение имеет решающее значение для успешного лечения, и машинное обучение может сыграть жизненно важную роль в прогнозировании его начала. В этом уроке мы рассмотрим пошаговый процесс создания модели машинного обучения, которая может прогнозировать вероятность диагноза рака молочной железы.
Шаг 1. Импортируйте необходимые библиотеки
Прежде чем мы начнем, нам нужно импортировать библиотеки, которые мы будем использовать в этом руководстве. Эти библиотеки включают pandas
для обработки данных, scikit-learn
для построения и оценки нашей модели машинного обучения и matplotlib
для визуализации наших результатов. Мы также импортируем seaborn
для создания более визуально привлекательных графиков и pickle
для сохранения обученной модели.
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import confusion_matrix import seaborn as sns import matplotlib.pyplot as plt import pickle
Шаг 2. Загрузите и изучите данные
Далее нам нужно загрузить наши данные в pandas
DataFrame. Этот набор данных содержит информацию о различных характеристиках пациента, таких как возраст, состояние менопаузы и размер опухоли, а также соответствующий диагноз (т.е. есть ли у пациента рак молочной железы).
После загрузки данных мы можем использовать методы info()
и describe()
, чтобы лучше понять данные. Метод info()
предоставляет информацию о количестве строк, столбцов и типе данных для каждого столбца, а метод describe()
предоставляет сводную статистику для каждого числового столбца.
# Load the data into a pandas DataFrame data = pd.read_csv("data.csv") # Print information about the data print(data.info()) # Print summary statistics for the numeric columns print(data.describe())
Шаг 3: Очистите и предварительно обработайте данные
Прежде чем мы сможем построить нашу модель машинного обучения, нам нужно очистить и предварительно обработать данные. Это включает в себя несколько различных задач, таких как обработка пропущенных значений и преобразование нечисловых столбцов в числовые формы.
Во-первых, мы можем использовать метод isnull()
для идентификации столбцов с отсутствующими значениями. Затем мы можем использовать метод dropna()
для удаления строк с отсутствующими значениями.
Далее нам нужно преобразовать нечисловые столбцы в числовые формы. Это необходимо, поскольку большинство алгоритмов машинного обучения работают только с числовыми данными. Мы можем сделать это с помощью метода get_dummies()
, который преобразует нечисловой столбец в несколько двоичных (то есть 0 или 1) столбцов.
# Check for missing values print(data.isnull().sum()) # Drop rows with missing values data = data.dropna() # Convert non-numeric columns to numeric form data = pd.get_dummies(data, columns=["menopause"])
После обработки пропущенных значений и преобразования нечисловых столбцов в числовую форму нам нужно разделить наши данные на наборы для обучения и тестирования. Это обычная практика в машинном обучении, когда мы используем обучающий набор для построения и обучения нашей модели, а тестовый набор — для оценки производительности обученной модели.
Мы можем использовать функцию train_test_split()
из библиотеки scikit-learn
, чтобы разделить данные на наборы для обучения и тестирования. Эта функция принимает данные и целевой столбец (то есть столбец, который мы хотим предсказать) в качестве входных данных и возвращает четыре набора данных: данные обучения, данные тестирования, метки обучения и метки тестирования.
# Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(data.drop(["Class"], axis=1), data["Class"], test_size=0.3, random_state=0)
Шаг 4. Создайте и обучите модель
Теперь, когда данные очищены и подготовлены, мы можем построить и обучить нашу модель машинного обучения. В этом руководстве мы будем использовать логистическую регрессию, тип линейной модели, который обычно используется для задач бинарной классификации (т. е. задач, в которых целевой столбец имеет только два возможных значения, например 0 и 1).
Логистическая регрессия работает путем подгонки линейной модели к данным, а затем с помощью сигмовидной функции для «сжатия» выходных данных линейной модели в диапазоне от 0 до 1. Эти выходные данные можно интерпретировать как вероятность того, что данные входные данные принадлежат положительный класс (т. е. имеет диагноз рака молочной железы).
Чтобы построить и обучить нашу модель логистической регрессии, нам сначала нужно создать экземпляр класса LogisticRegression
из библиотеки scikit-learn
. Затем мы можем использовать метод fit()
для обучения модели на обучающих данных и метках.
# Create an instance of the LogisticRegression class model = LogisticRegression() # Train the model on the training data and labels model.fit(X_train, y_train)
Шаг 5: Оцените модель
После обучения модели нам необходимо оценить ее производительность на данных тестирования. Это даст нам представление о том, насколько хорошо модель обобщает невидимые данные и является ли она переоснащением (т. е. хорошо работает на данных обучения, но плохо на данных тестирования).
Чтобы оценить модель, мы можем использовать метод predict()
для прогнозирования данных тестирования. Затем мы можем сравнить эти прогнозы с фактическими метками в тестовом наборе, используя матрицу путаницы. Матрица путаницы — это таблица, в которой показано количество истинно положительных, истинно отрицательных, ложноположительных и ложноотрицательных прогнозов, сделанных моделью.
# Use the trained model to make predictions on the testing data y_pred = model.predict(X_test) # Create a confusion matrix cm = confusion_matrix(y_test, y_pred) # Print the confusion matrix print(cm)
Шаг 6. Визуализируйте результаты
Чтобы упростить интерпретацию результатов нашей модели, мы можем визуализировать прогнозы, сделанные моделью, с помощью тепловой карты. Тепловая карта — это графическое представление данных в матрице, где значения представлены в виде цветов. В этом случае мы можем использовать тепловую карту, чтобы визуализировать матрицу путаницы и посмотреть, насколько хорошо работает модель.
Мы можем использовать функцию heatmap()
из библиотеки seaborn
для создания тепловой карты. Эта функция принимает матрицу путаницы в качестве входных данных и создает тепловую карту в качестве выходных данных. Затем мы можем использовать метод show()
для отображения тепловой карты.
# Create a heatmap of the confusion matrix sns.heatmap(cm, annot=True) # Show the heatmap plt.show()
Шаг 7: Сохраните модель
После оценки модели и визуализации результатов мы можем сохранить обученную модель для использования в будущем. Это позволяет нам использовать модель для прогнозирования новых данных без необходимости каждый раз переобучать модель.
Мы можем использовать библиотеку pickle
, чтобы сохранить обученную модель в виде двоичного файла. Библиотека pickle
предоставляет функции для сериализации (т. е. преобразования объекта в поток байтов) и десериализации (т. е. преобразования потока байтов обратно в объект) объектов Python.
Для сохранения модели нам сначала нужно открыть файл для записи в бинарном режиме с помощью функции open()
. Затем мы можем использовать функцию dump()
из библиотеки pickle
для сериализации модели и записи ее в файл.
# Save the trained model with open("model.pkl", "wb") as f: pickle.dump(model, f)
После сохранения модели мы можем использовать функцию load()
из библиотеки pickle
, чтобы десериализовать модель и использовать ее для прогнозирования новых данных.
# Load the trained model with open("model.pkl", "rb") as f: model = pickle.load(f) # Use the model to make predictions on new data y_pred = model.predict(new_data)
Заключение
В этом руководстве мы шаг за шагом прошли процесс создания модели машинного обучения, которая может прогнозировать вероятность диагноза рака молочной железы. Мы импортировали необходимые библиотеки, загрузили и очистили данные, построили и обучили модель логистической регрессии, оценили производительность модели, визуализировали результаты и сохранили обученную модель для будущего использования.
Хотя это руководство только поверхностно описывает возможности машинного обучения, оно должно послужить хорошей основой для более сложных проектов. Если у вас есть какие-либо вопросы или предложения, пожалуйста, оставьте комментарий ниже. И обязательно следите за более продвинутыми уроками!
Будьте в курсе последних новостей и обновлений в сфере творческого ИИ — следите за публикацией Генеративный ИИ.