Введение
Для этой двоичной классификации мы можем использовать 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.