Введение

Для этой двоичной классификации мы можем использовать Python и логистическую регрессию, поскольку у нас есть два класса в наших данных о раке молочной железы, класс 2 и класс 4. Логистическая регрессия использует вероятность для сопоставления признаков с классами, а функция, на которую она опирается, — это сигмовидная функция. Чтобы узнать больше о логистической регрессии, ознакомьтесь с ее документацией на sklearn и в Википедии.

Данные

Чтобы проверить наше понимание логистической регрессии и предсказать класс рака молочной железы, мы можем получить данные о раке молочной железы, доступные на Kaggle (под лицензией «общественное достояние»). Данные состоят из 10 столбцов. Мы выберем все эти функции для предсказания класса. Разделим эти данные на X и Y;

Y = data['Class']

features = ['Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape', 'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin', 'Normal Nucleoli', 'Mitoses']

X = data[features]

где X — признаки, а Y — класс рака молочной железы. Как это будет работать, мы предоставим обученной модели X, а она даст нам Y.

Разделение данных на обучающую и тестовую партии

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

from sklearn.model_selection import train_test_split

(X_train, X_test, Y_train, Y_test) = train_test_split(X, Y, test_size = 0.3, random_state = 1)

Примечание: я также использовал test_size = 0.3 в качестве параметра, что означает, что 30% предоставленных данных будут выбраны для тестирования, а остальные будут назначены для обучения функцией.

Импорт логистической регрессии

Мы можем импортировать классификатор логистической регрессии из sklearn.

from sklearn.linear_model import LogisticRegression

lr = LogisticRegression()

После импорта мы вызываем функцию «подгонки» для наших обучающих данных (X_train и Y_train) для обучения модели.

training = lr.fit(X_train, Y_train)

Затем обученная модель используется для прогнозирования класса (в нашем случае рака груди), передавая X_test в качестве параметра, чтобы получить Y_test.

prediction = training.predict(X_test)

Точность предсказания

Чтобы проверить точность модели, давайте импортируем функцию accuracy_score из sklearn, используя приведенный ниже код и передавая предсказанные значения, хранящиеся в prediction, а также Y_test, чтобы проверить наш прогноз:

from sklearn.metrics import accuracy_score

print(accuracy_score(Y_test, prediction))

0.9609756097560975

Модель дала точность прогнозирования 96%, ее можно дополнительно улучшить путем выбора признаков, что по существу означает уменьшение размерности и выбор только тех признаков, которые действительно способствуют прогнозированию Y.