Программа 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()