School-Coding-Cpp/sfusi/Copia di One hot.cpp

53 lines
1.7 KiB
C++

//Cristian Ronzoni 3Ain
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// Funzione per eseguire la One-Hot Encoding
vector<vector<int>> oneHotEncoding(const vector<string>& categorie, const vector<string>& etichette) {
vector<vector<int>> matriceOneHot;
// Per ogni etichetta, troviamo la sua posizione e creiamo un vettore one-hot
for (const string& etichetta : etichette) {
vector<int> oneHot(categorie.size(), 0); // Inizializza un vettore di zeri
for (int i = 0; i < categorie.size(); ++i) {
if (categorie[i] == etichetta) {
oneHot[i] = 1; // Imposta la posizione corrispondente a "1"
break;
}
}
matriceOneHot.push_back(oneHot); // Aggiunge il vettore one-hot alla matrice
}
return matriceOneHot;
}
// Funzione per stampare una matrice
void stampaMatrice(const vector<vector<int>>& matrice) {
for (const auto& riga : matrice) {
for (int valore : riga) {
cout << valore << " ";
}
cout << endl;
}
}
int main() {
// Definiamo le categorie possibili
vector<string> categorie = {"Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"};
// Definiamo alcune etichette da codificare
vector<string> etichette = {"Lunedì", "Mercoledì", "Domenica", "Venerdì", "Martedì"};
// Otteniamo la matrice one-hot encoding
vector<vector<int>> matriceOneHot = oneHotEncoding(categorie, etichette);
// Stampiamo la matrice risultante
cout << "Matrice One-Hot Encoding:" << endl;
stampaMatrice(matriceOneHot);
return 0;
}