Hallo! Wir erforschen derzeit die Codegerüche in maschinellen Lernprojekten im Branchenkontext und suchen nach Feedback für
dslinter! Es wäre eine massive Hilfe, wenn Siedslinterfür Ihr maschinelles Lernprojekt in einer Brancheneinstellung ausführen und die generierte TXT -Datei an [email protected] senden könnten. Die Schritte und Befehle finden Sie hier und sollten nicht länger als 10 Minuten dauern. Senden Sie mir gerne eine E -Mail, wenn Sie den Prozess gemeinsam durchlaufen möchten. Der Prozess ist anonym und wir werden alle sensiblen Informationen entfernen, bevor die Ergebnisse veröffentlicht werden. Vielen Dank!
dslinter ist ein Pyndin -Plugin zum Linken von Datenwissenschaft und maschinellem Lerncode. Es soll Entwicklern helfen, die Qualität des maschinellen Lernens zu gewährleisten, und unterstützt die folgenden Python-Bibliotheken: Tensorflow, Pytorch, Scikit-Learn, Pandas, Numpy und Scipy.
dslinter implementiert die Erkennungsregeln für Gerüche, die durch unsere vorherigen Arbeiten identifiziert wurden. Die Gerüche werden aus Papieren, grauen Literatur, Github -Commits und Stapelüberlaufpfosten gesammelt. Die Gerüche werden auch auf einer Website ausgearbeitet :)
Das Beispielprojekt im Demo -Video finden Sie hier.
So installieren Sie aus dem Python -Paketindex:
pip install dslinter
pylint --load-plugins=dslinter <other_options> <path_to_sources>
Oder platzieren Sie eine .pylintrc -Konfigurationsdatei, die die obigen Einstellungen im Ordner enthält, in dem Sie Ihren Befehl ausführen, und führen Sie aus:
pylint <path_to_sources>
[Für Linux/Mac OS -Benutzer]:
pylint
--load-plugins=dslinter
--disable=all
--enable=import,unnecessary-iteration-pandas,unnecessary-iteration-tensorflow,
nan-numpy,chain-indexing-pandas,
merge-parameter-pandas,
dataframe-conversion-pandas,scaler-missing-scikitlearn,hyperparameters-scikitlearn,
hyperparameters-tensorflow,hyperparameters-pytorch,memory-release-tensorflow,
deterministic-pytorch,randomness-control-numpy,randomness-control-scikitlearn,
randomness-control-tensorflow,randomness-control-pytorch,randomness-control-dataloader-pytorch,
missing-mask-tensorflow,missing-mask-pytorch,tensor-array-tensorflow,
forward-pytorch,pipeline-not-used-scikitlearn,
dependent-threshold-scikitlearn,dependent-threshold-tensorflow,dependent-threshold-pytorch
--output-format=text:report.txt,colorized
--reports=y
<path_to_sources>
[Für Windows -Benutzer]:
pylint --load-plugins=dslinter --disable=all --enable=import,unnecessary-iteration-pandas,unnecessary-iteration-tensorflow,nan-numpy,chain-indexing-pandas,merge-parameter-pandas,dataframe-conversion-pandas,scaler-missing-scikitlearn,hyperparameters-scikitlearn,hyperparameters-tensorflow,hyperparameters-pytorch,memory-release-tensorflow,deterministic-pytorch,randomness-control-numpy,randomness-control-scikitlearn,randomness-control-tensorflow,randomness-control-pytorch,randomness-control-dataloader-pytorch,missing-mask-tensorflow,missing-mask-pytorch,tensor-array-tensorflow,forward-pytorch,pipeline-not-used-scikitlearn,dependent-threshold-scikitlearn,dependent-threshold-tensorflow,dependent-threshold-pytorch --output-format=text:report.txt,colorized --reports=y <path_to_sources>
Oder platzieren Sie eine .pylintrc -Konfigurationsdatei, die die obigen Einstellungen im Ordner enthält, in dem Sie Ihren Befehl ausführen, und führen Sie aus:
pylint <path_to_sources>
Beiträge sind willkommen! Wenn Sie einen Beitrag leisten möchten, finden Sie in den folgenden Schritten:
git clone https://github.com/your-github-account/dslinter.git
git submodule update --init --recursive
dslinter verwendet poetry , um Abhängigkeiten zu verwalten, sodass Sie zuerst poetry installieren und dann die Abhängigkeiten installieren müssen. pip install poetry
poetry install
dslinter von Quelle, um es mit: poetry build
pip install ./dist/dslinter-version.tar.gz
poetry run pytest .
C5501 - C5506 | Import | Überprüfung import : Überprüfen Sie, ob Datenwissenschaftsmodule mit den richtigen Namenskonventionen importiert werden.
R5501 | unnötige Verhandlungspandas | Unnötige Iterationsprüfung (PANDAS) : Vektorisierte Lösungen werden gegenüber Iteratoren für Datenrahmen bevorzugt. Wenn Iterationen verwendet werden, während vectorisierte APIs verwendet werden können, wird die Regel verletzt.
W5501 | DataFrame-Operation-Modification-Pandas | Unnötiges Iterations -Checker (PANDAS) : Ein Datenrahmen, in dem Iterated nicht geändert wird. Wenn der Datenrahmen während der Iteration geändert wird, wird die Regel verletzt.
R5502 | unnötiger Tensorflow | Unnötiges Iterationsprüfer (TensorFlow) : Wenn in der Schleife eine Erweiterungszuweisung vorliegt, wird die Regel verletzt. Die Augment -Zuordnung in der Schleife kann durch vektorisierte Lösung in Tensorflow -APIs ersetzt werden.
E5501 | Nan-Numpy | NAN -Gleichstellungsprüfung (Numpy) : Werte können nicht mit NP.Nan verglichen werden, wie np.nan != np.nan .
W5502 | Kettenindexing-Pandas | Kettenindexierungsprüfung (PANDAS) : Die Kettenindexierung wird als schlechte Praxis im Pandas -Code angesehen und sollte vermieden werden. Wenn eine Kettenindexierung für einen Pandas -Datenfreame verwendet wird, wird die Regel verletzt.
R5503 | Datentyp-Pandas | DataType Checker (PANDAS) : Der Datentyp sollte festgelegt werden, wenn ein Datenrahmen aus Daten importiert wird, um sicherzustellen, dass die Datenformate wie erwartet importiert werden. Wenn der Datentyp beim Import nicht festgelegt wird, wird die Regel verletzt.
R5504 | Säulenauswahl-Pandas | Spaltenauswahlprüfung (PANDAS) : Die Spalte sollte ausgewählt werden, nachdem der Datenrahmen importiert wurde, um besser auszuarbeiten, was im Downstream zu erwarten ist.
R5505 | Merge-Parameter-Pandas | Merge Parameter Checker (PANDAS) : Parameter "Wie", "auf" und "validieren" sollte für Zusammenführungsvorgänge festgelegt werden, um die korrekte Verschmelzung zu gewährleisten.
W5503 | in Place-Pandas | In Place Checker (PANDAS) : Operationen auf Datenrahmen geben neue Datenrahmen zurück und sollten einer Variablen zugewiesen werden. Andernfalls geht das Ergebnis verloren und die Regel wird verletzt. Die Operationen aus der Whitelist und mit dem Parametersatz in_place sind ausgeschlossen.
W5504 | DataFrame-Conversion-Pandas | DataFrame Conversion Checker (PANDAS) : Verwenden Sie für die Datenframe -Konvertierung in Pandas -Code .to_Numpy () anstelle von .werten. Wenn im Pandas -Code. Werte verwendet werden, wird die Regel verletzt.
W5505 | Scaler-Missing-Scikitlearn | Scaler Fehlender Checker (Scikitlearn) : Überprüfen Sie, ob der Scaler vor jeder skaliersensitiven Operation in Scikit-Learn-Codes verwendet wird. Zu den sensiblen Operationen sensitiver Operationen umfasst die Hauptkomponentenanalyse (PCA), die Support Vector Machine (SVM), der stochastische Gradientenabzug (SGD), die Mehrschicht-Perzeptron-Klassifikatorin und L1- und L2-Regularisierung.
R5506 | Hyperparameters-Scikitlearn | Hyperparameter-Prüfer (Scikitlearn) : Für Scikit-Learn-Lernalgorithmen sollten einige wichtige Hyperparameter festgelegt werden.
R5507 | Hyperparameter-Tensorflow | Hyperparameter -Prüfer (Tensorflow) : Für den Lernalgorithmus für neuronale Netzwerke sollten einige Imporatnt -Hyperparameter festgelegt werden, z. B. Lernrate, Chargengröße, Impuls und Gewichtsverfall.
R5508 | Hyperparameter-Pytorch | Hyperparameter -Checker (Pytorch) : Für den Lernalgorithmus für neuronale Netzwerke sollten einige Imporatnt -Hyperparameter festgelegt werden, wie z. B. Lernrate, Chargengröße, Impuls und Gewichtsverfall.
W5506 | Memory-Release-TensorFlow | Memory Release Checker (TensorFlow) : Wenn ein neuronales Netzwerk in der Schleife erstellt wird und kein Speichervorgang verwendet wird, wird die Regel verletzt.
W5507 | deterministisch-pytorch | Deterministischer Algorithmus -Nutzungsprüfer (Pytorch) : Wenn US -Algorithmus in einem Pytorch -Programm nicht verwendet wird, wird die Regel verletzt.
W5508 | Zufälligkeitskontroll-Numpy | Randomness Control Checker (Numpy) : Der NP.Seed () sollte verwendet werden, um die Reproduzierbarkeit in einem maschinellen Lernprogramm zu erhalten.
W5509 | Zufälligkeitskontroll-scikitlearn | Randomness Control Checker (Scikitlearn) : Entfernen Sie für reproduzierbare Ergebnisse über die Ausführungen hinweg eine Verwendung von Random_State = Keine in Scikit-Learn-Schätzern.
W5510 | Zufälligkeitskontroll-Tensorflow | Randomness Control Checker (TensorFlow) : Das tf.random.set_seed () sollte verwendet werden, um die Reproduzierbarkeit in einem Tensorflow -Programm zu erhalten.
W5511 | Zufälligkeitskontroll-Pytorch | Randomness Control Checker (Pytorch) : Die Fackel.Manual_seed () sollte verwendet werden, um die Reproduzierbarkeit in einem Tensorflow -Programm zu erhalten.
W5512 | Zufälligkeitskontrolldataloader-Pytorch | Randomness Control Checker (Pytorch-Dataloader) : Der Worker_init_fn () und der Generator sollten in Dataloader eingestellt werden, um die Reproduzierbarkeit zu erhalten. Wenn sie nicht festgelegt sind, wird die Regel verletzt.
W5513 | Fehlende Masken-Tensorflow | Maske Fishing Checker (TensorFlow) : Wenn die Protokollfunktion im Code verwendet wird, prüfen Sie, ob der Argumentwert gültig ist.
W5514 | Fehlende Masken-Pytorch | Maske Fishmor Checker (PyTorch) : Wenn die Protokollfunktion im Code verwendet wird, prüfen Sie, ob der Argumentwert gültig ist.
W5515 | Tensor-Array-TensorFlow | Tensor Array Checker (TensorFlow) : Verwenden Sie tf.tensorarray () zum Anbau von Array in der Schleife.
W5516 | Vorwärts-Pytorch | NET STÜRLICHKURZER (PYTORCH) : Es wird empfohlen, self.net () anstelle von self.net.forward () im Pytorch -Code zu verwenden. Wenn self.net.forward () im Code verwendet wird, wird die Regel verletzt.
W5517 | Gradienten-Clear-Pytorch | Gradient Clear Checker (PyTorch) : Die LUST_FN.BACKWARD () und optimizer.Step () sollten zusammen mit optimizer.zero_grad () verwendet werden. Wenn der .zero_grad() im Code fehlt, wird die Regel verletzt.
W5518 | Pipeline-nicht-verwendet-scikitlearn | Pipeline Checker (Scikitlearn) : Alle Scikit-Learn-Schätzer sollten in Pipelines verwendet werden, um Datenverluste zwischen Trainings- und Testdaten zu verhindern.
W5519 | Abhängige Schwelle-SCIKitlearn | Abhängiger Schwellenwertprüfer (Tensorflow) : Wenn im Code eine Schwellenwert-abhängige Auswertung (z.
W5520 | Abhängige Schwelle-Tensorflow | Abhängiger Schwellenwertprüfer (Pytorch) : Wenn im Code eine Schwellenwertabhängungsbewertung (z. B. F-Score) verwendet wird, prüfen Sie, ob die Metriken der Schwellenwert-innendierten Bewertung (z. B. AUC) auch im Code verwendet werden.
W5521 | Abhängige Schwelle-Pytorch | Abhängiger Schwellenwertprüfer (sciKitlearn) : Wenn im Code eine Schwellenwert-abhängige Auswertung (z.
Der DSLINTER wird von Mark Haakman und Haiyin Zhang während unseres Master -Thesens der Software Engineering Research Group (SERG) in TU Delft und der KI für Fintech Research Lab entwickelt, die von Luís Cruz und Arie Van Deursen beaufsichtigt wurde.
Betreuer: Haiyin Zhang [[email protected]].