Программа Python, которая использует алгоритм машинного обучения для классификации результатов патологии как раковых или нераковых (обновлено)

https://medium.com/@batuhanayrba/python-program-that-uses-a-machine-learning-algorithm-to-classify-pathology-results-as-either-8fb6d29f8371 улучшенная версия примера программы здесь

В этой версии я добавил больше метрик для оценки производительности классификатора.

точность_оценка, отзыв_оценка, f1_score: эти показатели дают нам больше информации о том, насколько хорошо модель работает с точки зрения истинных срабатываний и ложных срабатываний.

путаница_матрица: это таблица, которая используется для определения производительности алгоритма классификации.

roc_auc_score: площадь под кривой ROC (AUC) является мерой того, насколько хорошо модель классификации способна различать положительные и отрицательные классы.

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

Библиотека matplotlib используется для построения кривой ROC.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.metrics import confusion_matrix, roc_auc_score, roc_curve
import matplotlib.pyplot as plt

# Load the dataset
data = pd.read_csv("pathology_results.csv")

# Split the data into features and labels
X = data.drop("cancerous", axis=1)
y = data["cancerous"]

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Train a random forest classifier
clf = RandomForestClassifier()
clf.fit(X_train, y_train)

# Make predictions on the test set
y_pred = clf.predict(X_test)

# Print the accuracy of the model
print("Accuracy:", accuracy_score(y_test, y_pred))

# Print precision, recall, and F1 scores
print("Precision:", precision_score(y_test, y_pred))
print("Recall:", recall_score(y_test, y_pred))
print("F1 Score:", f1_score(y_test, y_pred))

# Print the confusion matrix
print("Confusion matrix:")
print(confusion_matrix(y_test, y_pred))

# Print the area under the ROC curve
y_pred_proba = clf.predict_proba(X_test)[:, 1]
print("AUC:", roc_auc_score(y_test, y_pred_proba))

# Plot the ROC curve
fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba)
plt.plot(fpr, tpr)
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.show()