Informatik

1.140 Mitglieder, 5.051 Beiträge

Wie erstellt man in Python einen Plot der die Regressionsgerade einer multiplen linearen Regression darstellt?

Moin, ich bin gerade dabei die explainable AI Methode LIME selber zu implementieren und habe habe gerade ein Problem damit die Ergebnisse darzustellen. Kurz zu meinem Vorgehen: ich habe ein neuronales Netz auf einem Datensatz mit 4 Variablen trainiert: Temperatur, Luftfeuchtigkeit, Windgeschwindigkeit und ob die Anzahl der geliehenen Fahrräder an einem Tag über oder unter dem Durchschnitt liegen wird (Klassifikationsproblem) Dann habe ich Samples der Daten aus einer Normalverteilung gezogen und diese mit dem LIME Kernel gewichtet, wobei hier die Nähe zu dem Datenpunkt, der erklärt werden soll, eine Rolle spielt Anschließen habe ich die Samples mit dem ML Model klassifiziert Danach habe ich eine multiple gewichtete Lineare Regression mit den Samples, deren Gewichten und deren Klassifikation gefittet, wobei ich das feature Windgeschwindigkeit rausgeschmissen hab, damit man die Ergebnisse gut in einem Plot darstellen kann Mein Plot sieht folgendermaßen aus: Temperatur auf der X Achse, Luftfeuchtigkeit auf der Y Achse und die Farben der Punkte stellt deren Klassifikation dar -> Wie kann ich nun die Regressionsgerade in den Plot einzeichnen um die Entscheidungsgrenze darzustellen ? (Ich benutze Matplotlib)

Java Programm Gleichungssytem 3. Grades/Cramersche Regel?

Hallo, ich habe ein Programm erstellt, dass mithilfe der Cramerschen Regel ein Gleichungssytem 3. Grades löst (siehe unten) Nur kommt bei dem Ergebnis immer x1=0.0, x2=0.0 und x3=0.0 raus, egal was man eingibt. Ich finde den Fehler einfach nicht, kann mir da bitte jemand weiterhelfen? LG import java.util.*; public class gs3 { public static void main(String[] args) { Scanner ein = new Scanner(System.in); System.out.println("Geben Sie den Koeffizienten des Gleichungssystems ein:"); double[][] m = new double[3][4]; for (int i = 0; i < 3; i++) { System.out.println("Gleichung " + (i + 1) + ":"); for (int j = 0; j < 3; j++) { System.out.println("Koeffizient x" + (j + 1) + ":"); m[i][j] = ein.nextDouble(); } System.out.println("Rechte Seite: "); m[i][3] = ein.nextDouble(); } double determinanteA = calculateDeterminant(m); if (determinanteA == 0) { System.out.println("Gleichungssystem nicht lösbar."); } else { double[] ergebnis = new double[3]; for (int i = 0; i < 3; i++) { double[][] modifiedM = modifyM(m, i); double determinantModified = calculateDeterminant(modifiedM); ergebnis[i] = determinantModified / determinanteA; } System.out.println("Lösung: x1 = " + ergebnis[0] + ", x2 = " + ergebnis[1] + ", x3 = " + ergebnis[2]); } ein.close(); } private static double calculateDeterminant(double[][] m) { double determinante = 0.0; determinante = m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]) - m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) + m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]); return determinante; } private static double[][] modifyM(double[][] m, int column) { double[][] modifiedM = new double[3][3]; for (int i = 0; i < 3; i++) { for (int j = 0, k = 0; j < 3; j++) { if (j != column) { modifiedM[i][k++] = m[i][j]; } } } return modifiedM; } }

Pumping Lemma kontextfreie Sprachen Typ2?

m >= 1, d. h. das kürzeste Wort in der Sprache hat die Länge 3m bzw. |z| = 3n > = n D. h. wenn mein n = 1 ist, dann hat mein Wort die Länge 3. Jetzt muss ich eine Aufteilung von |vwx| wählen, dass gilt |vwx| <= n und dann beim pumpen das Wort Teil meiner Sprache bleibt. |vwx| <= 1 geht nicht. Macht keinen Sinn, ich muss ja a und b und c einzeln pumpen. a,b,c hat mindestens die Länge 3. Somit macht n = 1 keinen Sinn. n = 2 geht auch nicht. Ich muss mindestens n = 3 wählen. Also z = aaabbbccc nun muss ich |vwx| <= 3 wählen, d. h. ich kann nur 2 von den 3 Symbolen (einzeln) pumpen. ab und c oder a und bc , das macht keinen Sinn. Fazit: Man müsste a b c separat ( einzeln ) pumpen, damit das erzeugte Wort Teil meiner Sprache bleibt, dies ist hier aber nicht möglich egal wie man v und x wählt. Langt dies als Begründung, oder wie argumentiert man hier am besten? |z| = 2n >=n das kürzeste Wort hat die Länge 2 somit hat auch mein n mindestens die Länge 2. Wieder muss ich |vwx| so wählen, dass gilt |vwx| <n und beim pumpen dann das Wort Teil meiner Sprache bleibt. Wie wähle ich nun hier u, v, w, x, y?
Bild zum Beitrag

kennt exactly 2, VENUS und MARS?

(1) Class: AntikeGottheit (2) Class: Olympier (3) SubClassOf: AntikeGottheit (4) Class: Freundlich (5) ObjectProperty: kennt (6) Domain: AntikeGottheit (7) Range: Thing (8) Characteristics: Reflexive (9) Individual: Venus (10) Types: AntikeGottheit (11) Facts: kennt Zeus (12) kennt Jupiter (13) Individual: Mars (14) Types: AntikeGottheit (15) Facts: kennt Jupiter (16) Individual: Zeus (17) Types: Olympier, (18) Freundlich (19) Individual: Jupiter (20) Types: AntikeGottheit, Freundlich (21) Individual: Aphrodite (22) Types: Freundlich (23) Facts: kennt Mars hi :) das thema hierbei sind Ontologien und es gilt herauszufinden, wer genau 2 individuen kennt. In der Musterlösung steht, dass KEINER der Planeten genau 2 INDIVIDUEN kennt... ich kann es mir für die letzten 3 erklären, aber bei VENUS und MARS habe ich keinen blassen Schimmer, wie ich das interpretieren soll, weil VENUS kennt Zeus und Jupiter und aufgrund der Reflexiv Eigenschaft auch sich selbst, somit eigentlich 3 Individuen, also wäre hier die Antwort Nein normalerweise.. aber wenn ich diesen Prozess der Reflexivität auch auf MARS anwende, der auch AntikeGottheit ist kennt dieser neben Jupiter auch sich selbst, womit er 2 Individuen kennt, und das bedeutet er kennt GENAU 2 Individuen.. somit müsste die Antwort eigentlich Richtig lauten oder übersehe ich hier etwas, ich bitte um Info!

Weg zur Chomskey Normalform?

Wo sind hier die Profis in theoretische Informatik? 1 Schritt: Nicht-Terminale erzeugen. Klar! 2 Schritt: Nicht-Terminale Länge >= 3 durch Einführung neues Nicht-Terminal umformen. Klar! 3 Schritte Kettenregeln beseitigen: Klar! 4 Schritt auf CNF bringen: Soweit nachvollziehbar allerdings verstehe ich nicht, wo/wie in grün markiert das AA entsteht, ebenso wie/wo das gelbe V(b) A herkommt? Kann mir hier bitte jemand weiterhelfen. MFG
Bild zum Beitrag

Wie viele verschiedene Graustufen kann es bei einer PGM-Datei geben?

Wie viele verschiedene Graustufen kann es bei einer PGM-Datei geben? Ich habe mich gefragt wie viele verschiedene Graustufen es in einer PGM-Datei geben kann. Ich weiß bereits, dass man nach der Größe der "Leinwand" die Anzahl der verschiedenen Grautöne angeben kann. Dabei habe ich mich nun gefragt ob es dabei auch eine besonders hohe Zahl gibt, da dabei erreicht werden kann (wie z.B. bei einer PPM-Datei die 255)

welche Werte bei huggingface.co Performance?

ich befasse mich gerade mit open source Modellen. Dabei habe ich die Tabellen gefunden welche auf die Performance eingehen. Meine Frage ist jetzt, falls sich jemand damit auskennt. Was sind das für Werte. sind das Prozente, wie viel das in diesem gebiet richtig gemacht hat? Was genau sind das für Modelle? werden diese immer bei Performance benutzt? Das Modell in diesem Falle für Text Generation gedacht.
Bild zum Beitrag

Funktionierender 4 Bit Volladdiere in C?

Ich hab eine Aufgabe erhalten und sitze daran schon eine ganze weile: Aufgabe 3: 4-Bit-Volladdierer Schreiben Sie ein C-Programm, das die Funktionalität eines 4-Bit-Volladdierers simuliert. Ein Nutzer gibt zwei Zahlen a und b ein, die jeweils im Bereich von 0 bis 15 liegen müssen. Liegt eine Zahl außerhalb dieses Bereichs, bricht das Programm mit einer Fehlermeldung ab. Die beiden Zahlen werden binär addiert, wobei für jede Stelle der verwendete Übertrag angezeigt werden muss. Das Ergebnis darf mit 5 Bit ausgegeben werden. Eine Beispielausgabe des Programms kann z.B. wie folgt aussehen: Enter first number from 0 to 15: 7 Enter second number from 0 to 15: 12 00111 (x) + 01100 (y) c 11000 (Übertrag) ------------------- 10011 (x + y) Hinweis: Bei dieser Aufgabe bietet es sich an, mit binären Operatoren zu arbeiten. Mein Programm dafür war erstmal wie folgt. Dabei Handelt es sich um die Programmiersprache C : Ich hab es auch schon mit Bitweise Operatoren versucht komme aber nicht weiter. Mir wurde gesagt, man könne mit >> und << Operatoren diese Aufgabe lösen #include <stdio.h> // Funktion zur Ausgabe der Binärdarstellung einer Zahl void printBinary(int num, int bits) { for (int i = bits - 1; i >= 0; i--) { printf("%d", (num >> i) & 1); } } int main() { // Benutzereingabe für die beiden 4-Bit-Zahlen int a, b; printf("\n"); printf("\n"); // Eingabe für die erste Zahl printf(" Tippe deine erste Zahl zwischen 0 und 15 ein: "); scanf("%d", &a); // Überprüfung der Gültigkeit der Eingabe if (a < 0 || a > 15) { printf("Error: Zahl liegt nicht zwischen 0 und 15\n"); printf(" Programm beendet...\n"); return 1; // Programm mit Fehlercode beenden } // Eingabe für die zweite Zahl printf("Tippe deine zweite Zahl zwischen 0 und 15 ein "); scanf("%d", &b); // Überprüfung der Gültigkeit der Eingabe if (b < 0 || b > 15) { printf("Error: Zahl liegt nicht zwischen 0 und 15\n"); printf(" Programm beendet...\n"); return 1; // Programm mit Fehlercode beenden } printf("\n"); // Berechnung des 4-Bit-Volladdierers int summe = a + b; int uebertrag = (a & b) << 1; // Ausgabe des Ergebnisses im binären Format printf(" "); printBinary(a, 5); printf(" (x)\n"); printf("+ "); printBinary(b, 5); printf(" (y)\n"); printf("U "); printBinary(uebertrag, 5); printf(" (Uebertrag)\n"); printf("-------------------\n"); printf("+ "); printBinary(summe, 5); printf(" (x + y)\n"); return 0; // Programm erfolgreich beenden }