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.
- ✅ 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:
[50, 3].