Over- und Underfitting in LaTeX darstellen

Tabellen und Grafiken erstellen und anordnen


lina_24642
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mo 18. Apr 2022, 05:56

Over- und Underfitting in LaTeX darstellen

Beitrag von lina_24642 »

Liebes Forum,

ich möchte mit einer Abbildung Underfitting und Overfitting abbilden (siehe Bild). Ich bin schon eine ganze Weile am Probieren und Suchen, aber leider weiß ich nicht, wie ich eine Funktion in die Grafik bekommen, die die Punkte genau an der richtigen Stelle trennt.

Bild

Online habe ich eine ähnliche Fragestellung gefunden, die allerdings nie zufriedenstellend beantwortet werden konnte: https://tex.stackexchange.com/questions/364093/plotting-overfitting-diagram

Schon im Voraus vielen Dank für eure Hilfe!

Mein aktueller Code ist unten angefügt. Das ist jetzt nicht sonderlich schön bisher und vielleicht kann mir ja jemand auch sagen, wie man das vielleicht schöner lösen kann. Super wäre wenn bei der Underfitting Grafik die Gerade noch stärker zur Geltung kommt. Weiterhin fehlen noch die Funktionen für die zweite und dritte Grafik, wobei beim Overfitting jeder Punkt richtig klassifiziert werden soll. Kann mir außerdem jemand sagen, wie ich die drei Grafiken zwar nebeneinander habe, aber dafür linksbündig mit der ersten startend?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\usetikzlibrary{shapes.misc}
\tikzset{point/.style = {% define a style for the function points
        circle,
        fill=#1,
        draw=black,
        inner sep=4pt,
      },
      point/.default = {red!60}
    }

\begin{document}

\begin{tikzpicture}[scale=0.8, cross/.style={draw, cross out,
  minimum size=2*(#1-1pt), inner sep=0pt, outer sep=0pt}]
    % Achsen zeichnen
   \draw[->,thick] (0,0) -- (5.5,0) node[right] {}; %{$x$}
   \draw[->,thick] (0,0) -- (0,5.5) node[above] {}; %{$y$}

   %Punkte einzeichnen:
    %Gelbe Punkte
    \node[point=yellow] (Y) at (3, 3){}; 
    \node[point=yellow] (Y) at (3.5, 2.5){}; 
    \node[point=yellow] (Y) at (4.2, 3.3){}; 
    \node[point=yellow] (Y) at (4.8, 4){}; 
    \node[point=yellow] (Y) at (5, 4.7){}; 
    \node[point=yellow] (Y) at (3.7, 4.7){}; 
    \node[point=yellow] (Y) at (3.7, 4.0){}; 
    \node[point=yellow] (Y) at (2.7, 5){}; 
    \node[point=yellow] (Y) at (2.5, 4.2){}; 
    \node[point=yellow] (Y) at (4.3, 4.9){}; 
    \node[point=yellow] (Y) at (3.7, 1.9){}; 
    \node[point=yellow] (Y) at (5.1, 3.3){}; 
    \node[point=yellow] (Y) at (2.7, 2){}; 
    \node[point=yellow] (Y) at (4.2, 2.5){}; 
    \node[point=yellow] (Y) at (4.9, 2.2){};    
    
    %Ausreißer gelb
    \node[point=yellow] (Y) at (1.8, 4.3){}; 
    
    %Ausreißer blau
    \node[point=blue!70] (Y) at (2.7, 3.6){}; 
    
    %Blaue Punkte
    \node[point=blue!70] (Y) at (1, 2){}; 
    \node[point=blue!70] (Y) at (0.8, 3){}; 
    \node[point=blue!70] (Y) at (1.4, 3.6){}; 
    \node[point=blue!70] (Y) at (1.7, 5){}; 
    \node[point=blue!70] (Y) at (1, 4.5){}; 
    \node[point=blue!70] (Y) at (0.4, 4.9){}; 
    \node[point=blue!70] (Y) at (0.7, 3.7){}; 
    \node[point=blue!70] (Y) at (2, 3.2){}; 
    \node[point=blue!70] (Y) at (1.9, 2.5){}; 
    \node[point=blue!70] (Y) at (2.3, 1.3){}; 
    \node[point=blue!70] (Y) at (1.3, 0.9){}; 
    \node[point=blue!70] (Y) at (0.4, 0.9){}; 
    \node[point=blue!70] (Y) at (2.4, 0.4){}; 
    \node[point=blue!70] (Y) at (0.5, 1.5){}; 
    \node[point=blue!70] (Y) at (1.7, 1.6){}; 
    \node[point=blue!70] (Y) at (3, 0.9){}; 
    \node[point=blue!70] (Y) at (3.9, 1.1){}; 
    \node[point=blue!70] (Y) at (4.8, 1.4){}; 
    \node[point=blue!70] (Y) at (4.4, 0.6){}; 
    \node[point=blue!70] (Y) at (5.1, 0.7){}; 
    
    %Lineare - Underfitting
    \draw[thick, red] (0,5.5) node[left] {} -- (5.5,1.5);
    
    % Text
    \node at (1.1,0.3) {Klasse 0};
    \node at (4.3, 5.4) {Klasse 1};
    
    \node at (1.4,-0.5) {\textbf{Underfitting}};
    
\end{tikzpicture}
\hspace{1cm}% NO SPACE!
\begin{tikzpicture}[scale=0.8,cross/.style={draw, cross out,
  minimum size=2*(#1-1pt), inner sep=0pt, outer sep=0pt}]
    % Achsen zeichnen
   \draw[->,thick] (0,0) -- (5.5,0) node[right] {}; %{$x$}
   \draw[->,thick] (0,0) -- (0,5.5) node[above] {}; %{$y$}

   %Punkte einzeichnen:
    %Gelbe Punkte
    \node[point=yellow] (Y) at (3, 3){}; 
    \node[point=yellow] (Y) at (3.5, 2.5){}; 
    \node[point=yellow] (Y) at (4.2, 3.3){}; 
    \node[point=yellow] (Y) at (4.8, 4){}; 
    \node[point=yellow] (Y) at (5, 4.7){}; 
    \node[point=yellow] (Y) at (3.7, 4.7){}; 
    \node[point=yellow] (Y) at (3.7, 4.0){}; 
    \node[point=yellow] (Y) at (2.7, 5){}; 
    \node[point=yellow] (Y) at (2.5, 4.2){}; 
    \node[point=yellow] (Y) at (4.3, 4.9){}; 
    \node[point=yellow] (Y) at (3.7, 1.9){}; 
    \node[point=yellow] (Y) at (5.1, 3.3){}; 
    \node[point=yellow] (Y) at (2.7, 2){}; 
    \node[point=yellow] (Y) at (4.2, 2.5){}; 
    \node[point=yellow] (Y) at (4.9, 2.2){};    
    
    %Ausreißer gelb
    \node[point=yellow] (Y) at (1.8, 4.3){}; 
    
    %Ausreißer blau
    \node[point=blue!70] (Y) at (2.7, 3.6){}; 
    
    %Blaue Punkte
    \node[point=blue!70] (Y) at (1, 2){}; 
    \node[point=blue!70] (Y) at (0.8, 3){}; 
    \node[point=blue!70] (Y) at (1.4, 3.6){}; 
    \node[point=blue!70] (Y) at (1.7, 5){}; 
    \node[point=blue!70] (Y) at (1, 4.5){}; 
    \node[point=blue!70] (Y) at (0.4, 4.9){}; 
    \node[point=blue!70] (Y) at (0.7, 3.7){}; 
    \node[point=blue!70] (Y) at (2, 3.2){}; 
    \node[point=blue!70] (Y) at (1.9, 2.5){}; 
    \node[point=blue!70] (Y) at (2.3, 1.3){}; 
    \node[point=blue!70] (Y) at (1.3, 0.9){}; 
    \node[point=blue!70] (Y) at (0.4, 0.9){}; 
    \node[point=blue!70] (Y) at (2.4, 0.4){}; 
    \node[point=blue!70] (Y) at (0.5, 1.5){}; 
    \node[point=blue!70] (Y) at (1.7, 1.6){}; 
    \node[point=blue!70] (Y) at (3, 0.9){}; 
    \node[point=blue!70] (Y) at (3.9, 1.1){}; 
    \node[point=blue!70] (Y) at (4.8, 1.4){}; 
    \node[point=blue!70] (Y) at (4.4, 0.6){}; 
    \node[point=blue!70] (Y) at (5.1, 0.7){}; 
    
    % Text
    \node at (1.1,0.3) {Klasse 0};
    \node at (4.3, 5.4) {Klasse 1};
    
    \node at (0.6,-0.5) {\textbf{Ziel}};
    
\end{tikzpicture}
\hspace{1cm}% NO SPACE!
\begin{tikzpicture}[scale=0.8,cross/.style={draw, cross out,
  minimum size=2*(#1-1pt), inner sep=0pt, outer sep=0pt}]
    % Achsen zeichnen
   \draw[->,thick] (0,0) -- (5.5,0) node[right] {}; %{$x$}
   \draw[->,thick] (0,0) -- (0,5.5) node[above] {}; %{$y$}

   %Punkte einzeichnen:
    %Gelbe Punkte
    \node[point=yellow] (Y) at (3, 3){}; 
    \node[point=yellow] (Y) at (3.5, 2.5){}; 
    \node[point=yellow] (Y) at (4.2, 3.3){}; 
    \node[point=yellow] (Y) at (4.8, 4){}; 
    \node[point=yellow] (Y) at (5, 4.7){}; 
    \node[point=yellow] (Y) at (3.7, 4.7){}; 
    \node[point=yellow] (Y) at (3.7, 4.0){}; 
    \node[point=yellow] (Y) at (2.7, 5){}; 
    \node[point=yellow] (Y) at (2.5, 4.2){}; 
    \node[point=yellow] (Y) at (4.3, 4.9){}; 
    \node[point=yellow] (Y) at (3.7, 1.9){}; 
    \node[point=yellow] (Y) at (5.1, 3.3){}; 
    \node[point=yellow] (Y) at (2.7, 2){}; 
    \node[point=yellow] (Y) at (4.2, 2.5){}; 
    \node[point=yellow] (Y) at (4.9, 2.2){};    
    
    %Ausreißer gelb
    \node[point=yellow] (Y) at (1.8, 4.3){}; 
    
    %Ausreißer blau
    \node[point=blue!70] (Y) at (2.7, 3.6){}; 
    
    %Blaue Punkte
    \node[point=blue!70] (Y) at (1, 2){}; 
    \node[point=blue!70] (Y) at (0.8, 3){}; 
    \node[point=blue!70] (Y) at (1.4, 3.6){}; 
    \node[point=blue!70] (Y) at (1.7, 5){}; 
    \node[point=blue!70] (Y) at (1, 4.5){}; 
    \node[point=blue!70] (Y) at (0.4, 4.9){}; 
    \node[point=blue!70] (Y) at (0.7, 3.7){}; 
    \node[point=blue!70] (Y) at (2, 3.2){}; 
    \node[point=blue!70] (Y) at (1.9, 2.5){}; 
    \node[point=blue!70] (Y) at (2.3, 1.3){}; 
    \node[point=blue!70] (Y) at (1.3, 0.9){}; 
    \node[point=blue!70] (Y) at (0.4, 0.9){}; 
    \node[point=blue!70] (Y) at (2.4, 0.4){}; 
    \node[point=blue!70] (Y) at (0.5, 1.5){}; 
    \node[point=blue!70] (Y) at (1.7, 1.6){}; 
    \node[point=blue!70] (Y) at (3, 0.9){}; 
    \node[point=blue!70] (Y) at (3.9, 1.1){}; 
    \node[point=blue!70] (Y) at (4.8, 1.4){}; 
    \node[point=blue!70] (Y) at (4.4, 0.6){}; 
    \node[point=blue!70] (Y) at (5.1, 0.7){}; 
    
    % Text
    \node at (1.1,0.3) {Klasse 0};
    \node at (4.3, 5.4) {Klasse 1};
    
    \node at (1.4,-0.5) {\textbf{Overfitting}};
\end{tikzpicture}



\end{document}

Dateianhänge
overfitting_2.png
Zuletzt geändert von lina_24642 am So 17. Jul 2022, 12:05, insgesamt 5-mal geändert.

gast.

Re: Over- und Underfitting in LaTeX darstellen

Beitrag von gast. »

Overleaf erzeugt oft trotz Fehler ein Ergebnis. Du solltest dort deshalb nicht nur kontrollieren, ob ein Ergebnis angezeigt wird, sondern auch, ob rechts oben(?) bzw. im Log ein Fehler angezeigt wird. Jedenfalls ist bei dir Zeile 30:
    \node[point=yellow] (Y) at (5, 4.{}; 
fehlerhaft. Da fehlt eindeutig eine schließende runde Klammer. Da es diverse weitere, solche Fehler gibt, die alle vermeidbar sind, habe ich irgendwann aufgehört, mich weiter mit der Frage zu beschäftigen. Solche leicht vermeidbaren Fehler zu beseitigen, kann nicht die Aufgabe der Helfer sein.

lina_24642
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mo 18. Apr 2022, 05:56

Re: Over- und Underfitting in LaTeX darstellen

Beitrag von lina_24642 »

Hallo gast,

trotzdem danke für den Kommentar! Die von die angesprochenen Fehler sind wenn ich meinen Beitrag bearbeite nicht vorhanden und in dem von mir eingegeben Code sind alle Klammern da (siehe Screenshot). Ich weiß nicht, warum dies nicht auch angezeigt wird.

Vielleicht kann mir ja doch noch jemand weiterhelfen - der Code funktioniert nun auch in der Ausgabe hier!
Dateianhänge
Bildschirmfoto 2022-07-17 um 11.47.42.png

gast.

Re: Over- und Underfitting in LaTeX darstellen

Beitrag von gast. »

lina_24642 hat geschrieben:
So 17. Jul 2022, 10:27
Kann mir außerdem jemand sagen, wie ich die drei Grafiken zwar nebeneinander habe, aber dafür linksbündig mit der ersten startend?
Zumindest das kann ich dir schon einmal beantworten. Um den Absatzeinzug vor der ersten Abbildung weg zu bekommen, musst diesen entweder mit \noindent entfernen oder eine flushleft-Umgebung oder den Umschalter \raggedright verwenden. Letzteres ist vor allem zu empfehlen, falls du die Abbildungen in eine figure-Umgebung packst. Allerdings sind die drei Abbildungen nebeneinander schlich breiter als der Textbereich. Also musst du sie zusätzlich weiter verkleinern oder mit \resizebox{\textwidth}{!}{…} (siehe grfguide) alles auf die Breite des Textbereichs verkleinern.

Die Linien für die Fittings könntest du natürlich als \path oder ggf. auch per \draw etc. erzeugen. Aber das ist vermutlich nicht, was du suchst. Ich nehme an, du hättest das gerne irgendwie automatisiert. Da übersteigt leider meine Fähigkeiten.

lina_24642
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mo 18. Apr 2022, 05:56

Re: Over- und Underfitting in LaTeX darstellen

Beitrag von lina_24642 »

Vielen Dank!
gast. hat geschrieben:
So 17. Jul 2022, 12:22
lina_24642 hat geschrieben:
So 17. Jul 2022, 10:27
Kann mir außerdem jemand sagen, wie ich die drei Grafiken zwar nebeneinander habe, aber dafür linksbündig mit der ersten startend?
Zumindest das kann ich dir schon einmal beantworten. Um den Absatzeinzug vor der ersten Abbildung weg zu bekommen, musst diesen entweder mit \noindent entfernen oder eine flushleft-Umgebung oder den Umschalter \raggedright verwenden. Letzteres ist vor allem zu empfehlen, falls du die Abbildungen in eine figure-Umgebung packst. Allerdings sind die drei Abbildungen nebeneinander schlich breiter als der Textbereich. Also musst du sie zusätzlich weiter verkleinern oder mit \resizebox{\textwidth}{!}{…} (siehe grfguide) alles auf die Breite des Textbereichs verkleinern.

Die Linien für die Fittings könntest du natürlich als \path oder ggf. auch per \draw etc. erzeugen. Aber das ist vermutlich nicht, was du suchst. Ich nehme an, du hättest das gerne irgendwie automatisiert. Da übersteigt leider meine Fähigkeiten.

Antworten