Zurück zu allen Blogbeiträgen

Master R Shiny: Ein Trick zum Aufbau wartbarer und skalierbarer Ereignisketten

  • Coding
  • R
02. November 2018
·

Team statworx

Einführung

Ansprechende interaktive Webanwendungen erstellen – eine der vielen Kompetenzen von statworx – ist mit R Shiny ganz einfach. Nur wenige Zeilen Code in einem R-Skript erzeugen die gesamte Logik, die Sie benötigen, um die ganze Magie von Shiny geschehen zu lassen. Es ist so einfach, dass Sie im Handumdrehen eine Hello-World-App erstellen können, einfach so:

library(shiny)
ui <- fluidPage(
 "Hello, World!"
)
server <- function(input, output, session) { }
shinyApp(ui, server)

Heute zeige ich Ihnen eine Möglichkeit, wie Sie die native Shiny-Syntax verwenden können, um Teile Ihres Codes zu modularisieren, sodass Ihre Codebasis leicht wartbar und erweiterbar bleibt. Da ich davon ausgehe, dass Sie bereits mit Shiny vertraut sind, überspringe ich das Intro-Beispiel und gehe direkt zum Hauptteil.

Was sind Ereignisketten?

Eine Ereigniskette beschreibt die Beziehung zwischen Ereignissen und Aufgaben und wie die Ereignisse sich gegenseitig beeinflussen. In einigen Fällen möchten Sie möglicherweise eine App haben, die Benutzereingaben entgegennimmt und Aktionen basierend auf der Art der Eingabe ausführt, wobei möglicherweise unterwegs weitere Informationen angefordert werden. In einem solchen Fall möchten Sie möglicherweise eine Ereigniskette implementieren. Sie könnten sofort anfangen, eine grobe Lösung für Ihr Problem zu entwickeln, riskieren jedoch, schwer verständlichen Code zu erstellen. Darüber hinaus stellen Sie sich vor, dass sich die Anforderungen an Ihre Ereigniskette plötzlich ändern. In diesem Fall ist es wichtig, Ihre Ereigniskette zu modularisieren, damit sie wartbar und anpassbar bleibt.

Beispiel: der Freund-Logger

Lassen Sie mich veranschaulichen, wie man eine modularisierte Ereigniskette aufbaut. Stellen Sie sich vor, Sie sind pedantisch in Bezug auf Zeit und nehmen Termine ernst. Zum Nachteil Ihrer sogenannten „Freunde“ machen Sie keine Ausnahmen. Jedes Mal, wenn ein Freund zu spät kommt, leiden Sie so sehr, dass Sie sich entschieden haben, eine Shiny-App zu verwenden, um die Besuche Ihrer Freunde zu protokollieren, um festzustellen, wie zuverlässig sie sind (wie erbärmlich!). Die Anforderungen an die Nutzung der App sind einfach, wie im folgenden Diagramm gezeigt.

friends

Sie möchten die erwartete Ankunftszeit Ihres Freundes mit seiner tatsächlichen Ankunftszeit vergleichen. Wenn seine Verspätung einen bestimmten Schwellenwert überschreitet (z.B. 5 Minuten), möchten Sie seine Entschuldigung für die Verspätung protokollieren. Wenn Sie seine Entschuldigung als akzeptabel erachten, vernachlässigen Sie seine Sünde (aber führen dennoch Protokoll!). Wenn er pünktlich ist, erhält er einen Bonuspunkt. Wenn er zu spät kommt und seine Entschuldigung nicht akzeptabel ist, erhält er einen Minuspunkt. In jedem Fall protokollieren Sie seinen Besuch (wie tief kann man sinken?). Um die Dinge visueller zu gestalten, hier eine Skizze der Benutzeroberfläche der App einschließlich der Ereignissequenz, wenn ein Freund zu spät kommt.

friends-app-view

Jetzt ist es an der Zeit, die App zu implementieren.

Ereigniskettenarchitektur in R Shiny

Es braucht zwei Zutaten, um Ereignisketten zu implementieren:

  1. Auslöser, die in reactiveValues() gespeichert werden
  2. Beobachter (observeEvent()), die ausgelöst werden und die tatsächlichen Prüfungen und anderen Berechnungen durchführen

Der eigentliche Trick besteht darin, die geeignete Anzahl von observeEvent()s zu finden, sodass jeder Schritt in der Ereigniskette von einem observeEvent abgedeckt wird und daher keine Code-Redundanzen entstehen. Anhand des obigen Beispiels haben wir drei mögliche Ereignissequenzen:

  1. Freund ist zu spät und hat eine gute Entschuldigung
  2. Freund ist zu spät und hat keine gute Entschuldigung
  3. Freund ist nicht zu spät

In allen drei Fällen müssen wir den Besuch eines Freundes protokollieren, daher macht es definitiv Sinn, den Teil der Besuchsprotokollierung in ein observeEvent zu setzen und diesen Beobachter am Ende jeder der oben genannten Sequenzen aufzurufen. Das Zeichnen eines Ereigniskettendiagramms ist hierbei besonders hilfreich, da es eine geeignete architektonische Designentscheidung unterstützt. Ich habe draw.io für diese Aufgabe verwendet.

Für die App habe ich ein reactiveValues-Objekt verwendet, in dem ich alle Auslöser platziert habe (den gesamten App-Code finden Sie auf GitHub).

shinyServer(function(input, output, session) {
 
 # Data
 rv <- reactiveValues(
   ...
   # Triggers
   ask_for_reason = TRUE,
   change_friend_score = TRUE,
   save_visit = TRUE,
   error = FALSE
 )
 ...
})

Ich verwende boolesche Werte für die Auslöser, sodass ich sie nur negieren muss, wenn ich ihren Wert ändern möchte (a <- !a). Die Verwendung von Ganzzahlen würde ebenfalls funktionieren, aber ich finde den Flip-Trick schöner. Betrachten wir den Teil der Kette, in dem die Pünktlichkeit eines Freundes genauer überprüft wird. Das Modul, das die Pünktlichkeit überprüft, liest auch die Daten ein. Abhängig von der Eingabe ruft es entweder das „Ask-for-a-reason“-Modul auf oder ruft direkt das Visit-Logger-Modul auf.

# Submit friend data ----
observeEvent(input(dollar sign)submit, {
 # Collect data
 ...
   
 is_delayed <- difftime(actual_time, expected_time, units = "mins") > input(dollar sign)acceptance
 if (is_delayed) {
   # Friend is delayed --> trigger Ask-for-reason-module
   rv(dollar sign)ask_for_reason <- isolate(!rv(dollar sign)ask_for_reason)
   return()
 }
 # Friend seems punctual --> Add a point to score list :)
 friend_data <- set_data(friend_data, score = 1)
 # Trigger visit logger
 rv(dollar sign)change_friend_score <- isolate(!rv(dollar sign)change_friend_score)
})

Wie Sie sehen, ist es ziemlich intuitiv, die Ereigniskette in Shiny-Code zu übersetzen, sobald Sie sie gezeichnet haben. Wenn der Freund pünktlich ist, setzen wir seine Bewertung auf eins (die Bewertung wird im Visit-Logger-Modul hinzugefügt) und rufen das Visit-Logger-Modul auf, das folgendermaßen aussieht:

# Change friend score ----
observeEvent(rv(dollar sign)change_friend_score, ignoreInit = TRUE, {
 rv(dollar sign)friend_score[friend_score(dollar sign)name == friend_data(dollar sign)name, "score"] <-
   isolate(rv(dollar sign)friend_score[friend_score(dollar sign)name == friend_data(dollar sign)name, "score"]) +
   friend_data(dollar sign)score
 # Make change permanent
 saveRDS(rv(dollar sign)friend_score, "data/friend_score.RDS")
 rv(dollar sign)save_visit <- isolate(!rv(dollar sign)save_visit)
})

Note that the rv(dollar sign)save_visit trigger simply calls an observer that adds another row to the friend visit table and does some cleaning.

Machen wir nun einen kleinen Testlauf mit dem fertigen Produkt. Damit Ihre App funktioniert, müssen Sie natürlich zuerst einen initialen Datensatz mit Ihren Freunden und ihren Anfangsbewertungen erstellen, um zu wissen, wen Sie aufzeichnen. Im Beispiel unten haben wir vier Freunde: John, Emily, Olivia und Ethan. Sie können ihre Bewertungen in der unteren linken Ecke sehen. Vergangene Besuche werden protokolliert und in der oberen rechten Ecke angezeigt.

app-ui

John möchte mit uns abhängen, um brutale Videospiele zu spielen, und aus keinem offensichtlichen Grund haben wir um 9 Uhr morgens einen Termin gemacht. John kommt jedoch 7 (!!!) Minuten zu spät. Genug ist genug. Wir tragen seine Missetat ein.

john-entered

Sie überschreitet den Schwellenwert, sodass wir erwartungsgemäß aufgefordert werden, den Grund einzutragen.

enter-reason

Als wir John um eine Rechtfertigung baten, zuckte er nur mit den Schultern. Wie kann er es wagen?! Das ist ein Minuspunkt…

Unsere Ereigniskette erweitern

Obwohl Sie wegen Johns Unzuverlässigkeit verletzt sind, sind Sie mit Ihrer App ziemlich zufrieden. Doch die Dinge könnten besser sein! Zum Beispiel stürzt Ihre App jedes Mal ab, wenn Sie einen Freund im Namensfeld falsch schreiben, wenn Sie einen Besuch protokollieren. Ihre App könnte einige (zusätzliche) Plausibilitätsprüfungen verwenden. Ein perfekter Anwendungsfall, um die Flexibilität Ihrer Architektur zu zeigen. Nach einigen Monaten der tiefen Reflexion haben Sie ein neues Ereignisablaufdiagramm entwickelt, das sich um falsche Eingaben kümmert.

friends-with-error

Sie haben zwei Stellen identifiziert, an denen die App stabilisiert werden sollte. Erstens möchten Sie einen Fehler an den Benutzer ausgeben, wenn ein Freund nicht existiert (ohne die App zu stoppen). Zweitens erfordern Sie von sich selbst, einen Grund einzugeben (wir wissen alle, wie nachlässig unser zukünftiges Selbst manchmal sein kann).

Mit der bereits gewählten modularisierten Struktur ist es einfach, diese Prüfungen zu integrieren. Sie müssen lediglich einen weiteren Auslöser hinzufügen (rv(dollar sign)error) und einen globalen Container, der die Fehlerinformationen speichert.

# Error handler
error <- reactiveValues(
 title = "",
 message = ""
)

Wenn Sie beispielsweise überprüfen möchten, ob ein eingegebener Name in Ihrer Datenbank existiert, müssen Sie nur ein paar Codezeilen am Anfang des Beobachters hinzufügen, in dem die Pünktlichkeit eines Freundes überprüft wird.

# Submit friend data ----
observeEvent(input(dollar sign)submit, {
 # Friend exists?
 if (!input(dollar sign)name %in% rv(dollar sign)friend_score(dollar sign)name) {
   error(dollar sign)title <- "%s not found" %>% sprintf(., input(dollar sign)name)
   error(dollar sign)message <- h1("404")
   rv(dollar sign)error <- isolate(!rv(dollar sign)error)
   return()
 }
 ...
})

Wenn der Name nicht mit einem Ihrer Freundesnamen übereinstimmt, lösen Sie ein Fehlerbehandlungsmodul aus, dessen einziger Zweck darin besteht, eine Fehlermeldung anzuzeigen:

# Error handling ----
observeEvent(rv(dollar sign)error, ignoreInit = TRUE, {
 showModal(modalDialog(    
   title = error(dollar sign)title,
   error(dollar sign)message,
   footer = actionButton("exit", "Ok", class = "btn-primary")
 ))
})

Das Schöne daran ist, dass Sie dieses Modul verwenden können, um jegliche Fehler zu behandeln, unabhängig davon, welche Plausibilitätsprüfungen sie verursacht haben.

Wenn wir nun zur App zurückkehren und einen Namen eingeben, der nicht existiert (wie Tobias), erhalten wir folgende Fehlermeldung:

friend-not-found

Darüber hinaus erhalten wir eine passiv-aggressive Erinnerung, wenn wir keinen Grund eingeben, wenn wir dazu aufgefordert werden:

no-reason-give

Bitte sehr! Würden Sie mich jetzt entschuldigen? Ich habe einige Besuche zu protokollieren…

Linkedin Logo
Marcel Plaschke
Head of Strategy, Sales & Marketing
Beratung vereinbaren
Zugehörige Leistungen
No items found.

Weitere Blogartikel

  • Coding
  • Data Science
  • Machine Learning
Zero-Shot Textklassifikation
Fabian Müller
17.4.2025
Mehr erfahren
  • Coding
  • Python
Making Of: Eine kostenlose API für COVID-19-Daten
Sebastian Heinz
17.4.2025
Mehr erfahren
  • Coding
  • Python
  • R
R und Python: Mit Reticulate das Beste aus beiden Welten nutzen
Team statworx
17.4.2025
Mehr erfahren
  • Coding
  • Frontend
  • R
Einstieg in Flexdashboards in R
Thomas Alcock
17.4.2025
Mehr erfahren
  • Artificial Intelligence
  • Machine Learning
  • Statistics & Methods
Machine Learning Goes Causal I: Warum Kausalität wichtig ist
Team statworx
17.4.2025
Mehr erfahren
  • Coding
  • Data Visualization
  • R
Koordinatensysteme in ggplot2: Leicht übersehen und ziemlich unterschätzt
Team statworx
17.4.2025
Mehr erfahren
  • Data Engineering
  • R
  • Tutorial
Wie man REST-APIs mit R Plumber erstellt
Stephan Emmer
17.4.2025
Mehr erfahren
  • Coding
  • Frontend
  • R
Dynamische UI Elemente in Shiny – Teil 1
Team statworx
17.4.2025
Mehr erfahren
  • Recaps
  • statworx
statworx 2019 – Ein Jahresrückblick
Sebastian Heinz
17.4.2025
Mehr erfahren
  • Recap
  • statworx
STATWORX auf Tour: Wein, Burgen & Wandern!
Team statworx
17.4.2025
Mehr erfahren
  • Recap
  • statworx
Auf zu neuen Abenteuern: Soft Opening des STATWORX Büros
Team statworx
17.4.2025
Mehr erfahren
  • Recap
  • statworx
STATWORX on Tour: Year-End-Event in Belgien
Sebastian Heinz
17.4.2025
Mehr erfahren
  • Recap
  • statworx
statworx Sommer-Barbecue 2019
Team statworx
17.4.2025
Mehr erfahren
  • Coding
  • R
  • Tutorial
R Code in Sublime Text kompilieren
Team statworx
17.4.2025
Mehr erfahren
  • Coding
  • R
  • Tutorial
Gestalten Sie RStudio nach Ihren Wünschen – Denn Schönheit zählt
Team statworx
17.4.2025
Mehr erfahren
  • Recaps
  • statworx
2020 – Ein Rückblick für mich und GPT-3
Sebastian Heinz
17.4.2025
Mehr erfahren
  • Coding
  • Python
  • Statistics & Methods
Ensemble-Methoden im maschinellen Lernen: Bagging & Subagging
Team statworx
15.4.2025
Mehr erfahren
  • Deep Learning
  • Python
  • Tutorial
Verwendung von Reinforcement Learning zum Spielen von Super Mario Bros auf NES mit TensorFlow
Sebastian Heinz
15.4.2025
Mehr erfahren
  • Coding
  • Machine Learning
  • R
Abstimmung von Random Forest auf Zeitreihendaten
Team statworx
15.4.2025
Mehr erfahren
  • Data Science
  • Statistics & Methods
Modellregularisierung – The Bayesian Way
Thomas Alcock
15.4.2025
Mehr erfahren
  • Coding
  • Python
  • Statistics & Methods
Wie man Gradient Boosting um den Faktor Zwei beschleunigt
Team statworx
15.4.2025
Mehr erfahren
  • Coding
  • Frontend
  • R
Dynamische UI-Elemente in Shiny - Teil 2
Team statworx
15.4.2025
Mehr erfahren
  • Coding
  • R
Warum heißen sie so?! – Ursprung und Bedeutung von R-Paketnamen
Team statworx
15.4.2025
Mehr erfahren
  • Data Engineering
  • Python
Von überall aus auf deinen Spark-Cluster zugreifen – mit Apache Livy
Team statworx
15.4.2025
Mehr erfahren
  • Coding
  • Data Engineering
  • Data Science
Testen von REST-APIs mit Newman
Team statworx
14.4.2025
Mehr erfahren
  • Machine Learning
  • Python
  • R
XGBoost: Entscheidungsbaum vs. Lineares Modell
Fabian Müller
14.4.2025
Mehr erfahren
  • Data Science
  • R
Kombination von Preiselastizitäten und Verkaufsprognosen zur Verkaufssteigerung
Team statworx
14.4.2025
Mehr erfahren
  • Data Science
  • Machine Learning
  • R
Zeitreihenvorhersage mit Random Forest
Team statworx
14.4.2025
Mehr erfahren
  • Data Visualization
  • R
Gemeinschaftsdetektion mit Louvain und Infomap
Team statworx
14.4.2025
Mehr erfahren
  • Machine Learning
Machine Learning Goes Causal II: Der kausale Bruder des Random Forests
Team statworx
11.4.2025
Mehr erfahren
  • Coding
  • Data Visualization
  • R
Animierte Plots mit ggplot und gganimate
Team statworx
8.4.2025
Mehr erfahren
  • Artificial Intelligence
AI Trends Report 2025: Die 16 Trends im Überblick
Tarik Ashry
25.2.2025
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • GenAI
Wie ein CustomGPT Effizienz und Kreativität bei hagebau fördert
Tarik Ashry
15.1.2025
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Human-centered AI
Explainable AI in der Praxis: Mit der richtigen Methode die Black Box öffnen
Jonas Wacker
15.1.2025
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Zurück in die Zukunft: Die Geschichte von Generativer KI (Episode 4)
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Zurück in die Zukunft: Die Geschichte von Generativer KI (Episode 3)
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Zurück in die Zukunft: Die Geschichte von Generativer KI (Episode 2)
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Culture
  • Data Science
  • Deep Learning
  • GenAI
  • Machine Learning
AI Trends Report 2024: statworx COO Fabian Müller zieht eine Zwischenbilanz
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Maßgeschneiderte KI-Chatbots: Hohe Leistung und schnelle Integration vereint
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Zurück in die Zukunft: Die Geschichte von Generativer KI (Episode 1)
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Culture
  • Human-centered AI
KI in der Arbeitswelt: Wie wir Skepsis in Zuversicht verwandeln
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Generative KI als Denkmaschine? Ein medientheoretischer Blick
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Culture
  • Human-centered AI
Wie Führungskräfte die Datenkultur im Unternehmen stärken können
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
Wie wir für Microsoft einen Chatbot mit echtem Wissen entwickelt haben
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Data Visualization
  • Frontend Solution
Warum Frontend-Entwicklung in Data Science-Anwendungen nützlich ist
Jakob Gepp
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • statworx
the byte - Wie wir ein KI-gesteuertes Pop-up Restaurant aufgebaut haben
Sebastian Heinz
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Strategy
Der AI-Act ist da – diese Risikoklassen sollte man kennen
Fabian Müller
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Machine Learning
Genderdarstellung in der KI – Teil 2: Automatisierte Erzeugung genderneutraler Versionen von Gesichtsbildern
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Human-centered AI
  • Statistics & Methods
Die Black-Box entschlüsseln – 3 Explainable AI Methoden zur Vorbereitung auf den AI-Act
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Strategy
Wie der AI-Act die KI-Branche verändern wird: Alles, was man jetzt darüber wissen muss
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Recap
  • statworx
Big Data & AI World 2023 Recap
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Statistics & Methods
Ein erster Einblick in unser Forecasting Recommender Tool
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
Vom Können, Tun und Wollen – Warum Datenkultur und Death Metal einiges miteinander gemeinsam haben
David Schlepps
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning
Wie man KI-generierte Avatare mit Hilfe von Stable Diffusion und Textual Inversion erstellt
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Strategy
Das Geheimnis der Datenkultur entschlüsseln: Diese Faktoren beeinflussen Kultur und Erfolg von Unternehmen
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Machine Learning
GPT-4 – Eine Einordnung der wichtigsten Neuerungen
Mareike Flögel
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Strategy
Knowledge Management mit NLP: So einfach verarbeitet man E-Mails mit KI
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning
3 Anwendungsfälle, wie ChatGPT die Kommunikation in Unternehmen revolutionieren wird
Ingo Marquart
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Machine Learning
  • Tutorial
Paradigmenwechsel in NLP: 5 Ansätze, um bessere Prompts zu schreiben
Team statworx
6.12.2024
Mehr erfahren
  • Recap
  • statworx
Ho ho ho – weihnachtlicher Küchenabriss
Julius Heinz
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning
Real-time Computer Vision: Gesichter erkennen mit einem Roboter
Sarah Sester
6.12.2024
Mehr erfahren
  • Recap
  • statworx
statworx @ UXDX Conf 2022
Markus Berroth
6.12.2024
Mehr erfahren
  • Data Engineering
  • Tutorial
Data Engineering – From Zero to Hero
Thomas Alcock
6.12.2024
Mehr erfahren
  • Recap
  • statworx
statworx @ vuejs.de Conf 2022
Jakob Gepp
6.12.2024
Mehr erfahren
  • Data Engineering
  • Data Science
Überwachung und Protokollierung von Anwendungen und Infrastruktur: Metriken und (Ereignis-)Protokolle
Team statworx
6.12.2024
Mehr erfahren
  • Data Engineering
  • Data Science
  • Python
Wie Du Deinen Code und Deine Abhängigkeiten in Python scannst
Thomas Alcock
6.12.2024
Mehr erfahren
  • Cloud Technology
  • Data Engineering
  • Data Science
Wie du dein Data Science Projekt fit für die Cloud machst
Alexander Broska
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Machine Learning
Geschlechter­darstellung in der KI – Teil 1: Verwendung von StyleGAN zur Erforschung von Geschlechter­vielfalt bei der Bild­bearbeitung
Isabel Hermes
6.12.2024
Mehr erfahren
  • R
Das helfRlein Package – Eine Sammlung nützlicher Funktionen
Team statworx
6.12.2024
Mehr erfahren
  • Data Engineering
  • Data Science
  • Machine Learning
Data-Centric AI: Von Model-First zu Data-First KI-Prozessen
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Human-centered AI
  • Machine Learning
DALL-E 2: Warum Diskriminierung in der KI-Entwicklung nicht ignoriert werden kann
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
statworx AI Principles: Warum wir eigene KI-Prinzipien entwickeln
Team statworx
6.12.2024
Mehr erfahren
  • Recap
  • statworx
5 Highlights vom Digital Festival Zürich 2021
Team statworx
6.12.2024
Mehr erfahren
  • Recap
  • statworx
Unfold 2022 in Bern – by Cleverclip
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Human-centered AI
  • Machine Learning
  • Strategy
Warum Data Science und KI-Initiativen scheitern – eine Reflektion zu nicht-technischen Faktoren
Team statworx
6.12.2024
Mehr erfahren
  • Machine Learning
  • Python
  • Tutorial
Wie man eine Machine Learning API mit Python und Flask erstellt
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Human-centered AI
  • Machine Learning
Vorurteile in KI abbauen
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Cloud Technology
  • Data Science
  • Sustainable AI
Wie du als Data Scientist deinen KI CO₂ Fußabdruck verringerst
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Data Engineering
Automatisierte Erstellung von Docker Containern
Stephan Emmer
6.12.2024
Mehr erfahren
  • Coding
  • Data Visualization
  • R
Anpassung der Zeit- und Datumsskalen in ggplot2
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Machine Learning
5 Typen von Machine Learning Algorithmen (Mit Anwendungsfällen)
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Machine Learning
  • Python
Data Science in Python – Der Einstieg in Machine Learning mit Scikit-Learn
Team statworx
6.12.2024
Mehr erfahren
  • Recap
  • statworx
2022 und die Reise zu statworx next
Sebastian Heinz
6.12.2024
Mehr erfahren
  • Recap
  • statworx
Als Data Science Praktikant bei statworx
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Data Science
  • Python
Wie man mit Call Graph automatisch Projektgrafiken erstellt
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Human-centered AI
  • Machine Learning
  • statworx
Kolumne: Mensch und Maschine Seite an Seite
Sebastian Heinz
6.12.2024
Mehr erfahren
  • Data Engineering
  • Data Science
  • Machine Learning
Machine Learning Modelle bereitstellen und skalieren mit Kubernetes
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Python
  • Tutorial
statworx Cheatsheets – Python Basics Cheatsheet für Data Science
Team statworx
6.12.2024
Mehr erfahren
  • Cloud Technology
  • Data Engineering
  • Machine Learning

3 Szenarien zum Deployment von Machine Learning Workflows mittels MLflow
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • statworx
  • Strategy
STATWORX meets DHBW – Data Science Real-World Use Cases
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Deep Learning
Car Model Classification I: Transfer Learning mit ResNet
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning
Car Model Classification IV: Integration von Deep Learning Modellen mit Dash
Dominique Lade
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning

Car Model Classification III: Erklärbarkeit von Deep Learning Modellen mit Grad-CAM
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Coding
  • Deep Learning
Car Model Classification II: Deployment von TensorFlow-Modellen in Docker mit TensorFlow Serving
Team statworx
6.12.2024
Mehr erfahren
  • AI Act
Potenzial noch nicht ausgeschöpft – Ein Kommentar zur vorgeschlagenen KI-Regulierung der EU
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • statworx
Creaition – Revolutionierung des Designprozesses mit Machine Learning
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Deep Learning
Die 5 wichtigsten Use Cases für Computer Vision
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Machine Learning
Generative Adversarial Networks: Wie mit Neuronalen Netzen Daten generiert werden können
Team statworx
6.12.2024
Mehr erfahren
  • Data Engineering
5 Technologien, die jeder Data Engineer kennen sollte
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning
5 praxisnahe Beispiele für NLP Use Cases
Team statworx
6.12.2024
Mehr erfahren
This is some text inside of a div block.
This is some text inside of a div block.