Empfohlene Nutzung NSDT-SzeneneditorHelfen Sie dabei, schnell eine 3D-Anwendungsszene zu erstellen, die zweimal bearbeitet werden kann

chatgpt hat sich zu einem Schweizer Taschenmesser entwickelt, das in einer Vielzahl von Anwendungen eingesetzt werden kann, und es gibt viel Raum, ChatGPT in datenwissenschaftliche Arbeitsabläufe zu integrieren.

Wenn Sie jemals ein Modell für maschinelles Lernen anhand eines realen Datensatzes trainiert haben, wissen Sie, dass die Schritte der Datenbereinigung und -vorverarbeitung für den Aufbau eines zuverlässigen Modells für maschinelles Lernen sehr wichtig sind. In dieser Anleitung erfahren Sie, wie Sie ChatGPT verwenden, um diese Aufgaben an einem Beispieldatensatz auszuführen.

Wir verwenden den Bankmarketingdatensatz aus dem UCI-Repository für maschinelles Lernen und fordern ChatGPT auf, Folgendes zu tun:

  • Rufen Sie den Datensatz ab und laden Sie ihn
  • Suchen Sie nach fehlenden Werten
  • Kodierung kategorialer Variablen

Anschließend können Sie sich bei Ihrem OpenAI-Konto anmelden und eine neue ChatGPT-Sitzung starten. Wenn Sie möchten, können Sie auch in google Colab programmieren.

Es gibt verschiedene Versionen des Datensatzes. Wir werden die Datei bankfull.csv verwenden.

Hinweis: Heute führen wir eine Datenbereinigung und Vorverarbeitung an einem realen Datensatz durch. Schreiben Sie Code, um Folgendes zu tun: 1. Ziehen Sie den Bankmarketing-Datensatz aus dem UCI-Repository für maschinelles Lernen. Verwenden Sie eine Bibliothek wie „requests“ oder „urllib“. 2. Laden Sie die ZIP-Datei herunter, entpacken Sie den Inhalt und lesen Sie die Datei „bank is full.csv“ in einen Pandas-Datenrahmen (Daten genannt).

Der Code zum Abrufen und Einlesen des Datensatzes lautet wie folgt:

import pandas as pd
import urllib
import zipfile

# URL of the dataset
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank.zip"

# Fetch and extract the dataset
urllib.request.urlretrieve(url, "bank.zip")

with zipfile.ZipFile("bank.zip", "r") as zip_ref:
    zip_ref.extractall()

# Load the dataset into a pandas DataFrame
data = pd.read_csv("bank-full.csv", delimiter=";",skipinitialspace=True)

Lassen Sie uns den Datensatz besser verstehen.

# Display the first few rows of the dataset
print(data.head())

Dies gibt aus:

Automatische Datenbereinigung Und Vorverarbeitung Mit Chatgpt

Abgeschnittene Ausgabe von data.head()

Hinweis: Verwenden Sie Pandas, um die Abmessungen eines Datenrahmens, beschreibende Statistiken für Spalten und die Datentypen verschiedener Spalten abzurufen.

Dieser Schritt erfordert keine Aufforderung an ChatGPT, da die Pandas-Methode sehr einfach ist.

# Get the dimensions of the dataset (rows, columns)
print(data.shape)
Output >>> (45211, 17)

Wir haben über 45.000 Datensätze und 16 Features (da 17 auch Ausgabeetiketten enthält).

# Get statistical summary of numerical columns
print(data.describe())

Automatische Datenbereinigung Und Vorverarbeitung Mit Chatgpt

Abgeschnittene Ausgabe von data.describe()

Hilfreich ist es auch, sich einen Überblick über die Datentypen der verschiedenen Spalten zu verschaffen. Wenn wir kategoriale Variablen kodieren, werden wir sie uns genauer ansehen.

# Check data types of each column
print(data.dtypes)
Output >>>

age           int64
job          object
marital      object
education    object
default      object
balance       int64
housing      object
loan         object
contact      object
day           int64
month        object
duration      int64
campaign      int64
pdays         int64
previous      int64
poutcome     object
y            object
dtype: object

Bisher haben wir uns den Marketingdatensatz der Bank angesehen. Das Ausgabeetikett gibt an, ob der Kunde ein Festgeld abonniert. Dieser Datensatz enthält mehrere Elemente wie Alter, Monat, Bildung, Familienstand, Ergebnisse früherer Kampagnen usw.

Hinweis: Ich möchte die Anzahl der fehlenden Werte in jeder Spalte wissen. Bitte geben Sie mir den Code dazu. Benutze Pandas.

# Check for missing values in each column
missing_values = data.isnull().sum()
print(missing_values)

Hier ist die Ausgabe:

Output >>>

age          0
job          0
marital      0
education    0
default      0
balance      0
housing      0
loan         0
contact      0
day          0
month        0
duration     0
campaign     0
pdays        0
previous     0
poutcome     0
y            0
dtype: int64

In dieser Version des Bankmarketing-Datensatzes (enthält über 45.000 Datensätze) fehlen keine Werte. In der Praxis fehlen jedoch in den meisten realen Datensätzen Werte. Für den Umgang mit fehlenden Werten sollten Sie eine geeignete Imputationstechnik verwenden.

Siehe auch  Wir verwenden ChatGPT ohne VPN und Kontoregistrierung – Anleitungen zu DTF

Als optionale Übung könnten Sie hier einen Schritt hinzufügen, der ChatGPT dazu auffordert, eine kleine Teilmenge von Werten aus einer Teilmenge der Spalten zu löschen, damit Sie üben können, wie mit fehlenden Werten umgegangen wird.

Der nächste Schritt besteht darin, die kategorialen Variablen im Datensatz zu kodieren. Wir beginnen damit, eine Liste aller kategorialen Spalten zu erhalten.

Hinweis: Geben Sie Code an, um eine Liste aller kategorialen Spalten in diesem Datensatz zu erhalten.

# Count the number of categorical variables
categorical_columns = data.select_dtypes(include=['object']).columns
print(categorical_columns)
num_categorical_variables = len(categorical_columns)

# Display the count
print("Number of categorical variables:", num_categorical_variables)

Die Liste der kategorialen Spalten enthält auch die Ausgabebezeichnungen j. Aber konzentrieren wir uns zunächst auf die anderen kategorialen Variablen.

Output >>>
Index(['job', 'marital', 'education', 'default', 'housing', 'loan', 'contact',
       'month', 'poutcome', 'y'],
      dtype='object')
Number of categorical variables: 10

Schauen Sie sich die Werte kategorialer Variablen genauer an

Schauen wir uns als Nächstes die Werte an, die jede kategoriale Variable annimmt.

Hinweis: Ich möchte wissen, welche verschiedenen Werte jede kategoriale Variable annimmt. Geben Sie Pandas den Code dafür.

# Get the different values and their counts for each categorical column
categorical_columns = ['job', 'marital', 'education', 'default', 'housing', 'loan', 'contact', 'month', 'poutcome']
for column in categorical_columns:
    value_counts = data[column].value_counts()
    print(f"Column: {column}")
    print(value_counts,"\n")

Die Ausgabe ist schwer zu analysieren:

Output >>>

Column: job
blue-collar      9732
management       9458
technician       7597
admin.           5171
services         4154
retired          2264
self-employed    1579
entrepreneur     1487
unemployed       1303
housemaid        1240
student           938
unknown           288
Name: job, dtype: int64 

...
...
...
Column: poutcome
unknown    36959
failure     4901
other       1840
success     1511
Name: poutcome, dtype: int64 

Visualisieren Sie Werte kategorialer Variablen

Lassen Sie uns ChatGPT auffordern, eine Visualisierung zu erstellen, die es einfacher macht, die Werte zu verstehen, die eine kategoriale Variable annimmt.

Hinweis: Ich möchte ein Diagramm, das die von jeder kategorialen Variablen angenommenen Werte zeigt. Ausgabebezeichnung y ausschließen. Alle anderen kategorialen Variablen sind enthalten.

Lass uns anfangen!

import matplotlib.pyplot as plt

# Get the different values and their counts for each categorical column
categorical_columns = ['job', 'marital', 'education', 'default', 'housing', 'loan', 'contact', 'month', 'poutcome']

# Set up the subplot grid
fig, axes = plt.subplots(3, 3, figsize=(10,8))

# Iterate over each categorical column and plot the value counts
for i, column in enumerate(categorical_columns):
    row = i // 3
    col = i % 3
    value_counts = data[column].value_counts()
    ax = axes[row, col]
    value_counts.plot(kind='bar', ax=ax)
    ax.set_xlabel(column)
    ax.set_ylabel('Count')
    ax.set_title(f'{column.title()} Value Counts')

# Adjust spacing between subplots
plt.tight_layout()

# Show the plot
plt.show()

Automatische Datenbereinigung Und Vorverarbeitung Mit Chatgpt

der Wert der kategorialen Variablen

Siehe auch  ChatGPT – Der große Game Changer

One-Hot-Kodierung

Für eine Teilmenge kategorialer Spalten können wir One-Hot-Codierung verwenden.

Hinweis: Ein Pandas-Code zum Durchführen einer One-Hot-Codierung für eine Liste von Spalten.

Wir verwenden die folgenden Spalten von Pandas bis One-Hot-Codierung:get_dummies

# Select the categorical columns (excluding education and poutcome)
categorical_columns = ['job', 'marital', 'default', 'housing', 'loan', 'contact']

# Perform one-hot encoding
encoded_data = pd.get_dummies(data, columns=categorical_columns)

Hinweis: Ich möchte die ersten Zeilen neu hinzugefügter Spalten ausdrucken. Schreiben Sie Code, um dasselbe zu tun.

# Select the newly added columns
new_columns = encoded_data.columns.difference(data.columns)

# Print the head of the newly added columns
print(encoded_data[new_columns].head())

Automatische Datenbereinigung Und Vorverarbeitung Mit Chatgpt

Abgeschnittene Ausgabe encoded_data[’new_colums‘].Kopf()

Definieren Sie benutzerdefinierte Zuordnungen

Für Spalten mit Variablen wie „education“ und „poutcome“ (vorherige Ergebnisse) ist es besser, anstelle einer One-Hot-Codierung eine benutzerdefinierte Karte zu verwenden, um einen gewissen Vergleich zwischen Werten zu ermöglichen.

Wenn wir außerdem One-Hot-Codierung verwenden, um eine kategoriale Variable zu codieren, nimmt die Variable k neue Spalten mit k unterschiedlichen Werten an. Für eine kategoriale Spalte wie „Monat“ wäre dies übertrieben, ohne viele Informationen hinzuzufügen.

In beiden Fällen definieren wir also eine benutzerdefinierte Karte und transformieren dann die Werte. Wir können ChatGPT zur Eingabe eines generischen Codeausschnitts auffordern, den wir dann ändern können, um Zuordnungen für bestimmte Spalten zu definieren.

Hinweis: Ich möchte eine benutzerdefinierte Zuordnung erstellen, um einige kategoriale Variablen zu kodieren. Geben Sie mir zunächst einen generischen Codeausschnitt, der eine benutzerdefinierte Zuordnung von eindeutigen Werten in einer kategorialen Spalte zu einer Reihe verschiedener Ausgabewerte definiert. Diese Zuordnung sollten wir dann nutzen, um die Werte in der Spalte zu transformieren.

# Define the custom mapping dictionary
custom_mapping = {
    'category1': 'value1',
    'category2': 'value2',
    'category3': 'value3',
    # Add more categories and corresponding values as needed
}

# Specify the categorical column
categorical_column = 'column_name'  # Replace 'column_name' with the actual column name

# Perform the mapping using the custom mapping dictionary
data[categorical_column] = data[categorical_column].map(custom_mapping)

Für die Spalte „Monat“ konvertieren wir die Monatszeichenfolge wie folgt:

# Define the mapping dictionary for months
month_mapping = {
    'jan': 1,
    'feb': 2,
    'mar': 3,
    'apr': 4,
    'may': 5,
    'jun': 6,
    'jul': 7,
    'aug': 8,
    'sep': 9,
    'oct': 10,
    'nov': 11,
    'dec': 12
}

# Map the values in the month column
encoded_data['month'] = encoded_data['month'].map(month_mapping)

Ordnen wir die Spalten „Ergebnisse“ und „Bildung“ wie folgt numerischen Werten zu:

# Define the custom mapping for poutcome and education
poutcome_mapping = {
    'unknown': 0,
    'failure': 1,
    'other': 2,
    'success': 3
}

education_mapping = {
    'unknown': 0,
    'primary': 1,
    'secondary': 2,
    'tertiary': 3
}

# Perform ordinal encoding using pandas map
encoded_data['poutcome'] = encoded_data['poutcome'].map(poutcome_mapping)
encoded_data['education'] = encoded_data['education'].map(education_mapping)

# Select the newly added columns
new_columns = ['month','poutcome', 'education']

# Print the head of the newly added columns
print(encoded_data[new_columns].head(10))

Kodieren Sie das Ausgabeetikett

Wir ordnen auch die Ausgabebezeichnungen „Ja“ und „Nein“ den Werten 1 bzw. 0 zu.

encoded_data['y'] = encoded_data['y'].replace({'no': 0, 'yes': 1})
print(encoded_data['y'])
Output >>>

0        0
1        0
2        0
3        0
4        0
        ..
45206    1
45207    1
45208    1
45209    0
45210    0
Name: y, Length: 45211, dtype: int64

Denken Sie daran, dass wir für die Spalten „Unterkunft“, „Standard“ und „Darlehen“ eine One-Hot-Codierung verwendet haben. Da diese Spalten auch die Werte „Ja“ und „Nein“ annehmen, können Sie „Ja“ und „Nein“ auch den Werten 1 und 0 zuordnen.

Siehe auch  So hat sich ein ChatGPT-basiertes Aktienportfolio letzte Woche entwickelt

Visualisieren Sie die Verteilung von Klassenbezeichnungen

Es ist auch hilfreich, die Verteilung der Klassenbezeichnungen zu untersuchen, damit wir bei Bedarf Klassenungleichgewichte beim Erstellen des Modells berücksichtigen können.

Hinweis: Ich möchte die Verteilung von Klassenbezeichnungen verstehen. Bitte geben Sie mir den Code, um einen geeigneten Plot zu generieren.

Hier ist der Code zum Generieren eines Zähldiagramms in Seaborn:

import seaborn as sns
import matplotlib.pyplot as plt

# Plot the distribution of output labels
sns.countplot(data=data, x='y')
plt.xlabel('Output Label')
plt.ylabel('Count')
plt.title('Output Label Distribution')
plt.show()

Automatische Datenbereinigung Und Vorverarbeitung Mit Chatgpt

Verteilung von Klassenlabels

Wir sehen, dass es ein Klassenungleichgewicht gibt. Daher sollten Sie beim Erstellen eines Modells sicherstellen, dass Sie eine geeignete Resampling-Methode verwenden, um Klassenungleichgewichte zu berücksichtigen.

Obwohl die Datenbereinigung und Vorverarbeitung den Aufwand des Entwicklers erfordert, versuchen wir, eine allgemeine Schrittfolge zu finden, die für einfache Datensätze einigermaßen gut funktioniert.

Hinweis: Können Sie mir eine generische Datenbereinigungs- und Vorverarbeitungspipeline geben, die auf dem basiert, was wir bisher gemacht haben? Erhalten Sie grundlegende Informationen zu einem Datensatz, prüfen Sie fehlende Werte und behandeln Sie diese, identifizieren Sie kategoriale Spalten und kodieren Sie kategoriale Spalten. Benutze einfach Pandas.

Das ist:

import pandas as pd

# Load the dataset into a DataFrame
data = pd.read_csv('data.csv')

# Step 1: Basic Info
print(data.info())

# Step 2: Missing Values
missing_values = data.isnull().sum()
print(missing_values)

# Step 3: Handle Missing Values
# Identify columns with missing values
columns_with_missing_values = missing_values[missing_values > 0].index

# Impute missing values using fillna() or other suitable method
data[columns_with_missing_values] = data[columns_with_missing_values].fillna(data[columns_with_missing_values].mean())

# Step 4: Get Categorical Columns
categorical_columns = data.select_dtypes(include=['object']).columns

# Step 5: Encode Categorical Columns
# Perform ordinal encoding or one-hot encoding using pandas' get_dummies() function
encoded_data = pd.get_dummies(data, columns=categorical_columns)

# Print the encoded data
print(encoded_data.head())

Es zeigt sich, dass die Synergie von datenwissenschaftlichem Fachwissen mit ChatGPT dazu beitragen kann, die Datenbereinigung und -vorverarbeitung einfacher und schneller zu gestalten. Da Sie nun über einen vorverarbeiteten Datensatz verfügen, können Sie noch einen Schritt weiter gehen und ein einfaches Vorhersagemodell auf Basis dieses Bankmarketing-Datensatzes erstellen.

Ursprünglicher Link:So verwenden Sie ChatGPT für die automatische Datenbereinigung und -vorverarbeitung (mvrlink.com)

Anzeige

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein