

Bild von Autor | Leinwand
# Einführung
Das Finden realer Datensätze kann eine Herausforderung sein, da sie häufig privat (geschützt), unvollständig (fehlende Funktionen) oder teuer (hinter einer Paywall) sind. Synthetische Datensätze können diese Probleme lösen, indem Sie die Daten basierend auf Ihren Projektanforderungen generieren.
Synthetische Daten sind künstlich generierte Informationen, die reale Datensätze nachahmt. Sie können die Größe, Komplexität und den Realismus des synthetischen Datensatzes steuern, um sie anhand Ihrer Datenanforderungen zu passen.
In diesem Artikel werden wir synthetische Datenerzeugungsmethoden untersuchen. Wir werden dann ein Portfolioprojekt erstellen, indem wir die Daten untersuchen und a erstellen Modell maschinelles Lernenund mit AI zur Entwicklung eines vollständigen Portfolio -Projekts mit einer Stromflächen -App.
# So generieren Sie synthetische Daten
Synthetische Daten werden häufig zufällig unter Verwendung von Simulationen, Regeln oder KI erstellt.

// Methode 1: Zufallsdatenerzeugung
Um Daten zufällig zu generieren, verwenden wir einfache Funktionen, um Werte ohne bestimmte Regeln zu erstellen.
Es ist nützlich für das Testen, erfasst jedoch keine realistischen Beziehungen zwischen Merkmalen. Wir werden es mit Numpy’s tun Zufällige Methode und erstellen a Pandas DataFrame.
import numpy as np
import pandas as pd
np.random.seed(42)
df_random = pd.DataFrame({
"feature_a": np.random.randint(1, 100, 5),
"feature_b": np.random.rand(5),
"feature_c": np.random.selection(("X", "Y", "Z"), 5)
})
df_random.head()
Hier ist die Ausgabe.

// Methode 2: Regelbasierte Datenerzeugung
Die regelbasierte Datenerzeugung ist eine intelligentere und realistischere Methode als zufällige Datenerzeugung. Es folgt einer genauen Formel oder Regeln. Dies macht die Ausgabe zielgerichtet und konsistent.
In unserem Beispiel ist die Größe eines Hauses direkt mit seinem Preis verbunden. Um dies klar zu zeigen, werden wir einen Datensatz mit Größe und Preis erstellen. Wir werden die Beziehung zu einer Formel definieren:
Preis = Größe × 300 + ε (Zufallsgeräusch)
Auf diese Weise können Sie die Korrelation sehen und gleichzeitig die Daten einigermaßen realistisch halten.
np.random.seed(42)
n = 5
measurement = np.random.randint(500, 3500, n)
value = measurement * 300 + np.random.randint(5000, 20000, n)
df_rule = pd.DataFrame({
"size_sqft": measurement,
"price_usd": value
})
df_rule.head()
Hier ist die Ausgabe.

// Methode 3: Simulationsbasierte Datenerzeugung
Die simulationsbasierte Datenerzeugungsmethode kombiniert zufällige Variationen mit Regeln aus der realen Welt. Diese Mischung erstellt Datensätze, die sich wie echte verhalten.
Was wissen wir über Wohnen?
- Größere Häuser kosten normalerweise mehr
- Einige Städte kosten mehr als andere
- Ein Grundpreis
Wie erstellen wir den Datensatz?
- Wählen Sie zufällig eine Stadt
- Zeichnen Sie eine Hausgröße
- Schlafzimmer zwischen 1 und 5 festlegen
- Berechnen Sie den Preis mit einer klaren Regel
Preisregel: Wir beginnen mit einem Grundpreis, fügen eine Stadtpreisbeule hinzu und fügen dann Größe × Charge hinzu.
price_usd = base_price × city_bump + sqft × fee
Hier ist der Code.
import numpy as np
import pandas as pd
rng = np.random.default_rng(42)
CITIES = ("los_angeles", "san_francisco", "san_diego")
# Metropolis value bump: larger means pricier metropolis
CITY_BUMP = {"los_angeles": 1.10, "san_francisco": 1.35, "san_diego": 1.00}
def make_data(n_rows=10):
metropolis = rng.selection(CITIES, measurement=n_rows)
# Most houses are close to 1,500 sqft, some smaller or bigger
sqft = rng.regular(1500, 600, n_rows).clip(350, 4500).spherical()
beds = rng.integers(1, 6, n_rows)
base = 220_000
fee = 350 # {dollars} per sqft
bump = np.array((CITY_BUMP(c) for c in metropolis))
value = base * bump + sqft * fee
return pd.DataFrame({
"metropolis": metropolis,
"sqft": sqft.astype(int),
"beds": beds,
"price_usd": value.spherical(0).astype(int),
})
df = make_data()
df.head()
Hier ist die Ausgabe.

// Methode 4: Datenerzeugung mit AI-betriebenen Daten
Damit KI Ihren Datensatz erstellen, benötigen Sie eine klare Eingabeaufforderung. KI ist mächtig, aber es funktioniert am besten, wenn Sie einfache, intelligente Regeln festlegen.
In der folgenden Eingabeaufforderung werden wir einschließen:
- Area: Worum geht es in den Daten?
- Funktionen: Welche Spalten wollen wir?
- Stadt, Nachbarschaft, SQFT, Schlafzimmer, Badezimmer
- Beziehungen: Wie verbinden sich die Funktionen?
- Der Preis hängt von Stadt, SQFT, Schlafzimmern und dem Kriminaleindex ab
- Format: Wie soll KI es zurückgeben?
Hier ist die Eingabeaufforderung.
Generieren Sie Python -Code, der einen synthetischen kalifornischen Immobilien -Datensatz erstellt.
Der Datensatz sollte 10.000 Zeilen mit Spalten haben: Stadt, Nachbarschaft, Breitengrad, Längengrad, SQFT, Schlafzimmer, Badezimmer, LOT_SQFT, Year_built, Property_Type, Has_Garage, Bedingung, School_Score, Crime_index, Dist_km_Center, Price_USD.
Städte: Los Angeles, San Francisco, San Diego, San Jose, Sacramento.
Der Preis sollte von Stadtprämie, SQFT, Schlafzimmern, Badezimmern, Losgröße, Schulbewertung, Kriminalindex und Entfernung vom Stadtzentrum abhängen.
Fügen Sie zufälliges Rauschen, fehlende Werte und einige Ausreißer ein.
Geben Sie das Ergebnis als PANDAS -Datenrahmen zurück und speichern Sie es in ‚ca_housing_synth.csv‘
Verwenden wir diese Eingabeaufforderung mit Chatgpt.

Es gab den Datensatz als CSV zurück. Hier ist der Prozess, der zeigt, wie Chatgpt es erstellt hat.

Dies ist der komplexeste Datensatz, den wir bei weitem generiert haben. Lassen Sie uns die ersten Zeilen dieses Datensatzes sehen.


# Erstellen eines Portfolioprojekts aus synthetischen Daten
Wir haben vier verschiedene Techniken verwendet, um einen synthetischen Datensatz zu erstellen. Wir werden die AI-generierten Daten verwenden, um ein Portfolio-Projekt zu erstellen.
Zuerst werden wir die Daten untersuchen und dann ein maschinelles Lernmodell erstellen. Als nächstes werden wir die Ergebnisse mit Streamlit visualisieren, indem wir KI nutzen, und im letzten Schritt werden wir feststellen, welche Schritte für die Bereitstellung des Modells für die Produktion durchgeführt werden sollen.


// Schritt 1: Erforschen und Verständnis des synthetischen Datensatzes
Wir werden die Daten erkunden, indem wir sie zuerst mit dem Lesen mit Pandas und die ersten Zeilen zeigen.
df = pd.read_csv("ca_housing_synth.csv")
df.head()
Hier ist die Ausgabe.

Der Datensatz umfasst Standort (Stadt, Nachbarschaft, Breitengrad, Längengrad) und Immobiliendetails (Größe, Zimmer, Jahr, Zustand) sowie das Kursziel. Überprüfen Sie die Informationen in den Spaltennamen, Größe und Länge mit der Verwendung der Spaltennamen, Größe und Länge Data -Methode.

Wir haben 15 Spalten, wobei einige wie Has_garage oder dist_km_center ziemlich spezifisch sind.
// Schritt 2: Modellgebäude
Der nächste Schritt besteht darin, ein maschinelles Lernmodell zu erstellen, das die Immobilienpreise vorhersagt.
Wir werden folgende Schritte befolgen:
Hier ist der Code.
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
from sklearn.inspection import permutation_importance
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# --- Step 1: Outline columns based mostly on the generated dataset
num_cols = ("sqft", "bedrooms", "bogs", "lot_sqft", "year_built",
"school_score", "crime_index", "dist_km_center", "latitude", "longitude")
cat_cols = ("metropolis", "neighborhood", "property_type", "situation", "has_garage")
# --- Step 2: Cut up the info
X = df.drop(columns=("price_usd"))
y = df("price_usd")
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# --- Step 3: Preprocessing pipelines
num_pipe = Pipeline((
("imputer", SimpleImputer(technique="median")),
("scaler", StandardScaler())
))
cat_pipe = Pipeline((
("imputer", SimpleImputer(technique="most_frequent")),
("encoder", OneHotEncoder(handle_unknown="ignore"))
))
preprocessor = ColumnTransformer((
("num", num_pipe, num_cols),
("cat", cat_pipe, cat_cols)
))
# --- Step 4: Mannequin
mannequin = RandomForestRegressor(n_estimators=300, random_state=42, n_jobs=-1)
pipeline = Pipeline((
("preprocessor", preprocessor),
("mannequin", mannequin)
))
# --- Step 5: Prepare
pipeline.match(X_train, y_train)
# --- Step 6: Consider
y_pred = pipeline.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)
rmse = mean_squared_error(y_test, y_pred, squared=False)
r2 = r2_score(y_test, y_pred)
print(f"MAE: {mae:,.0f}")
print(f"RMSE: {rmse:,.0f}")
print(f"R²: {r2:.3f}")
# --- Step 7: (Optionally available) Permutation Significance on a subset for velocity
pi = permutation_importance(
pipeline, X_test.iloc(:1000), y_test.iloc(:1000),
n_repeats=3, random_state=42, scoring="r2"
)
# --- Step 8: Plot Precise vs Predicted
plt.determine(figsize=(6, 5))
plt.scatter(y_test, y_pred, alpha=0.25)
vmin, vmax = min(y_test.min(), y_pred.min()), max(y_test.max(), y_pred.max())
plt.plot((vmin, vmax), (vmin, vmax), linestyle="--", shade="crimson")
plt.xlabel("Precise Value (USD)")
plt.ylabel("Predicted Value (USD)")
plt.title(f"Precise vs Predicted (MAE={mae:,.0f}, RMSE={rmse:,.0f}, R²={r2:.3f})")
plt.tight_layout()
plt.present()
Hier ist die Ausgabe.

Modellleistung:
- MAE (85.877 USD): Im Durchschnitt sind die Vorhersagen um etwa 86.000 US
- RMSE (113.512 USD): Größere Fehler werden mehr bestraft; RMSE bestätigt, dass das Modell ziemlich intestine mit beträchtlichen Abweichungen umgeht
- R² (0,853): Das Modell erklärt ~ 85% der Varianz der Immobilienpreise und zeigt eine starke Vorhersageleistung für synthetische Daten
// Schritt 3: Visualisieren Sie die Daten
In diesem Schritt zeigen wir unseren Prozess, einschließlich EDA und Modellbildung, unter Verwendung des Stromlit -Dashboards. Warum benutzen wir Straffung? Sie können ein stromloses Dashboard schnell und einfach erstellen einsetzen Es ist für andere, mit denen man sich ansehen und interagieren kann.
Mit Gemini CLI
Um die stromlitische Anwendung zu erstellen, werden wir Gemini CLI verwenden.
Gemini Cli ist ein mit AI betriebener Open-Supply-Befehlszeilenagent. Sie können Code schreiben und Anwendungen erstellen Gemini Cli. Es ist unkompliziert und frei.
Verwenden Sie den folgenden Befehl in Ihrem Terminal.
npm set up -g @google/gemini-cli
Verwenden Sie nach der Set up diesen Code, um zu initiieren.
Sie werden aufgefordert, sich bei Ihrem Google -Konto anzumelden, und dann sehen Sie den Bildschirm, auf dem Sie diese streamlitische App erstellen.

Bauen eines Armaturenbretts
Um ein Dashboard zu erstellen, müssen wir eine Eingabeaufforderung erstellen, die auf Ihre spezifischen Daten und Mission zugeschnitten ist. In der folgenden Eingabeaufforderung erklären wir alles, was KI braucht, um ein stromendes Dashboard zu erstellen.
Construct a Streamlit app for the California Actual Property dataset by utilizing this dataset ( path-to-dataset )
Right here is the dataset info:
• Area: California housing — Los Angeles, San Francisco, San Diego, San Jose, Sacramento.
• Location: metropolis, neighborhood, lat, lon, and dist_km_center (haversine to metropolis heart).
• Dwelling options: sqft, beds, baths, lot_sqft, year_built, property_type, has_garage, situation.
• Context: school_score, crime_index.
• Goal: price_usd.
• Value logic: metropolis premium + measurement + rooms + lot measurement + faculty/crime + distance to heart + property kind + situation + noise.
• Recordsdata you've gotten: ca_housing_synth.csv (information) and real_estate_model.pkl (educated pipeline).
The Streamlit app ought to have:
• A brief dataset overview part (form, column record, small preview).
• Sidebar inputs for each mannequin characteristic besides the goal:
- Categorical dropdowns: metropolis, neighborhood, property_type, situation, has_garage.
- Numeric inputs/sliders: lat, lon, sqft, beds, baths, lot_sqft, year_built, school_score, crime_index.
- Auto-compute dist_km_center from the chosen metropolis utilizing the haversine formulation and that metropolis’s heart.
• A Predict button that:
- Builds a one-row DataFrame with the precise coaching columns (order-safe).
- Calls pipeline.predict(...) from real_estate_model.pkl.
- Shows Estimated Value (USD) with hundreds separators.
• One chart solely: What-if: sqft vs value line chart (all different inputs fastened to the sidebar values).
- High quality of life: cache mannequin load, primary enter validation, clear labels/tooltips, English UI.
Als nächstes fordert Gemini Ihre Erlaubnis auf, diese Datei zu erstellen.

Lassen Sie uns genehmigen und weitermachen. Sobald die Codierung fertiggestellt ist, öffnet es automatisch das Streamlit -Dashboard.
Wenn nicht, gehen Sie zum Arbeitsverzeichnis der app.py Datei und run streamlit run app.py um diese streamlit -App zu starten.
Hier ist unser stromendes Dashboard.

Sobald Sie auf die Datenübersicht klicken, können Sie einen Abschnitt sehen, der die Datenerforschung darstellt.

Aus den Eigenschaften auf der linken Seite können wir die Eigenschaft anpassen und entsprechend Vorhersagen treffen. Dieser Teil des Dashboards repräsentiert das, was wir im Modellgebäude getan haben, aber mit einem reaktionsfähigeren Look.
Wählen wir Richmond, San Francisco, Einfamilienhäuser, hervorragender Zustand, 1500 m² und klicken Sie auf die Schaltfläche „Preisvorhersagen“:

Der vorhergesagte Preis beträgt 1,24 Mio. USD. Außerdem sehen Sie den tatsächlichen VS -Preisträger im zweiten Diagramm für den gesamten Datensatz, sobald Sie nach unten scrollen.

Sie können mehr Funktionen im linken Feld anpassen, wie das Jahr, das Jahr, der Kriminalindex oder die Anzahl der Badezimmer.

// Schritt 4: Stellen Sie das Modell ein
Der nächste Schritt ist das Hochladen Ihres Modells in die Produktion. Dazu können Sie folgende Schritte befolgen:
# Letzte Gedanken
In diesem Artikel haben wir verschiedene Methoden zum Erstellen von synthetischen Datensätzen wie zufällig, regelbasiert, simulationsbasiert oder KI-betrieben erstellt. Als nächstes haben wir ein Portfolio -Datenprojekt erstellt, indem wir mit der Datenerforschung und dem Erstellen eines maschinellen Lernmodells beginnen.
Wir haben auch einen Open-Supply-Befehlszeilen-basierten AI-Agenten (Gemini CLI) verwendet, um ein Dashboard zu entwickeln, das den Datensatz untersucht und die Immobilienpreise basierend auf ausgewählten Funktionen, einschließlich der Anzahl der Schlafzimmer, Kriminaleindex und Quadratmeterzahl, voraussetzt.
Durch das Erstellen Ihrer synthetischen Daten können Sie Datenschutzhürden vermeiden, Ihre Beispiele ausgleichen und sich ohne kostspielige Datenerfassung schnell bewegen. Der Nachteil ist, dass es Ihre Annahmen widerspiegeln und reale Macken verpassen kann. Wenn Sie nach mehr Inspiration suchen, lesen Sie diese Liste von Projekte für maschinelles Lernen dass Sie sich für Ihr Portfolio anpassen können.
Schließlich haben wir uns angesehen, wie Sie Ihr Modell mithilfe von Streamlit Group Cloud in die Produktion hochladen können. Befolgen Sie diese Schritte, um Ihr Portfolio -Projekt noch heute zu erstellen und zu präsentieren!
Nate Rosidi ist Datenwissenschaftler und in Produktstrategie. Er ist außerdem eine zusätzliche Professorin für Lehranalysen und Gründer von Stratascratch, einer Plattform, die Datenwissenschaftlern hilft, sich auf ihre Interviews mit echten Interviewfragen von Prime -Unternehmen vorzubereiten. Nate schreibt über die neuesten Developments auf dem Karrieremarkt, gibt Interviewberatung, teilt Datenwissenschaftsprojekte und deckt alles SQL ab.
