Inhaltsverzeichnis :-
· 1. Einleitung :-
· 2. Problemstellung:-
· 3. Datensatzbeschreibung: –
· 4. Datenvorverarbeitung: –
· 5. Feature-Engineering:-
· 6. Modellschulung und -tests: –
· 7. Modellbereitstellung:-
In diesem Weblog werden wir ein maschinelles Lernprojekt untersuchen, das darauf abzielt, Diabetes mithilfe eines Datensatzes namens „Diabetes“ vorherzusagen.
Die Vorhersage von Diabetes ist wichtig, da sie uns hilft, Menschen zu identifizieren, bei denen das Risiko besteht, an dieser Krankheit zu erkranken. Durch die genaue Vorhersage von Diabetes können wir frühzeitig Maßnahmen ergreifen, um ihn wirksam zu verhindern oder zu behandeln. Dies kann zu besseren Gesundheitsergebnissen führen und Menschen dabei helfen, gesündere Entscheidungen zu treffen.
In diesem Weblog werden wir den Prozess zum Aufbau eines maschinellen Lernprojekts Schritt für Schritt durchgehen. Wir beginnen mit der Bereinigung und Organisation des „Diabetes“-Datensatzes. Anschließend wählen wir die wichtigsten Faktoren aus, die uns helfen können, Diabetes genau vorherzusagen.
Das Hauptziel dieses Diabetes-Vorhersageprojekts besteht darin, ein maschinelles Lernmodell zu erstellen, das die Wahrscheinlichkeit, dass Personen an Diabetes erkranken, genau vorhersagen kann. Wir werden Daten zu ihren Gesundheits- und Lebensstilfaktoren analysieren, um ein Modell zu erstellen, das das Diabetesrisiko mit großer Genauigkeit abschätzen kann.
Der für das Diabetes Prediction-Projekt verwendete Datensatz stammt von Kaggle, einer beliebten Plattform für Datenwissenschafts- und maschinelles Lernbegeisterte.
Attributinformationen: –
Der Datensatz für dieses Diabetes-Vorhersageprojekt enthält die folgenden Spalten:
- Schwangerschaften: Diese Spalte gibt an, wie oft eine Individual schwanger struggle.
- Glukose: Diese Spalte stellt den im Körper der Individual gemessenen Blutzuckerspiegel (Glukosekonzentration) dar.
- Blutdruck: Diese Spalte stellt den Blutdruck der Individual in Millimeter Quecksilbersäule (mmHg) dar.
- Hautdicke: Diese Spalte stellt die Hautdicke in Millimetern dar.
- Insulin: Diese Spalte stellt den Insulinspiegel im Körper der Individual dar, gemessen in Milli-Internationalen Einheiten professional Milliliter (mu/ml).
- BMI (Physique-Mass-Index): Diese Spalte stellt den Physique-Mass-Index der Individual dar, der ein Maß für das Körperfett basierend auf Größe und Gewicht ist.
- DiabetesPedigree: Diese Spalte stellt die Diabetes-Stammbaumfunktion dar, die einen Hinweis auf den genetischen Einfluss von Diabetes basierend auf der Familienanamnese liefert.
- Alter: Diese Spalte gibt das Alter der Individual in Jahren an.
- Ergebnis: Diese Spalte gibt das Vorliegen oder Fehlen von Diabetes an, wobei 1 das Vorliegen und 0 das Fehlen darstellt.
#Let's begin with importing crucial libraries
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns#learn the information file
information = pd.read_csv('../Dataset/diabetes.csv')
information.head()
Ausgang :-
# Dataset Description
information.describe()
Ausgang :-
# Auf Nullwerte prüfen :-
information.isnull().sum()
Ausgabe: – Es gibt keine Nullwerte
# Wir können nur wenige Daten für die Spalten Glukose, Insulin, Hautdicke, BMI und Blutdruck sehen, die den Wert 0 haben. Das ist doch nicht möglich, oder? Sie können eine schnelle Suche durchführen, um zu sehen, dass es für diese keine 0-Werte geben kann.
Lassen Sie uns damit umgehen. Wir können solche Daten entweder entfernen oder sie einfach durch ihre jeweiligen Mittelwerte ersetzen.
#right here few false impression is there lke BMI cannot be zero, BP cannot be zero, glucose, insuline cannot be zero so lets attempt to repair it
# now changing zero values with the imply of the column
information['BMI'] = information['BMI'].substitute(0,information['BMI'].imply())
information['BloodPressure'] = information['BloodPressure'].substitute(0,information['BloodPressure'].imply())
information['Glucose'] = information['Glucose'].substitute(0,information['Glucose'].imply())
information['Insulin'] = information['Insulin'].substitute(0,information['Insulin'].imply())
information['SkinThickness'] = information['SkinThickness'].substitute(0,information['SkinThickness'].imply())
# Skalierung:-
#segregate the dependent and impartial variable
X = information.drop(columns = ['Outcome'])
y = information['Outcome']# separate dataset into practice and check
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.25,random_state=0)
##commonplace Scaling- Standardization
def scaler_standard(X_train, X_test):
#scaling the information
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.remodel(X_test)
return X_train_scaled, X_test_scaled
X_train_scaled, X_test_scaled = scaler_standard(X_train, X_test)
X_train_scaled
Ausgang :-
# Logistische Regression :-
log_reg = LogisticRegression()log_reg.match(X_train_scaled,y_train)
Ausgang :-
## Hyperparameter Tuning
## GridSearch CV
from sklearn.model_selection import GridSearchCV
import numpy as np
import warnings
warnings.filterwarnings('ignore')
# parameter grid
parameters = {
'penalty' : ['l1','l2'],
'C' : np.logspace(-3,3,7),
'solver' : ['newton-cg', 'lbfgs', 'liblinear'],
}
logreg = LogisticRegression()
clf = GridSearchCV(logreg, # mannequin
param_grid = parameters, # hyperparameters
scoring='accuracy', # metric for scoring
cv=10) # variety of foldsclf.match(X_train_scaled,y_train)
Ausgang :-
y_pred = clf.predict(X_test_scaled)
# Confusion Matrix
conf_mat = confusion_matrix(y_test,y_pred)
conf_mat
Ausgang :-
true_positive = conf_mat[0][0]
false_positive = conf_mat[0][1]
false_negative = conf_mat[1][0]
true_negative = conf_mat[1][1]
Ausgang :-
Precision = true_positive/(true_positive+false_positive)
Precision
Recall = true_positive/(true_positive+false_negative)
Recall
Ausgang :-
F1_Score = 2*(Recall * Precision) / (Recall + Precision)
F1_Score
In meinem Diabetes-Vorhersageprojekt habe ich das logistische Regressionsmodell als einzigen Algorithmus für maschinelles Lernen verwendet. Das logistische Regressionsmodell erreichte eine Genauigkeitsrate von 79,68 % bei der genauen Vorhersage von Diabetes.
Um mit der Bereitstellung fortzufahren, habe ich das trainierte Ridge-Modell in einer Pickle-Datei gespeichert, um dessen Beibehaltung und Kompatibilität auf verschiedenen Plattformen sicherzustellen. Diese Pickle-Datei dient als Container für das trainierte Modell und kapselt dessen Parameter, Struktur und Funktionalität.
#saving the mannequin
import pickle
file = open('../Mannequin/standardScalar.pkl','wb')
pickle.dump(scaler,file)
file.shut()file = open('../Mannequin/modelForPrediction.pkl','wb')
pickle.dump(log_reg,file)
file.shut()
Für die Bereitstellung habe ich mich für Streamlit entschieden, ein benutzerfreundliches Framework, das die Erstellung interaktiver Webanwendungen vereinfacht. Streamlit bietet eine intuitive Plattform, um die Vorhersagekraft des Ridge-Modells auf optisch ansprechende und benutzerfreundliche Weise zu demonstrieren.
Hier ist der Hyperlink zum Zugriff auf den Code für das Diabetes-Vorhersageprojekt: –
Hier ist der Hyperlink, um auf die Stay-Demo des Diabetes-Vorhersageprojekts zuzugreifen:
Vielen Dank, dass Sie sich die Zeit genommen haben, meinen Weblog zu lesen. Ihre Unterstützung und Ihr Engagement bedeuten mir sehr viel. Ich freue mich sehr über Ihr Interesse an meinem Projekt und hoffe, dass es Ihnen wertvolle Erkenntnisse vermittelt hat. Ihre kontinuierliche Leserschaft und Ihr Suggestions inspirieren mich dazu, weiterhin Wissen zu teilen und nach Exzellenz zu streben. Vielen Dank, dass Sie Teil dieser Reise sind.