HerrKI mit seinem RoboterHerrKI KI verstehen · nachbauen · anwenden ⭐ 0 XP

Excel/CSV → Tensoren

Tabellendaten in Tensoren umwandeln: Input-Features, Output-Labels, Normalisierung.

👋 Hi! HerrKI hier - heute erkläre ich dir Excel & CSV-Daten!

Stell dir vor: Du hast eine Excel-Tabelle mit hunderten Zeilen - Verkaufszahlen, Wetter-Daten, Schülernoten. Wie bringst du diese Tabellen ins neuronale Netz? Genau - als Tensor!

Heute lernst du, wie Tabellendaten in Tensoren umgewandelt werden. Das ist super wichtig, denn die meisten echten Daten kommen als CSV oder Excel: Börsenkurse, Sensordaten, Kundenlisten - alles Tabellen! Und eine Tabelle kennst du schon aus Kapitel „Was sind Tensoren?": das ist eine Matrix (Rank 2) - jetzt mit echten Daten.

🎯 Was du hier lernst:
  • ✅ Wie Zeilen und Spalten zu 2D-Tensoren werden
  • ✅ Was sind Features (Eingabe) und Labels (Ausgabe)?
  • ✅ Warum Normalisierung wichtig ist (Zahlen auf 0-1 bringen)
  • ✅ Wie du CSV-Dateien in TensorFlow.js einliest

Praxis-Beispiel: Du hast Daten von Wohnungen (Quadratmeter, Zimmer, Baujahr) und willst den Preis vorhersagen. Wie macht man das? Jede Spalte wird zu einem Feature, jede Zeile zu einem Trainingsbeispiel - fertig ist der Tensor! 🏠📊

💡 HerrKI-Tipp: Excel/CSV = 2D-Tensoren! Zeilen = Beispiele, Spalten = Features. Eine Tabelle mit 100 Zeilen × 5 Spalten = Tensor mit Shape [100, 5]. Einfach, oder? 📈

🎥 Video-Erklärung von HerrKI

Schau dir dieses Video an, um CSV/Excel-Daten als Tensoren noch besser zu verstehen:

📋 Beispiel: Pflanzenwachstums-Daten aus Excel

Stell dir vor, du hast über mehrere Wochen Daten über das Wachstum deiner Pflanzen gesammelt. Du hast drei Faktoren gemessen und möchtest jetzt vorhersagen, wie stark eine Pflanze wächst!

💡 Die Fragestellung:

Gegeben: Wassermenge, Sonnenstunden, Temperatur
Gesucht: Wie viel wächst die Pflanze? (in cm pro Woche)

Deine Excel-Tabelle:

💧 Wasser (ml/Tag) ☀️ Sonne (h/Tag) 🌡️ Temp (°C) 📈 Wachstum (cm/Woche)
100 6 22 5.2
150 8 24 7.8
80 4 20 3.5
200 7 23 8.9
120 5 21 6.1

🔍 Struktur der Daten:

  • Input-Features (X): Die ersten 3 Spalten - das sind unsere Messungen
  • Output-Label (Y): Die letzte Spalte - das ist, was wir vorhersagen wollen
  • Zeilen: Jede Zeile ist ein Trainingsbeispiel (eine Messung)

🔄 Schritt-für-Schritt: Von Excel zu Tensoren

1️⃣ Input-Features (X) trennen

Wähle alle Spalten aus, die als Eingabe dienen sollen:

// 5 Beispiele (Zeilen), 3 Features (Spalten)
const inputData = [
  [100, 6, 22], // Beispiel 1
  [150, 8, 24], // Beispiel 2
  [80, 4, 20], // Beispiel 3
  [200, 7, 23], // Beispiel 4
  [120, 5, 21] // Beispiel 5
];

Input-Tensor Shape: [5, 3]

5 Trainingsbeispiele × 3 Features

2️⃣ Output-Labels (Y) trennen

Die Werte, die du vorhersagen möchtest:

// 5 Beispiele (Zeilen), 1 Output
const outputData = [
  5.2, // Wachstum für Beispiel 1
  7.8, // Wachstum für Beispiel 2
  3.5, // Wachstum für Beispiel 3
  8.9, // Wachstum für Beispiel 4
  6.1 // Wachstum für Beispiel 5
];

Output-Tensor Shape: [5, 1]

5 Trainingsbeispiele × 1 Zielwert

3️⃣ In TensorFlow.js-Tensoren umwandeln

Jetzt erstellen wir die Tensoren für das Training:

// Input-Tensor erstellen
const inputTensor = tf.tensor2d(inputData);
// Shape: [5, 3]

// Output-Tensor erstellen
const outputTensor = tf.tensor2d(outputData, [5, 1]);
// Shape: [5, 1]

// Jetzt kann das neuronale Netz trainiert werden!
await model.fit(inputTensor, outputTensor, {
  epochs: 100,
  batchSize: 2
});

⚠️ Wichtig: Daten-Normalisierung

🤔 Warum Normalisierung?

Schau dir die Werte an: Wasser (100-200), Sonne (4-8), Temperatur (20-24). Die Bereiche sind unterschiedlich!

(Erinnerst du dich an den Kasten in Kapitel 010? Der Tensor selbst darf jede Zahl enthalten — die Normalisierung ist der Trainings-Trick, der jetzt drankommt. Die ganz ausführliche Fassung mit eigenem Experiment findest du in „Alles auf eine Skala".)

❌ Ohne Normalisierung:
  • Wasser: 100-200 (große Zahlen)
  • Sonne: 4-8 (kleine Zahlen)
  • Temp: 20-24 (mittlere Zahlen)

→ Das Netz "denkt", Wasser ist viel wichtiger, nur weil die Zahlen größer sind!

✅ Mit Normalisierung:
  • Wasser: 0.0 - 1.0
  • Sonne: 0.0 - 1.0
  • Temp: 0.0 - 1.0

→ Alle Features sind gleichwertig! Das Netz kann besser lernen.

🔧 Wie normalisiert man?

Methode 1: Min-Max Normalisierung (0-1)

normalized = (value - min) / (max - min)

Beispiel Wasser: (150 - 80) / (200 - 80) = 70 / 120 = 0.583

Methode 2: Z-Score Normalisierung (Standard)

normalized = (value - mean) / standardDeviation

→ Werte haben Mittelwert 0 und Standardabweichung 1

💻 TensorFlow.js Code:

// Min-Max Normalisierung
function normalizeData(tensor) {
  const min = tensor.min();
  const max = tensor.max();
  
  // (value - min) / (max - min)
  const normalized = tensor.sub(min).div(max.sub(min));
  
  return { normalized, min, max };
}

// Anwendung
const { normalized, min, max } = normalizeData(inputTensor);

// WICHTIG: Speichere min & max für später!
// Du brauchst sie, um neue Vorhersagen zu machen.

⚠️ Wichtig: Du musst neue Daten mit den gleichen min/max-Werten normalisieren, die du beim Training verwendet hast!

🎯 Vollständiges Beispiel: Training mit Pflanzendaten

// 1. Daten vorbereiten (aus CSV/Excel) const inputData = [ [100, 6, 22], [150, 8, 24], [80, 4, 20], [200, 7, 23], [120, 5, 21] ]; const outputData = [[5.2], [7.8], [3.5], [8.9], [6.1]]; // 2. Tensoren erstellen const X = tf.tensor2d(inputData); // Shape: [5, 3] const Y = tf.tensor2d(outputData); // Shape: [5, 1] // 3. Normalisieren const { normalized: X_norm, min: X_min, max: X_max } = normalizeData(X); const { normalized: Y_norm, min: Y_min, max: Y_max } = normalizeData(Y); // 4. Modell erstellen const model = tf.sequential({ layers: [ tf.layers.dense({ inputShape: [3], units: 8, activation: 'relu' }), tf.layers.dense({ units: 1 }) ] }); // 5. Kompilieren model.compile({ optimizer: 'adam', loss: 'meanSquaredError' }); // 6. Training await model.fit(X_norm, Y_norm, { epochs: 100, batchSize: 2, callbacks: { onEpochEnd: async (epoch, logs) => { console.log(`Epoch ${epoch}: loss = ${logs.loss}`); } } }); // 7. Vorhersage für neue Pflanze const newPlant = tf.tensor2d([[130, 6, 22]]); const newPlant_norm = newPlant.sub(X_min).div(X_max.sub(X_min)); const prediction_norm = model.predict(newPlant_norm); const prediction = prediction_norm.mul(Y_max.sub(Y_min)).add(Y_min); prediction.print(); // z.B. 6.3 cm/Woche

📚 Zusammenfassung: CSV/Excel → Tensoren

1️⃣ Daten strukturieren

  • Input-Features (X)
  • Output-Labels (Y)
  • Zeilen = Beispiele
  • Spalten = Features

2️⃣ In Tensoren umwandeln

  • tf.tensor2d(data)
  • Shape: [Beispiele, Features]
  • X: [n, 3]
  • Y: [n, 1]

3️⃣ Normalisieren

  • Min-Max (0-1)
  • Z-Score (μ=0, σ=1)
  • Alle Features gleich wichtig
  • Speichere min/max!

🔑 Die wichtigsten Punkte:

  • 📊 Tabellendaten sind perfekt für neuronale Netze!
  • 🔢 Features = Spalten, Beispiele = Zeilen
  • ⚖️ Normalisierung ist fast immer nötig
  • 📦 Shape beachten: [Anzahl_Beispiele, Anzahl_Features]
  • 💾 Speichere Normalisierungs-Parameter für Vorhersagen!

🧠 Kurzer Check — hast du es?

Drei schnelle Fragen, dann bist du durch — klick einfach deine Antwort an:

1. Eine Tabelle wird zum Tensor. Wofür steht dann eine Zeile?
2. Was sind die Labels in den Trainingsdaten?
3. Wasser liegt bei 100–200, Sonnenstunden bei 4–8. Warum normalisiert man beide vor dem Training?
🎉 Merk dir die eine Formel dieses Kapitels: Zeilen = Beispiele, Spalten = Features, Shape = [Beispiele, Features] — damit liest du ab sofort jede Tabelle wie ein KI-Entwickler. Und zurück zur Anwendung: Genau so sagt eine Versicherung Beiträge voraus und ein Online-Shop deine nächste Bestellung. Jetzt wird es richtig spannend — wie wird aus SPRACHE ein Tensor? Willkommen in der Welt von ChatGPT & Co.