nützlich – chatgpz.de – KI-Tools & Praxiswissen https://chatgpz.de Unabhängige Tests, Anleitungen und Hintergründe zu KI-Tools. Thu, 09 Apr 2026 16:49:50 +0000 de-DE hourly 1 https://wordpress.org/?v=6.4.2 234900186 Alles über die Methodenverkettungsfunktion von Pyjanitor und warum sie nützlich ist https://chatgpz.de/data-analytics/alles-ueber-die-methodenverkettungsfunktion-von-pyjanitor-und-warum-sie-nuetzlich-ist/ https://chatgpz.de/data-analytics/alles-ueber-die-methodenverkettungsfunktion-von-pyjanitor-und-warum-sie-nuetzlich-ist/#respond Thu, 09 Apr 2026 16:49:50 +0000 https://chatgpz.de/data-analytics/alles-ueber-die-methodenverkettungsfunktion-von-pyjanitor-und-warum-sie-nuetzlich-ist/ [ad_1]

Alles über die Methodenverkettungsfunktion von Pyjanitor und warum sie nützlich ist
Bild vom Herausgeber

# Einführung

Die intensive Arbeit mit Daten in Python lehrt uns alle eine wichtige Lektion: Die Datenbereinigung fühlt sich normalerweise nicht so an, als würde man Information Science betreiben, sondern eher wie ein digitaler Hausmeister. Folgendes ist in den meisten Anwendungsfällen erforderlich: Laden eines Datensatzes, Feststellen, dass viele Spaltennamen chaotisch sind, Auffinden fehlender Werte und am Ende viele temporäre Datenvariablen, von denen nur die letzte Ihren endgültigen, sauberen Datensatz enthält.

Pyjanitor bietet einen saubereren Ansatz zur Durchführung dieser Schritte. Diese Bibliothek kann zusammen mit dem Konzept der Methodenverkettung verwendet werden, um ansonsten mühsame Datenbereinigungsprozesse in Pipelines umzuwandeln, die elegant, effizient und lesbar aussehen.

Dieser Artikel zeigt, wie und entmystifiziert die Methodenverkettung im Kontext von Pyjanitor und Datenbereinigung.

# Methodenverkettung verstehen

Methodenverkettung ist im Bereich der Programmierung nichts Neues: Tatsächlich handelt es sich um ein intestine etabliertes Codierungsmuster. Es besteht darin, mehrere Methoden in sequentieller Reihenfolge für ein Objekt aufzurufen: alles in nur einer Anweisung. Auf diese Weise müssen Sie nicht nach jedem Schritt eine Variable neu zuweisen, da jede Methode ein Objekt zurückgibt, das die nächste angehängte Methode usw. aufruft.

Das folgende Beispiel hilft, das Konzept im Kern zu verstehen. Beobachten Sie, wie wir mit „Commonplace“-Python mehrere einfache Änderungen an einem kleinen Textstück (String) vornehmen würden:

textual content = "  Howdy World!  "
textual content = textual content.strip()
textual content = textual content.decrease()
textual content = textual content.substitute("world", "python")

Der resultierende Wert im Textual content ist: "hi there python!".

Mit der Methodenverkettung würde derselbe Prozess nun wie folgt aussehen:

textual content = "  Howdy World!  "
cleaned_text = textual content.strip().decrease().substitute("world", "python")

Beachten Sie, dass der logische Ablauf der angewandten Operationen von hyperlinks nach rechts verläuft: alles in einer einzigen, einheitlichen Gedankenkette!

Wenn Sie es verstanden haben, verstehen Sie jetzt den Begriff der Methodenverkettung perfekt. Lassen Sie uns diese Imaginative and prescient nun auf den Kontext der Datenwissenschaft übertragen Pandas. Eine standardmäßige Datenbereinigung für einen Datenrahmen, die aus mehreren Schritten besteht, sieht normalerweise ohne Verkettung so aus:

# Conventional, step-by-step Pandas strategy
df = pd.read_csv("information.csv")
df.columns = df.columns.str.decrease().str.substitute(' ', '_')
df = df.dropna(subset=('id'))
df = df.drop_duplicates()

Wie wir gleich sehen werden, werden wir durch die Anwendung der Methodenverkettung eine einheitliche Pipeline konstruieren, in der Datenrahmenoperationen mithilfe von Klammern gekapselt werden. Darüber hinaus benötigen wir keine Zwischenvariablen mehr, die nicht endgültige Datenrahmen enthalten, was einen saubereren, fehlerresistenteren Code ermöglicht. Und (wieder einmal) darüber hinaus macht Pyjanitor diesen Prozess reibungslos.

# Eingabe von Pyjanitor: Anwendungsbeispiel

Pandas selbst bietet in gewissem Umfang native Unterstützung für die Methodenverkettung. Einige seiner wesentlichen Funktionen wurden jedoch nicht streng nach diesem Muster entwickelt. Dies ist eine der Hauptmotivationen für die Geburt von Pyjanitor, basierend auf einem quick gleichnamigen R-Paket: janitor.

Im Wesentlichen kann Pyjanitor als Erweiterung für Pandas betrachtet werden, die eine Reihe benutzerdefinierter Datenbereinigungsprozesse auf eine Methodenverkettungs-freundliche Weise bietet. Beispiele für die Namen der API-Methoden (Utility Programming Interface) sind: clean_names(), rename_column(), remove_empty()und so weiter. Seine API verwendet eine Reihe intuitiver Methodennamen, die die Ausdruckskraft des Codes auf ein ganz neues Niveau heben. Darüber hinaus basiert Pyjanitor vollständig auf kostenlosen Open-Supply-Instruments und kann nahtlos in Cloud- und Pocket book-Umgebungen wie Google Colab ausgeführt werden.

Lassen Sie uns anhand eines Beispiels vollständig verstehen, wie die Methodenverkettung in Pyjanitor angewendet wird, in dem wir zunächst einen kleinen, synthetischen Datensatz erstellen, der absichtlich chaotisch aussieht, und ihn in einen Pandas einfügen DataFrame Objekt.

WICHTIG: Um häufige, aber etwas schreckliche Fehler aufgrund von Inkompatibilität zwischen Bibliotheksversionen zu vermeiden, stellen Sie sicher, dass Sie über die neueste verfügbare Model von Pandas und Pyjanitor verfügen, indem Sie verwenden !pip set up --upgrade pyjanitor pandas Erste.

messy_data = {
    'First Identify ': ('Alice', 'Bob', 'Charlie', 'Alice', None),
    '  Last_Name': ('Smith', 'Jones', 'Brown', 'Smith', 'Doe'),
    'Age': (25, np.nan, 30, 25, 40),
    'Date_Of_Birth': ('1998-01-01', '1995-05-05', '1993-08-08', '1998-01-01', '1983-12-12'),
    'Wage ($)': (50000, 60000, 70000, 50000, 80000),
    'Empty_Col': (np.nan, np.nan, np.nan, np.nan, np.nan)
}

df = pd.DataFrame(messy_data)
print("--- Messy Unique Information ---")
print(df.head(), "n")

Jetzt definieren wir eine Pyjanitor-Methodenkette, die eine Reihe von Verarbeitungen sowohl auf Spaltennamen als auch auf die Daten selbst anwendet:

cleaned_df = (
    df
    .rename_column('Wage ($)', 'Wage')  # 1. Manually repair difficult names BEFORE getting them mangled
    .clean_names()                          # 2. Standardize all the pieces (makes it 'wage')
    .remove_empty()                         # 3. Drop empty columns/rows
    .drop_duplicates()                      # 4. Take away duplicate rows
    .fill_empty(                            # 5. Impute lacking values
        column_names=('age'),               # CAUTION: after earlier steps, assume lowercase title: 'age'
        worth=df('Age').median()            # Pull the median from the unique uncooked df
    )
    .assign(                                # 6. Create a brand new column utilizing assign
        salary_k=lambda d: d('wage') / 1000
    )
)

print("--- Cleaned Pyjanitor Information ---")
print(cleaned_df)

Der obige Code ist selbsterklärend. Inline-Kommentare erläutern jede Methode, die in jedem Schritt der Kette aufgerufen wird.

Dies ist die Ausgabe unseres Beispiels, das die ursprünglichen unordentlichen Daten mit der bereinigten Model vergleicht:

--- Messy Unique Information ---
  First Identify    Last_Name   Age Date_Of_Birth  Wage ($)  Empty_Col
0       Alice       Smith  25.0    1998-01-01       50000        NaN
1         Bob       Jones   NaN    1995-05-05       60000        NaN
2     Charlie       Brown  30.0    1993-08-08       70000        NaN
3       Alice       Smith  25.0    1998-01-01       50000        NaN
4         NaN         Doe  40.0    1983-12-12       80000        NaN 

--- Cleaned Pyjanitor Information ---
  first_name_ _last_name   age date_of_birth  wage  salary_k
0       Alice      Smith  25.0    1998-01-01   50000      50.0
1         Bob      Jones  27.5    1995-05-05   60000      60.0
2     Charlie      Brown  30.0    1993-08-08   70000      70.0
4         NaN        Doe  40.0    1983-12-12   80000      80.0

# Zusammenfassung

In diesem Artikel haben wir gelernt, wie man die Pyjanitor-Bibliothek verwendet, um Methodenverkettung anzuwenden und ansonsten mühsame Datenbereinigungsprozesse zu vereinfachen. Dadurch wird der Code sauberer, ausdrucksvoller und – sozusagen – selbstdokumentierend, sodass andere Entwickler oder Ihr zukünftiges Ich die Pipeline lesen und leicht verstehen können, was auf diesem Weg vom Rohdatensatz zum fertigen Datensatz vor sich geht.

Tolle Arbeit!

Iván Palomares Carrascosa ist ein führender Autor, Redner und Berater in den Bereichen KI, maschinelles Lernen, Deep Studying und LLMs. Er schult und leitet andere darin, KI in der realen Welt zu nutzen.

[ad_2]

]]>
https://chatgpz.de/data-analytics/alles-ueber-die-methodenverkettungsfunktion-von-pyjanitor-und-warum-sie-nuetzlich-ist/feed/ 0 17714
Synthetische Daten: Wie menschliches Fachwissen die Skalierung für die KI nützlich macht https://chatgpz.de/artificial-intelligence/synthetische-daten-wie-menschliches-fachwissen-die-skalierung-fuer-die-ki-nuetzlich-macht/ https://chatgpz.de/artificial-intelligence/synthetische-daten-wie-menschliches-fachwissen-die-skalierung-fuer-die-ki-nuetzlich-macht/#respond Thu, 26 Mar 2026 09:17:45 +0000 https://chatgpz.de/artificial-intelligence/synthetische-daten-wie-menschliches-fachwissen-die-skalierung-fuer-die-ki-nuetzlich-macht/ [ad_1]

KI-Groups stehen unter ständigem Druck, schneller voranzukommen. Sie benötigen mehr Daten, mehr Variation und eine breitere Abdeckung aller Randfälle, Sprachen und Formate. Das ist einer der Gründe, warum synthetische Daten so attraktiv geworden sind: Sie helfen Groups dabei, Trainingsdaten in einem Tempo zu erstellen, mit dem die manuelle Erfassung allein oft nicht mithalten kann.

Aber es gibt einen Haken. Das Volumen synthetischer Daten kann schnell ansteigen, doch das Volumen allein garantiert noch keinen Nutzen. Wenn generierte Stichproben unrealistisch, schlecht eingeschränkt oder schwach validiert sind, kann es passieren, dass Groups Rauschen statt Sign skalieren.

Hier kommen überwachte synthetische Daten ins Spiel. Sie kombinieren maschinengenerierte Skalierung mit menschlichem Urteilsvermögen, Überprüfung und Qualitätskontrolle, sodass der Output nicht nur größer, sondern auch besser ist.

Warum synthetische Daten jetzt an Aufmerksamkeit gewinnen

Für viele Groups liegt der Engpass nicht mehr im Modellzugriff. Es ist Datenbereitschaft. Sie benötigen Datensätze, die breit genug sind, um seltene Szenarien abzudecken, strukturiert genug, um eine Feinabstimmung zu unterstützen, und zuverlässig genug, um der Produktion vertrauen zu können.

Synthetische Daten helfen, weil sie Lücken schließen, schwer zu erfassende Szenarien simulieren und die Abhängigkeit von teuren oder datenschutzrelevanten Erfassungsabläufen verringern können. Gleichzeitig sind Governance und Messung immer noch wichtig. Frameworks wie das NIST AI Danger Administration Framework Betonen Sie Vertrauenswürdigkeit, Assessments und risikobewusste Bewertung im gesamten KI-Lebenszyklus (Quelle: NIST, 2024).

Was überwachte synthetische Daten in der Praxis bedeuten

Was überwachte synthetische Daten in der Praxis bedeutenWas überwachte synthetische Daten in der Praxis bedeuten

Grundsätzlich handelt es sich bei synthetischen Daten um künstlich generierte Daten, die die Muster, Strukturen oder Szenarien widerspiegeln sollen, die für das Modelltraining und die Modellbewertung erforderlich sind.

Überwachte synthetische Daten fügen eine weitere Ebene hinzu: Menschen definieren, wie „intestine“ vor, während und nach der Erzeugung aussieht. Sie formulieren Anweisungen, spezifizieren Grenzfälle, überprüfen unsichere Ergebnisse und validieren, ob die Daten tatsächlich die Modellergebnisse verbessern.

Stellen Sie es sich wie einen Flugsimulator mit einem Fluglehrer vor. Der Simulator bietet Skalierung und Wiederholung. Der Ausbilder stellt sicher, dass der Pilot die richtigen Verhaltensweisen lernt, anstatt Fehler zu üben. Synthetische Daten funktionieren auf die gleiche Weise. Era gibt Ihnen Geschwindigkeit. Die menschliche Aufsicht sorgt dafür, dass die Geschwindigkeit in die richtige Richtung gelenkt wird.

Vergleichstabelle – rein synthetische vs. überwachte synthetische vs. herkömmliche, von Menschen markierte Pipelines

Die Tabelle zeigt, warum überwachte synthetische Daten immer attraktiver werden. Dadurch bleibt ein Großteil des Skalenvorteils der Erzeugung erhalten und gleichzeitig verringert sich die Qualitätsabweichung, die durch reine Automatisierung entstehen kann.

Wo rein synthetische Arbeitsabläufe oft unzureichend sind

Das erste Drawback ist der Realismus. Generierte Beispiele sehen vielleicht plausibel aus, vermissen aber die subtilen Muster, die bei der Produktion wichtig sind.

Das zweite Drawback sind Randfälle. Seltene Szenarien sind oft der eigentliche Grund, warum Groups nach synthetischen Daten greifen, doch dieselben Szenarien können leicht zu stark vereinfacht werden, wenn sie nicht von Fachexperten gestaltet werden.

Das dritte Drawback ist die Bewertung. Viele Groups fragen: „Wie viele Daten haben wir generiert?“ bevor Sie fragen: „Haben diese Daten das Modell verbessert?“ Die Arbeit von NIST zu KI-Assessments, -Bewertung, -Validierung und -Verifizierung unterstreicht die Bedeutung messbarer Bewertung und kontextrelevanter Leistungsprüfungen, nicht nur des Ausgabevolumens (Quelle: NIST, 2025). Sehen TEVV-Leitfaden des NIST.

Das Betriebsmodell für hochwertige synthetische Daten

Starke überwachte Programme für synthetische Daten beginnen normalerweise mit dem Aufgabenentwurf, nicht mit der Generierung. Das bedeutet klare Anweisungen, beschriftete Beispiele, Randfalldefinitionen und eine vereinbarte Qualitätsrubrik.

Als nächstes kommen intelligente Validatoren. Diese erkennen vermeidbare Probleme frühzeitig: Duplikate, fehlende Felder, fehlerhafte Antworten, offensichtliche Widersprüche, Kauderwelsch oder Formatierungsfehler. Auf diese Weise verbringen menschliche Gutachter Zeit mit der Beurteilung statt mit der Bereinigung.

Dann kommt die selektive menschliche Überprüfung. Nicht jede Probe benötigt die Aufmerksamkeit eines Experten. Bei mehrdeutigen, risikoreichen oder domänensensiblen Elementen ist dies jedoch in der Regel der Fall. Hier können erfahrene Prüfer die Konsistenz verbessern und stille Datensatzfehler verhindern.

Schließlich schließen die besten Groups den Kreis. Sie nutzen Golddaten, Benchmark-Units und die Leistung nachgelagerter Modelle, um zu sehen, ob die synthetischen Daten tatsächlich helfen. Diese Betriebsdisziplin spiegelt den Schwerpunkt wider, den Shaip legt Annotation von Expertendaten, KI-Datenplattformen mit QualitätskontrolleUnd generative KI-Trainingsdaten-Workflows.

Wie das in der realen Welt aussieht

Wie das in der realen Welt aussiehtWie das in der realen Welt aussieht

Stellen Sie sich ein Crew vor, das einen Help-Assistenten für eine spezialisierte Branche aufbaut. Sie generieren in wenigen Tagen Tausende synthetischer Beispiele und sind mit dem Durchsatz zufrieden. Auf dem Papier sieht der Datensatz vielfältig aus. Beim Testen kämpft das Modell jedoch mit mehrdeutigen Anforderungen, ungewöhnlicher Terminologie und Ausnahmen von der Regel.

Warum? Weil die generierten Daten den gemeinsamen Pfad erfassten, nicht jedoch die chaotischen Randfälle der realen Welt.

Anschließend gestaltet das Crew den Arbeitsablauf neu. Sie verschärfen die Anweisungen, fügen Beispiele für Grenzfälle hinzu, führen Validatoren für häufige Formatierungsfehler ein und senden unsichere Muster an Area-Prüfer. Sie erstellen außerdem einen kleinen Golddatensatz zum Vergleich, bevor jede neue Cost akzeptiert wird.

Das Ergebnis sind nicht nur mehr Daten. Es handelt sich um zuverlässigere Daten.

Ein Entscheidungsrahmen für den verantwortungsvollen Umgang mit synthetischen Daten

Verwenden Sie synthetische Daten, wenn Sie Skalierbarkeit, datenschutzbewusste Erweiterung, Abdeckung seltener Szenarien oder eine schnellere Iteration benötigen.

Ergänzen Sie es mit realen Daten, wenn die Aufgabe stark von authentischem Verhalten, Dwell-Verteilungen oder schwer zu simulierenden Nuancen abhängt.

Stellen Sie vor der Skalierung drei praktische Fragen:

  1. Welcher Fehler würde am meisten schaden, wenn diese Daten falsch wären?
  2. Welche Proben können automatisch validiert werden und welche erfordern menschliches Urteilsvermögen?
  3. Welcher Benchmark wird beweisen, dass die neuen Daten das Modell verbessert haben?

Wenn es auf diese Fragen keine klaren Antworten gibt, ist die Pipeline wahrscheinlich noch nicht skalierbar.

Abschluss

Synthetische Daten sind am wertvollsten, wenn sie als Qualitätssystem und nicht als Content material Manufacturing facility behandelt werden. Die maschinelle Erzeugung kann Geschwindigkeit und Umfang bieten, aber menschliches Fachwissen ist es, das diese Größenordnung in etwas operativ Nützliches verwandelt.

Die Groups, die den größten Nutzen aus synthetischen Daten ziehen, sind nicht diejenigen, die die meisten Zeilen generieren. Sie sind diejenigen, die die stärksten Überprüfungsschleifen, Validatoren, Benchmarks und Entscheidungsregeln darauf aufbauen.

[ad_2]

]]>
https://chatgpz.de/artificial-intelligence/synthetische-daten-wie-menschliches-fachwissen-die-skalierung-fuer-die-ki-nuetzlich-macht/feed/ 0 17360
So halten Sie MCPs in Agentenpipelines nützlich https://chatgpz.de/machine-learning/so-halten-sie-mcps-in-agentenpipelines-nuetzlich/ https://chatgpz.de/machine-learning/so-halten-sie-mcps-in-agentenpipelines-nuetzlich/#respond Sat, 03 Jan 2026 13:17:32 +0000 https://chatgpz.de/machine-learning/so-halten-sie-mcps-in-agentenpipelines-nuetzlich/ [ad_1]

Einführung

Anwendungen, die auf Giant Language Fashions (LLMs) basieren, erfordern die Integration mit externen Diensten, beispielsweise die Integration mit Google Kalender zum Einrichten von Besprechungen oder die Integration mit PostgreSQL, um Zugriff auf einige Daten zu erhalten.

Funktionsaufruf

Ursprünglich wurden diese Arten von Integrationen durch Funktionsaufrufe implementiert: Wir erstellten einige spezielle Funktionen, die von einem LLM über bestimmte Token aufgerufen werden können (LLM generierte einige spezielle Token zum Aufrufen der Funktion gemäß den von uns definierten Mustern), Analyse und Ausführung. Damit es funktioniert, haben wir für jedes der Instruments Autorisierungs- und API-Aufrufmethoden implementiert. Wichtig conflict, dass wir alle Anweisungen für den Aufruf dieser Instruments verwalten und die interne Logik dieser Funktionen einschließlich Normal- oder benutzerspezifischer Parameter erstellen mussten. Doch der Hype um „KI“ erforderte schnelle, manchmal brutale Lösungen, um Schritt zu halten, und so wurden MCPs von der Firma Anthropic eingeführt.

MCPs

MCP steht für Mannequin Context Protocol und ist heute eine Standardmethode zur Bereitstellung von Instruments für die meisten Agenten-Pipelines. MCPs verwalten grundsätzlich sowohl Integrationsfunktionen als auch LLM-Anweisungen zur Verwendung von Instruments. An dieser Stelle mögen einige argumentieren, dass Fähigkeiten und Codeausführung, die kürzlich auch von Anthropic eingeführt wurden, MCPs getötet haben, aber tatsächlich neigen diese Funktionen auch dazu, MCPs für die Integration und Befehlsverwaltung zu verwenden (Codeausführung mit MCP – Anthropic). Fähigkeiten und Codeausführung konzentrieren sich auf das Kontextmanagementproblem und die Device-Orchestrierung, das ist ein anderes Drawback als das, was MCPs sind konzentriert.

MCPs bieten eine Standardmethode zur Integration verschiedener Dienste (Instruments) in LLMs und stellen außerdem Anweisungen bereit, die LLMs zum Aufrufen der Instruments verwenden. Allerdings gibt es hier ein paar Probleme:

  1. Das aktuelle Modellkontextprotokoll geht davon aus, dass alle Werkzeugaufrufparameter dem LLM zugänglich gemacht werden und alle ihre Werte vom LLM generiert werden sollen. Das bedeutet beispielsweise, dass der LLM einen Benutzer-ID-Wert generieren muss, wenn der Funktionsaufruf dies erfordert. Das ist ein Mehraufwand, da das System und die Anwendung den Benutzer-ID-Wert kennen, ohne dass LLM ihn generieren muss. Darüber hinaus müssen wir ihn an die Eingabeaufforderung senden, um LLM über den Benutzer-ID-Wert zu informieren (in FastMCP gibt es einen Ansatz zum „Ausblenden von Argumenten“) gofastmcp das sich speziell auf dieses Drawback konzentriert, aber ich habe es in der ursprünglichen MCP-Implementierung von Anthropic nicht gesehen).
  2. Keine sofort einsatzbereite Kontrolle über Anweisungen. MCPs stellen eine Beschreibung für jedes Device und eine Beschreibung für jedes Argument eines Instruments bereit, sodass diese Werte in den Agentenpipelines einfach blind als LLM-API-Aufrufparameter verwendet werden. Und die Beschreibung wird von den einzelnen MCP-Serverentwicklern bereitgestellt.
Systemaufforderung und Instruments

Wenn Sie LLMs aufrufen, stellen Sie dem LLM-Aufruf normalerweise Instruments als API-Aufrufparameter zur Verfügung. Der Wert dieses Parameters wird von der list_tools-Funktion des MCP abgerufen, die das JSON-Schema für die vorhandenen Instruments zurückgibt.

Gleichzeitig wird dieser „Instruments“-Parameter verwendet, um der Systemeingabeaufforderung des Modells zusätzliche Informationen hinzuzufügen. Zum Beispiel hat das Qwen3-VL-Modell chat_template Das verwaltet das Einfügen von Werkzeugen in die Systemaufforderung auf folgende Weise:

“...You might be supplied with perform signatures inside <instruments></instruments> XML tags:n<instruments>" }}n    {%- for software in instruments %}n        {{- "n" }}n        { tojson }n    {%- endfor %}...”

Die Werkzeugbeschreibungen landen additionally in der Systemeingabeaufforderung des LLM, das Sie aufrufen.

Das erste Drawback wird tatsächlich teilweise durch den erwähnten Ansatz „Argumente ausblenden“ von FastMCP gelöst, aber ich habe dennoch einige Lösungen gesehen, bei denen Werte wie „Benutzer-ID“ an die Systemeingabeaufforderung des Modells gesendet wurden, um sie beim Aufrufen des Instruments zu verwenden – es ist aus technischer Sicht einfach schneller und viel einfacher zu implementieren (eigentlich ist keine technische Planung erforderlich, um sie einfach an die Systemeingabeaufforderung zu stellen und sich auf ein LLM zu verlassen, um sie zu verwenden). Hier konzentriere ich mich additionally auf das zweite Drawback.

Gleichzeitig lasse ich die Probleme beiseite, die mit Unmengen von MCPs auf dem Markt verbunden sind – einige von ihnen funktionieren nicht, andere haben Werkzeugbeschreibungen generiert, die für das Modell verwirrend sein können. Das Drawback, auf das ich mich hier konzentriere, sind nicht standardisierte Instruments und ihre Parameterbeschreibungen, die der Grund dafür sein können, dass sich LLMs mit einigen Instruments schlecht verhalten.

Anstelle des Fazits zum Einleitungsteil:

Wenn Ihre Agent-LLM-gestützte Pipeline mit den Ihnen zur Verfügung stehenden Instruments ausfällt, können Sie Folgendes tun:

  1. Wählen Sie einfach eine leistungsfähigere, modernere und teurere LLM-API.
  2. Überprüfen Sie Ihre Werkzeuge und die Anweisungen insgesamt noch einmal.

Beides kann funktionieren. Treffen Sie Ihre Entscheidung oder bitten Sie Ihren KI-Assistenten, eine Entscheidung für Sie zu treffen …

Formaler Teil der Arbeit – Forschung

1. Beispiele für verschiedene Beschreibungen

Basierend auf der Suche durch die realen MCPs auf dem Markt und der Überprüfung ihrer Werkzeuglisten und Beschreibungen konnte ich viele Beispiele für das erwähnte Drawback finden. Hier stelle ich nur ein einziges Beispiel von zwei verschiedenen MCPs bereit, die auch unterschiedliche Domänen haben (in den realen Fällen hat die Liste der MCPs, die ein Modell verwendet, tendenziell unterschiedliche Domänen):

Beispiel 1:

Beschreibung des Instruments: „Erstellen Sie ein Flächendiagramm, um Datentrends unter kontinuierlichen unabhängigen Variablen anzuzeigen und den Gesamtdatentrend zu beobachten, z. B. Verschiebung = Geschwindigkeit (durchschnittlich oder momentan) × Zeit: s = v × t. Wenn die x-Achse die Zeit

Beschreibung der Eigenschaft „Daten“: „Daten für ein Flächendiagramm. Es sollte ein Array von Objekten sein. Jedes Objekt enthält ein Feld „Zeit“ und ein Feld „Wert“, z. Gruppe: ‚A‘ }, { Zeit: ‚2015‘, Wert: 32, Gruppe: ‚B‘ }).“

Beispiel 2:

Toolbeschreibung: „Suchen Sie nach Airbnb-Inseraten mit verschiedenen Filtern und Seitenumbrüchen. Stellen Sie dem Benutzer direkte Hyperlinks zur Verfügung.“

Eigenschaftsbeschreibung „Standort“: „Zu suchender Ort (Stadt, Bundesland usw.)“

Ich behaupte hier nicht, dass eine dieser Beschreibungen falsch ist, sie unterscheiden sich lediglich stark vom Format und der Detailperspektive.

2. Datensatz und Benchmark

Um zu beweisen, dass verschiedene Werkzeugbeschreibungen das Verhalten des Modells ändern können, habe ich die von NVidia verwendet „When2Call“ Datensatz. Aus diesem Datensatz habe ich Testbeispiele entnommen, bei denen das Modell mehrere Werkzeuge zur Auswahl hat, und ein Werkzeug ist die richtige Wahl (je nach Datensatz ist es richtig, ein bestimmtes Werkzeug anstelle eines anderen aufzurufen oder eine Textantwort ohne Werkzeugaufruf bereitzustellen). Die Idee des Benchmarks besteht darin, korrekte und falsche Device-Aufrufe zu zählen. Ich zähle auch „kein Device-Aufruf“-Fälle als falsche Antwort. Für das LLM habe ich „gpt-5-nano“ von OpenAI ausgewählt.

3. Datengenerierung

Der Originaldatensatz enthält nur eine einzige Werkzeugbeschreibung. Um various Beschreibungen für jedes Werkzeug und jeden Parameter zu erstellen, habe ich „gpt-5-mini“ verwendet, um sie basierend auf der aktuellen zu generieren, mit der folgenden Anweisung, um sie zu komplizieren (nach der Generierung gab es bei Bedarf einen zusätzlichen Schritt der Validierung und Neugenerierung):

„““Sie erhalten die Werkzeugdefinition im JSON-Format. Ihre Aufgabe besteht darin, die Werkzeugbeschreibung detaillierter zu gestalten, damit sie von einem schwachen Modell verwendet werden kann.

Eine Möglichkeit, es zu verkomplizieren: Fügen Sie eine detaillierte Beschreibung der Funktionsweise und Anwendungsbeispiele ein.

Beispiel für detaillierte Beschreibungen:

Beschreibung des Instruments: „Erstellen Sie ein Flächendiagramm, um Datentrends unter kontinuierlichen unabhängigen Variablen anzuzeigen und den Gesamtdatentrend zu beobachten, z. B. Verschiebung = Geschwindigkeit (durchschnittlich oder momentan) × Zeit: s = v × t. Wenn die x-Achse die Zeit

Eigenschaftsbeschreibung: „Daten für Flächendiagramme, es sollte ein Array von Objekten sein, jedes Objekt enthält ein „Zeit“-Feld und ein „Wert“-Feld, wie zum Beispiel ({ Zeit: ‚2015‘, Wert: 23 }, { Zeit: ‚2016‘, Wert: 32 }), wenn eine Stapelung für die Fläche erforderlich ist, sollten die Daten ein „Gruppen“-Feld enthalten, wie zum Beispiel ({ Zeit: ‚2015‘, Wert: 23, Gruppe: ‚A‘ }, { Zeit: ‚2015‘, Wert: 32, Gruppe: ‚B‘ }).“

Geben Sie die aktualisierte detaillierte Beschreibung ausschließlich im JSON-Format zurück (ändern Sie einfach die Beschreibungen, ändern Sie nicht die Struktur des eingegebenen JSON). Beginnen Sie Ihre Antwort mit:

„Neues JSON-Format: …“

„““

4. Experimente

Um die Hypothese zu testen, habe ich einige Checks durchgeführt, nämlich:

  • Messen Sie die Basislinie der Modellleistung anhand des ausgewählten Benchmarks (Baseline).
  • Ersetzen Sie die korrekten Werkzeugbeschreibungen (einschließlich der Werkzeugbeschreibung selbst und der Parameterbeschreibungen – für alle Experimente gleich) durch die generierte (richtiges Werkzeug ersetzt);
  • Ersetzen Sie falsche Werkzeugbeschreibungen durch die generierten (Falsches Werkzeug ersetzt);
  • Ersetzen Sie die Beschreibung aller Werkzeuge durch die generierte Beschreibung (Alle Werkzeuge ersetzt).

Hier ist eine Tabelle mit den Ergebnissen dieser Experimente (für jedes der Experimente wurden 5 Auswertungen durchgeführt, daher wird zusätzlich zur Genauigkeit die Standardabweichung (Standardabweichung) angegeben):

Verfahren Mittlere Genauigkeit Genauigkeit Std Maximale Genauigkeit über 5 Experimente
Grundlinie 76,5 % 0,03 79,0 %
Richtiges Werkzeug ersetzt 80,5 % 0,03 85,2 %
Falsches Werkzeug ersetzt 75,1 % 0,01 76,5 %
Alle Werkzeuge ersetzt 75,3 % 0,04 82,7 %
Tabelle 1. Ergebnisse der Experimente. Vom Autor erstellte Tabelle.

Abschluss

    Aus der obigen Tabelle geht hervor, dass die Komplikation der Instruments zu einer Verzerrung des Modells führt. Ausgewählte LLM tendieren dazu, das Device mit einer detaillierteren Beschreibung auszuwählen. Gleichzeitig können wir sehen, dass eine erweiterte Beschreibung das Modell verwirren kann (im Fall aller ersetzten Werkzeuge).

    Die Tabelle zeigt, dass die Werkzeugbeschreibung Mechanismen zur Manipulation und erheblichen Anpassung des Verhaltens/der Genauigkeit des Modells bereitstellt, insbesondere unter Berücksichtigung der Tatsache, dass der ausgewählte Benchmark bei jedem Modellaufruf mit einer kleinen Anzahl von Werkzeugen arbeitet und die durchschnittliche Anzahl der verwendeten Werkzeuge bei jeder Stichprobe 4,35 beträgt.

    Gleichzeitig zeigt es deutlich, dass LLMs Vorurteile gegenüber Werkzeugen haben können, die möglicherweise von MCP-Anbietern missbraucht werden können, wobei es sich um Vorurteile handeln kann, die denen ähneln, über die ich zuvor berichtet habe – Stilvorurteile. Die Erforschung der Vorurteile und ihres Missbrauchs kann für weitere Studien wichtig sein.

    Eine Lösung entwickeln

    Ich habe einen PoC mit Werkzeugen vorbereitet, um das erwähnte Drawback in der Praxis anzugehen – Grasp-MCP. Grasp-MCP ist ein Proxy-MCP-Server, der mit einer beliebigen Anzahl von MCPs verbunden werden kann und auch als einzelner MCP-Server selbst (derzeit stdio-transport MCP-Server) mit einem Agenten/LLM verbunden werden kann. Standardfunktionen des Grasp-MCP, die ich implementiert habe:

    1. Ignorieren Sie einige Parameter. Die implementierte Mechanik schließt alle Parameter, die mit dem Image „_“ beginnen, aus dem Parameterschema des Instruments aus. Später kann dieser Parameter programmgesteuert eingefügt werden oder der Standardwert verwendet werden (falls angegeben).
    2. Anpassungen der Werkzeugbeschreibung. Grasp-MCP sammelt alle Instruments und deren Beschreibungen von den verbundenen MCP-Servern und bietet einem Benutzer die Möglichkeit, diese anzupassen. Es stellt eine Methode mit der einfachen Benutzeroberfläche zum Bearbeiten dieser Liste (JSON-Schema) bereit, sodass der Benutzer mit den Beschreibungen verschiedener Instruments experimentieren kann.

    Ich lade alle Interessierten ein, sich dem Projekt anzuschließen. Mit der Neighborhood-Unterstützung können die Pläne die Funktionserweiterung von Grasp-MCP umfassen, zum Beispiel:

    • Protokollierung und Überwachung, gefolgt von erweiterten Analysen;
    • Hierarchie und Orchestrierung der Instruments (einschließlich ML-Unterstützung), um moderne Kontextverwaltungstechniken und intelligente Algorithmen zu kombinieren.

    Aktuelle Github-Seite des Projekts: Hyperlink

[ad_2]

]]>
https://chatgpz.de/machine-learning/so-halten-sie-mcps-in-agentenpipelines-nuetzlich/feed/ 0 15304
Tipps zum Erstellen von Modellen für maschinelles Lernen, die tatsächlich nützlich sind https://chatgpz.de/data-science/tipps-zum-erstellen-von-modellen-fuer-maschinelles-lernen-die-tatsaechlich-nuetzlich-sind/ https://chatgpz.de/data-science/tipps-zum-erstellen-von-modellen-fuer-maschinelles-lernen-die-tatsaechlich-nuetzlich-sind/#respond Wed, 27 Aug 2025 04:57:19 +0000 http://chatgpz.de/data-science/tipps-zum-erstellen-von-modellen-fuer-maschinelles-lernen-die-tatsaechlich-nuetzlich-sind/ [ad_1]

Tipps zum Erstellen von Modellen für maschinelles Lernen, die tatsächlich nützlich sindTipps zum Erstellen von Modellen für maschinelles Lernen, die tatsächlich nützlich sind
Bild von Autor | Ideogramm

# Einführung

Bauen Sie maschinelles Lernmodelle, bei denen echte Probleme tatsächlich gelöst werden, nicht nur darum, hohe Genauigkeitswerte bei Testsätzen zu erzielen. Es geht darum, Systeme zu bauen, die in Produktionsumgebungen konsequent arbeiten.

Dieser Artikel enthält sieben praktische Tipps, um sich auf den Aufbau von Modellen zu konzentrieren, die zuverlässiger Geschäftswert als nur beeindruckende Metriken bieten. Fangen wir an!

# 1. Beginnen Sie mit dem Drawback, nicht mit dem Algorithmus

Der häufigste Fehler bei maschinellen Lernprojekten ist die Konzentration auf eine bestimmte Technik, bevor Sie verstehen, was Sie lösen möchten. Bevor Sie überhaupt mit der Codierung eines Gradienten -Boosting -Modells oder eines neuronalen Netzwerks beginnen oder die Hyperparameter -Tuning starten, verbringen Sie ernsthafte Zeit mit den Personen, die Ihr Modell tatsächlich verwenden.

Wie sieht das in der Praxis aus:

  • Schatten vorhandenen Prozesse für mindestens eine Woche
  • Verstehen Sie die Kosten für falsch constructive Aspekte im Vergleich zu falschen Negativen in realen {Dollars}
  • Karten Sie den gesamten Workflow auf, in das Ihr Modell passt
  • Identifizieren Sie, was „intestine genug“ Leistung für das Modell und das Drawback, das Sie lösen, bedeutet

Ein Betrugserkennungsmodell, das 95% des Betrugs fängt, aber 20% der legitimen Transaktionen als verdächtig mathematisch beeindruckend, aber operativ nutzlos sein. Das beste Modell ist oft das einfachste, das die Geschäftsnadel zuverlässig bewegt.

# 2. Behandeln Sie die Datenqualität als Ihre wichtigste Funktion

Ihr Modell ist nur so intestine wie Ihre Daten, aber die meisten Groups verbringen 80% ihrer Zeit mit Algorithmen und 20% für die Datenqualität. Flip dieses Verhältnis. Saubere, repräsentative, intestine verstandene Daten übertreffen die ausgefallenen Algorithmen, die jedes Mal auf Daten mit schlechter Qualität geschult sind.

Bauen Sie diese Gewohnheiten frühzeitig auf:

  • Erstellen Sie Datenqualitätsprüfungen, die automatisch mit jeder Pipeline ausgeführt werden
  • Verfolgen Sie die Datendriftmetriken in der Produktion
  • Behalten Sie Datenquellen und Transformationen im Auge
  • Richten Sie Warnungen ein, wenn sich die wichtigsten statistischen Eigenschaften ändern

Denken Sie daran: Eine lineare Regression, die auf hochwertigen Daten geschult wurde, übertreffen häufig ein tiefes neuronales Netzwerk, das auf inkonsistenten, voreingenommenen oder veralteten Informationen geschult ist. Investieren Sie in Ihre Dateninfrastruktur, wie Ihr Unternehmen davon abhängt – weil dies wirklich der Fall ist.

# 3. Design für die Interpretierbarkeit vom ersten Tag an

„Black Field“ -Modelle funktionieren möglicherweise intestine, wenn Sie maschinelles Lernen lernen. Für die Produktion ist es jedoch immer besser, Interpretierbarkeit hinzuzufügen. Wenn Ihr Modell eine wirkungsvolle falsche Vorhersage macht, müssen Sie verstehen, warum es passiert ist und wie Sie es verhindern können.

Praktische Interpretierbarkeitsstrategien:

  • Verwenden Sie Attributionsmethoden wie Type oder KALK individuelle Vorhersagen zu erklären
  • Versuchen Sie, Modell-agnostische Erklärungen zu verwenden, die über verschiedene Algorithmen hinweg funktionieren
  • Erstellen Sie Entscheidungsbäume oder regelbasierte Modelle als interpretierbare Baselines
  • Dokument, in dem Vorhersagen in einfachem Englisch vorgestellt werden

Hier geht es nicht nur um die Einhaltung der Regulierung oder das Debuggen. Interpretierbare Modelle helfen Ihnen dabei, neue Erkenntnisse in Ihre Problemdomäne zu entdecken und Stakeholder Belief aufzubauen. Ein Modell, das seine Argumentation erklären kann, ist ein Modell, das systematisch verbessert werden kann.

# 4. Validieren Sie gegen reale Szenarien, nicht nur Testsätze

Traditionelle Zug-/Validierungs-/Take a look at -Splits verpassen oft die wichtigste Frage: Funktioniert dieses Modell, wenn sich die Bedingungen ändern? Die reale Bereitstellung umfasst Datenverteilungsverschiebungen, Kantenfälle und kontroverse Eingaben, die Ihr sorgfältig kuratierter Testsatz nie erwartet hat.

Gehen Sie über die grundlegende Validierung hinaus:

  • Testen Sie an Daten aus verschiedenen Zeiträumen, Geografien oder Benutzersegmenten
  • Simulieren Sie realistische Randfälle und Fehlermodi
  • Verwenden Sie Techniken wie die kontroverse Validierung, um die Datensatzverschiebung zu erkennen
  • Erstellen Sie Stresstests, die Ihr Modell über die normalen Betriebsbedingungen hinaus drücken

Wenn Ihr Modell in den Daten des letzten Monats intestine abschneidet, aber die heutigen Verkehrsmuster fehlschlägt, ist dies nicht wirklich hilfreich. Erstellen Sie von Anfang an Robustheitstests in Ihren Validierungsprozess.

# 5. Implementieren Sie die Überwachung vor der Bereitstellung

Die meisten Groups für maschinelles Lernen behandeln die Überwachung als nachträgliche Gedanke, aber Produktionsmodelle verschlechtern sich lautlos und unvorhersehbar. Wenn Sie Leistungsprobleme durch Geschäftsmetriken bemerken, kann bereits erhebliche Schäden angerichtet werden.

Wesentliche Überwachungskomponenten:

  • Eingabedatenverteilung verfolgt (Drift erkennen, bevor sie Vorhersagen beeinflusst)
  • Vorhersagevertrauen und Ausreißererkennung
  • Modellleistungskennzahlen im Laufe der Zeit verfolgt
  • Geschäftsmetrikkorrelationsanalyse
  • Automatisierte Warnungen für anomales Verhalten

Richten Sie die Überwachungsinfrastruktur während der Entwicklung und nicht nach dem Einsatz ein. Ihr Überwachungssystem sollte in der Lage sein, Probleme zu erkennen, bevor Ihre Benutzer dies tun, und geben Sie Zeit, sich vor dem Auftreten der geschäftlichen Auswirkungen zu überholen oder zurückzurufen.

# 6. Plan für Modellaktualisierungen und Umschulung

Die Leistung eines Modells ist nicht immer konsistent. Änderungen des Benutzerverhaltens, Verschiebung der Marktbedingungen und Datenmuster entwickeln sich. Ein Modell, das heute perfekt funktioniert, wird im Laufe der Zeit allmählich weniger nützlich, es sei denn, Sie haben einen systematischen Ansatz, um es auf dem Laufenden zu halten.

Erstellen Sie nachhaltige Aktualisierungsprozesse:

  • Automatisieren Sie Datenpipeline -Updates und Function Engineering
  • Erstellen Sie Umschulungspläne basierend auf Leistungsabbauschwellenwerten
  • Implementieren Sie A/B -Take a look at -Frameworks für Modellaktualisierungen
  • Behalten Sie die Versionskontrolle für Modelle, Daten und Code bei
  • Planen Sie sowohl inkrementelle Updates als auch für vollständige Modellumbau

Das Ziel ist nicht, ein perfektes Modell zu erstellen. Es soll ein System erstellen, das sich an sich ändernde Bedingungen anpassen kann und gleichzeitig die Zuverlässigkeit aufrechterhalten kann. Die Modellwartung ist keine einmalige technische Aufgabe.

# 7. Optimieren Sie die Wirtschaftsauswirkungen, nicht für Metriken

Genauigkeit, Präzision und Rückruf sind nützlich, aber keine Geschäftsmetriken. Die hilfreichsten Modelle für maschinelles Lernen sind für messbare Geschäftsergebnisse optimiert: erhöhte Einnahmen, gesenkte Kosten, verbesserte Kundenzufriedenheit oder schnellere Entscheidungsfindung.

Ausrichten von technischen Metriken auf den Geschäftswert:

  • Erfolgskriterien in Bezug auf die Geschäftsergebnisse definieren
  • Verwenden Sie das Kostensensitive Lernen, wenn unterschiedliche Fehler unterschiedliche Geschäftskosten haben
  • Observe-Modell-ROI und Kosteneffizienz im Laufe der Zeit
  • Erstellen Sie Suggestions -Schleifen zwischen Modellvorhersagen und Geschäftsergebnissen

Ein Modell, das einen Geschäftsprozess um 10% verbessert und gleichzeitig 85% genau ist, ist unendlich wertvoller als ein 99% genaues Modell, das die Nadel nicht bewegt. Konzentrieren Sie sich auf Gebäudesysteme, die einen messbaren Wert schaffen, nicht nur auf beeindruckende Benchmark -Werte.

# Einpacken

Das Aufbau hilfreicher Modelle für maschinelles Lernen erfordert das Denken über den Algorithmus über den gesamten Systemlebenszyklus hinaus. Beginnen Sie mit klarer Problemdefinition, investieren Sie stark in die Datenqualität, das Design für Interpretierbarkeit und Überwachung und optimieren Sie immer die wirklichen Wirtschaftsauswirkungen.

Die erfolgreichsten Praktiker für maschinelles Lernen sind nicht unbedingt diejenigen, die sich mit den tiefsten Kenntnissen über hochmoderne Algorithmen befinden. Sie können konsequent Systeme liefern, die zuverlässig in der Produktion arbeiten und einen messbaren Wert für ihre Organisationen schaffen.

Denken Sie daran: Ein einfaches Modell, das intestine verstanden, ordnungsgemäß überwacht und auf geschäftliche Anforderungen ausgerichtet ist, wird immer hilfreicher sein als ein komplexes Modell, das in der Entwicklung perfekt funktioniert, aber in der realen Welt unvorhersehbar scheitert.

Bala Priya c ist ein Entwickler und technischer Schriftsteller aus Indien. Sie arbeitet gern an der Schnittstelle zwischen Mathematik, Programmierung, Datenwissenschaft und Inhaltserstellung. Ihre Interessensgebiete und Fachgebiete umfassen DevOps, Information Science und natürliche Sprachverarbeitung. Sie liest gerne, schreibt, codieren und Kaffee! Derzeit arbeitet sie daran, ihr Wissen mit der Entwicklergemeinschaft zu lernen und zu teilen, indem sie Tutorials, Anleitungen, Meinungsstücke und vieles mehr autorisiert. Bala erstellt auch ansprechende Ressourcenübersichten und Codierungs -Tutorials.



[ad_2]

]]>
https://chatgpz.de/data-science/tipps-zum-erstellen-von-modellen-fuer-maschinelles-lernen-die-tatsaechlich-nuetzlich-sind/feed/ 0 11910
Warum Mengen beim Programmieren so nützlich sind | von Afjal Chowdhury | Dez. 2024 https://chatgpz.de/artificial-intelligence/warum-mengen-beim-programmieren-so-nuetzlich-sind-von-afjal-chowdhury-dez-2024/ https://chatgpz.de/artificial-intelligence/warum-mengen-beim-programmieren-so-nuetzlich-sind-von-afjal-chowdhury-dez-2024/#respond Mon, 23 Dec 2024 16:29:41 +0000 http://chatgpz.de/artificial-intelligence/warum-mengen-beim-programmieren-so-nuetzlich-sind-von-afjal-chowdhury-dez-2024/ [ad_1]

Wenn wir einen Schritt zurücktreten, könnte es scheinen, dass die einfache Entfernung von Duplikaten der einzige Vorteil der Verwendung von Units ist. Wir haben zuvor besprochen, dass Mengen keine Ordnung haben; Arrays verfügen über ein indiziertes Factor, das einfach ignoriert und wie eine Menge behandelt werden kann. Es scheint, dass Arrays die gleiche Aufgabe erfüllen können wie eine Menge, wenn nicht sogar mehr.

Diese durch Mengen erzwungene Vereinfachung eröffnet jedoch den Weg dazu verschiedene zugrunde liegende Implementierungen. In Hear werden Elementen Indizes zugewiesen, um jedem Factor einen Platz in der Reihenfolge zu geben. Units müssen keine Indizes zuweisen, daher implementieren sie stattdessen einen anderen Referenzierungsansatz: Hash-Mapping. Diese funktionieren, indem sie Elementen (pseudo)zufällig Adressen zuweisen, anstatt sie in einer Reihe zu speichern. Die Zuordnung wird durch Hashing-Funktionen gesteuert, die das Factor als Eingabe für die Ausgabe einer Adresse verwenden.

Durch Hashing wird die Ordnung nicht gewahrt

H(x) ist deterministisch, daher liefert die gleiche Eingabe immer die gleiche Ausgabe, d. h. Es gibt kein RNG innerhalb der Funktion H, daher ist in diesem Fall immer H(4) = 6.

Das Ausführen dieser Funktion dauert unabhängig von der Größe des Satzes gleich lange, d. h. Hashing hat eine Zeitkomplexität von O(1). Dies bedeutet, dass die zum Hashing benötigte Zeit unabhängig von der Größe der Liste ist und eine konstante, schnelle Geschwindigkeit aufweist.

Da Hashing im Allgemeinen schnell ist, können eine ganze Reihe von Vorgängen, die bei großen Arrays normalerweise langsam sind, sehr effizient auf einem Satz ausgeführt werden.

Suche oder Mitgliedschaftstest

Die Suche nach Elementen in einem Array verwendet einen Algorithmus namens Lineare Suchevon Überprüfen Sie jedes Factor in der Liste einzeln. Im schlimmsten Fall, wenn das gesuchte Factor nicht in der Liste vorhanden ist, durchläuft der Algorithmus jedes Factor der Liste (An)). Bei einer sehr großen Liste dauert dieser Vorgang sehr lange.

Die lineare Suche erfordert im Durchschnitt n/2 Operationen, Bild nach Autor

Da das Hashing jedoch O(1) ist, hasht Python das zu findende Factor und gibt entweder dorthin zurück, wo es sich im Speicher befindet, oder dass es nicht existiert – und das in sehr kurzer Zeit.

number_list = vary(random.randint(1,000,000))
number_set = set(number_list)

#Line 1
#BEGIN TIMER
print(-1 in number_list)
#END TIMER

#Line 2
#BEGIN TIMER
print(-1 in number_set)
#END TIMER

Vergleich der Suchzeiten in Hear vs. Sätzen

Hinweis: Die Suche mithilfe einer Hashmap hat einen amortisiert Zeitkomplexität von O(1). Das bedeutet, dass es im Durchschnitt mit einer konstanten Zeit läuft, aber technisch gesehen ist die Suche im schlimmsten Fall O(n). Dies ist jedoch äußerst unwahrscheinlich und liegt daran, dass bei der Hashing-Implementierung die Gefahr von Kollisionen besteht, wenn mehrere Elemente in einer Hashmap/einem Hashsatz an dieselbe Adresse gehasht werden.

Kollisionen sind selten

Streichung

Das Löschen eines Parts aus einer Liste erfordert zunächst eine Suche nach dem Factor und anschließend das Entfernen des Verweises auf das Factor durch Löschen der Adresse. In einem Array muss nach der O(n)-Zeitsuche der Index jedes Parts, das auf das gelöschte Factor folgt, um eins nach unten verschoben werden. Dies selbst ist ein weiterer O(n)-Prozess.

Das Löschen in einer Liste erfordert ungefähr n Operationen

Das Löschen eines Parts aus einer Menge erfordert die O(1)-Suche und das anschließende Löschen der Speicheradresse, was ein O(1)-Prozess ist, sodass das Löschen ebenfalls in konstanter Zeit erfolgt. Units verfügen außerdem über mehr Möglichkeiten zum Löschen von Elementen, sodass keine Fehler auftreten oder mehrere Elemente präzise entfernt werden können.

#LIST
numbers = (1, 3, 4, 7, 8, 11)

numbers.take away(4)
numbers.take away(5) #Raises ERROR as 5 is just not in checklist
numbers.pop(0) #Deletes quantity at index 0, ie. 1

#SET
numbers = {1, 3, 4, 7, 8, 11}

numbers.take away(4)
numbers.take away(5) #Raises ERROR as 5 is just not in set
numbers.discard(5) #Doesn't increase error if 5 is just not within the set
numbers -= {1,2,3} #Performs set distinction, ie. 1, 3 are discarded

Einfügen

Sowohl das Anhängen an eine Liste als auch das Hinzufügen von Elementen zu einer Menge sind konstante Vorgänge; Das Hinzufügen zu einem angegebenen Index in einer Liste (.insert) bringt jedoch die zusätzliche Zeit mit sich, Elemente zu verschieben.

num_list = (1,2,3)
num_set = {1,2,3}

num_list.append(4)
num_set.add(4)

num_list += (5,6,7)
num_set += {5,6,7}

Erweiterte Set-Operationen

Darüber hinaus sind alle mathematischen Operationen, die auf Mengen ausgeführt werden können, auch in Python implementiert. Die manuelle Ausführung dieser Vorgänge an einer Liste ist erneut zeitaufwändig und wird erneut mithilfe von Hashing optimiert.

Operationen festlegen
A = {1, 2, 3, 5, 8, 13}
B = {2, 3, 5, 7, 13, 17}

# A n B
AintersectB = A & B
# A U B
AunionB = A | B
# A B
AminusB = A - B
# A U B - A n B or A Delta B
AsymmetricdiffB = A ^ B

Dazu gehören auch Vergleichsoperatoren, nämlich echte und entspannte Teilmengen und Obermengen. Diese Operationen laufen wiederum viel schneller als ihre Hear-Gegenstücke und arbeiten in O(n)-Zeit, wobei n die größere der beiden Mengen ist.

Teilmenge
A <= B #A is a correct subset of B
A > B #A is a superset of B

Gefrorene Units

Eine letzte kleine, aber unterschätzte Funktion in Python ist die gefrorenes Setwas im Wesentlichen ein schreibgeschütztes oder ist unveränderlich Satz. Diese bieten eine höhere Speichereffizienz und können in Fällen nützlich sein, in denen Sie die Mitgliedschaft in einem Tupel häufig testen.

CEinschluss

Die Essenz der Verwendung von Units zur Leistungssteigerung wird durch das Prinzip zusammengefasst Optimierung durch Reduktion.

Datenstrukturen wie Hear verfügen über die größte Funktionalität – sie sind indiziert und dynamisch –, gehen jedoch mit einer vergleichsweise geringeren Effizienz einher: Geschwindigkeit und Speicher. Wenn Sie ermitteln, welche Funktionen wesentlich bzw. ungenutzt sind, um zu ermitteln, welcher Datentyp verwendet werden soll, erhalten Sie Code, der schneller ausgeführt und besser gelesen werden kann.

Alle technischen Diagramme nach Autor.

[ad_2]

]]>
https://chatgpz.de/artificial-intelligence/warum-mengen-beim-programmieren-so-nuetzlich-sind-von-afjal-chowdhury-dez-2024/feed/ 0 6058