Diverse Apps DQR5 KI

Allgemeine Tools
🔥 https://iludis.de/Tools/markdown-ansicht.html
Formatiert .md-Dateien zur besseren Lesbarkeit + Speichern

🔥 https://iludis.de/Mistralchat/Chat_App.html
Webbasiertes LLM-Chat-Interface


KI-Theorie & Mathematik
🔥 https://iludis.de/Tools/approximationstheorem.html
Visualsierung des fundamentalen Approximationstheorems

🔥 https://iludis.de/Tools/bias_varianz_simulator.html
Viele-Welten-Ansatz des Bias-Variance-Tradeoffs

https://iludis.de/Tools/visualisierung_layer.html
Visualisierung von Lernverhalten Neuronaler Netze

CNN Grayscale Trainer

https://iludis.de/CNN_sim/CNN_sim.html

Datensätze:

https://iludis.de/CNN_sim/digits_1_3_5_7.csv

https://iludis.de/CNN_sim/digits_2_4_6_8.csv

https://iludis.de/CNN_sim/mnist_train_800.csv


CNN-Theorie
https://iludis.de/Tools/cnn-labor-Teil1_faltung.html
Grundlagen des Faltungskernels

https://iludis.de/Tools/cnn-labor-Teil2_pipeline.html
Visualisierung der CNN-Pipeline

Conv2D-Parameter-Explorer
Wie setzen sich CNN-Netze zusammen?

Berechnung trainierbare Parameter
Interaktive Simulation der Parameteranzahl für CNN-Netze

Visualisierung Rezeptives Feld
Was sieht ein CNN-Netz und wie berechnet man das?

Materialien LISA

Einführung in KI im Unterricht
01_Lernen_ist_Beziehung_Rollenwandel_KI_Zeitalter
02_ContextEngineering_Leitfaden
03_Behoerden_LLM_vs_Original
04_KI_Unterricht_WasGeht_WasNicht

Richtlinien für KI im Unterricht
01_KI_Unterricht_GoldeneRegeln
02_KI_BildungInternational

Unterrichtsentwürfe für KI im Unterricht
03_UIdeeKI_Deutschunterricht
04_UIdeeKI_Englisch_Sz31_TwoBirds
05_UIdeeKI_Englisch_Sz318_Ashes
06_UIdeeKI_Ethik_Demokratie
07_UIdeeKI_Gemeinschaftskunde
08_UIdeeKI_Grundschule

Chatbots, Datenschutzkonform:
https://iludis.de/Mistralchat/index.html
Dafür benötigt man einen API-Key von Mistral.


Download Offline Dateien für USB-Stick

DecisionTree Apps


Training eines einfachen Decision Trees
https://iludis.de/DecTree/indexNeu.html

Beispieldateien als CSV:
TasseStiftSchereAutosApfelBirneOrange

Nützliche Datenaufbereitungs-App:
https://iludis.de/Mistralchat/CSV-Aufbereitung.html


https://iludis.de/DecTree/bagging_demo_iris.html
Visualisierung des Bagging-Algorithmus bei Random Forests

https://iludis.de/DecTree/boosting_demo_regression.html
Gradient Boosting verstehen: Interaktive Simulation des Konzepts

https://iludis.de/DecTree/pruning_demo_ccp.html
Pre- und Post-Pruning von Decision Trees als interaktive Simulation

Denken wie ein CNN: Conv2D & MaxPool

Unterrichtsidee für den Unterricht
Erprobt im Hector-Unterricht Kurs ‚ML für Mikrocontroller‘ und Inf-AG.

1. Bitmap erstellen
Klicke auf die schwarze Fläche und erstelle ein Bitmap
in Form einer 1D-Liste. Diese kann in die Zwischenablage
kopiert werden.

2. Jupyter-Notebook für Bitmaps aus 1D-Arrays
Aus den obigen Bitmaps mit numpy und OpenCV
einfach Bitmaps erstellen:
https://iludis.de/bitmapMaker/Simple_Bitmaps.ipynb

3. Grayscale-Bitmap im MNIST-Format erstellen.
Erstelle ein 255-Graustufen-Bild mit 28×28 Pixeln,
exportiere dessen Werte per Knopfdruck in die
Zwischenablage und füge sie ins Conv2D-Applet ein:

4. Optimale Convolution-Kernel entwickeln.
Wie in einem CNN: Teste verschiedene Convolution
Kernel aus, berechne ein MaxPooling(2,2) und finde
heraus, welche Pixelmuster man so bestimmen kann.

KI-Algorithmen: Demos in Javascript

1. Linear Regression
(ML-Algorithm using Batch Gradient Descent)

https://iludis.de/LinearRegression/index.html


2. kNN (k-nearest-neighbour)

https://iludis.de/kNNDemo/index.html


3. SVM (Hard-Margin Support Vector Machine)

https://iludis.de/svmDemo/index.html


4. NeuralNet-Dinosaur: Perceptron with SGD

https://iludis.de/Perceptron/index.html


5. k-Means-Clustering

https://iludis.de/kMeansClustering/index.html

6. no-AI, but helper-App:
generate points for export

https://iludis.de/pointgenerator/index.html

Inf4Stünder Abitraining, Teil 1

Übungsaufgabe in Java: Baue eine App zur Sortierung von Arrays

0. Schaut euch diese Aufgaben an, sie ähneln denjenigen auf SoloLearn:
https://www.w3schools.com/java/java_exercises.asp

  1. Erstelle (mit UML) ein kleines Klassensystem aus maximal drei Klassen. Tools dazu:
    Online UML-Editor von VisualParadigm:
    https://online.visual-paradigm.com/drive/#diagramlist:proj=0&new=ClassDiagram

    DrawIO, haben wir auch für die ER-Diagramme verwendet, kann Class-Diagramme:
    https://app.diagrams.net/

    oder per Modelio, wie im Unterricht:
    https://www.modelio.org/downloads/download-modelio.html

  2. Baue die App in einer IDE deiner Wahl nach. Tool dazu:
    Online-Java-Compiler: repl.it
    (hier lassen sich verschiedene Klassen anlegen und referenzieren! Sehr hübsch)

    Oder IntelliJ, wie im Unterricht:
    https://www.jetbrains.com/de-de/idea/download/other.html

  3. Erzeuge ein Array mit 20 Zufallszahlen
  4. Sortiere die Liste mittels BubbleSort oder SelectionSort oder Quicksort
  5. Gib die sortierte Liste aus.

 

Zum Ausprobieren, ob die IDE funktioniert, wie sie soll, hier ein kleines Klassensystem
aus drei Klassen, erstellt in Repl.it:

class Main {
  private subclass[] subclassarray =  new subclass[10];
  public static void main(String[] args) {
    System.out.println("Ein Array von Subklassen");
    subclassholder SuClHo = new subclassholder(10);
  }
}
public class subclass{
  private int parameter;
  public subclass(int x){
    System.out.println("Parameter: " + x);
    this.parameter = x;
  }
  public int getParameter(){
    return this.parameter;
  }
  public void setParameter(int y){
    this.parameter = y;
  }
}
public class subclassholder{
  private subclass[] subclassarray;
  public subclassholder(int anzahl){
    subclassarray = new subclass[anzahl];
    for(int i=0; i<anzahl; i++){
      subclassarray[i] = new subclass(i*10);
    }
  }
}

Zusatzaufgabe: Was macht dieser Code und wieso? 😉

Kellerautomat in Python

L(PDA) = {anbn | n>0}

class Stack:
    def __init__(self):
        self.stackliste = []
        self.stacklistenlaenge = 0

    def pop(self):
        if self.istLeer() == False:
            self.stacklistenlaenge = self.stacklistenlaenge - 1
            return self.stackliste.pop()

    def peek(self):
        if self.istLeer() == False:
            return self.stackliste[self.stacklistenlaenge - 1]

    def push(self, inhalt):
        self.stackliste.append(inhalt)
        self.stacklistenlaenge = self.stacklistenlaenge + 1

    def getStacklistenlaenge(self):
        return self.stacklistenlaenge

    def istLeer(self):
        if self.stacklistenlaenge <= 0:
            return True
        else:
            return False
#---------------------------------------------------
def Zustandsuebergangsfunktion(symbol):
    global state
    if state == "q0":
        if symbol == "a":
            state = "q1"
            pdaStack.pop()
            pdaStack.push("Z")
            pdaStack.push("P")
            return True
        else:
            return False
    if state == "q1":
        if symbol == "a":
            pdaStack.pop()
            pdaStack.push("P")
            pdaStack.push("P")
            state = "q1"
            return True
        elif symbol == "b":
            pdaStack.pop()
            state = "q2"
            return True
        else:
            return False
    if state == "q2":
        if symbol == "b":
            if pdaStack.peek() == "P":
                state = "q2"
                pdaStack.pop()
                if pdaStack.peek() == "Z":
                    state = "q3"
                return True
        else:
            return False
    if state == "q3":
        if pdaStack.peek() == "Z":
            pdaStack.pop()
            return True
        else:
            return False
#---------------------------------------------------
def Akzeptor(wort):
    global state
    for i in range(len(wort)):
        testsymbol = wort[i]
        aktzustand = Zustandsuebergangsfunktion(testsymbol)
        print("Zustand:     ", state, "\tAktueller Stack:  ", pdaStack.stackliste)
        if aktzustand == False:
            return False
    if pdaStack.peek() == "Z" and state == "q3":
        return True
    else:
        return False
#---------------------------------------------------

pdaStack = Stack()
pdaStack.push("Z")
state = "q0"
print("Startzustand:", state, "\tLeerzustand Stack:", pdaStack.stackliste)

ergebnis = Akzeptor("aaaaabbbbb")
print("---------\nAkzeptiert?",    ergebnis)

 

Musterlösung Haha-Automat (Akzeptor)

L(DEA) ={(ha)n! | n>0)

state = "q0"
def Zustandsuebergangsfunktion(symbol):
    global state
    if state == "q0":
        if symbol=="h":
            state = "q1"
            return True
        else:
            return False
    if state == "q1":
        if symbol=="a":
            state = "q2"
            return True
        else:
            return False
    if state == "q2":
        if symbol=="!":
            state = "q3"
            return True
        elif symbol =="h":
            state = "q1"
            return True
        else:
            return False
    if state == "q3":
        return False

def Akzeptor(wort):
    global state
    for i in range(len(wort)):
        testsymbol = wort[i]
        aktzustand = Zustandsuebergangsfunktion(testsymbol)
        if aktzustand == False:
            print("war nix")
            return False
    if state == "q3":
        print("stimmt!")
        return True

ergebnis = Akzeptor("hahahaha!")
print(ergebnis)