Ich versuche, eine sklearn.dataset zu laden und eine Spalte gemäß den Schlüsseln (target_names, target & DESCR) zu übersehen. Ich habe verschiedene Methoden ausprobiert, um die letzte Spalte einzufügen, jedoch mit Fehlern.
import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
print cancer.keys()
die Schlüssel sind ['Ziel_Name', 'Daten', 'Ziel', 'DESCR', 'Feature_names'].
data = pd.DataFrame(cancer.data, columns=[cancer.feature_names])
print data.describe()
mit dem Code oben gibt es nur 30 Spalten zurück, wenn ich 31 Spalten brauche. Was ist der beste Weg, um Scikit-Learn-Datasets in Pandas DataFrame zu laden.
Eine weitere Option, aber ein Einzeiler, zum Erstellen des Datenrahmens einschließlich der Features und Zielvariablen ist:
import pandas as pd
import numpy as np
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
df = pd.DataFrame(np.c_[cancer['data'], cancer['target']],
columns= np.append(cancer['feature_names'], ['target']))
Wenn Sie eine target
-Spalte haben möchten, müssen Sie sie hinzufügen, da sie sich nicht in cancer.data
befindet. cancer.target
hat die Spalte mit 0
oder 1
und cancer.target_names
die Bezeichnung. Ich hoffe das Folgende ist was Sie wollen:
import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
print cancer.keys()
data = pd.DataFrame(cancer.data, columns=[cancer.feature_names])
print data.describe()
data = data.assign(target=pd.Series(cancer.target))
print data.describe()
# In case you want labels instead of numbers.
data.replace(to_replace={'target': {0: cancer.target_names[0]}}, inplace=True)
data.replace(to_replace={'target': {1: cancer.target_names[1]}}, inplace=True)
print data.shape # data.describe() won't show the "target" column here because I converted its value to string.
Dies funktioniert auch unter Verwendung von pd.Series.
import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
print cancer.keys()
data = pd.DataFrame(cancer.data, columns=[cancer.feature_names])
data['Target'] = pd.Series(data=cancer.target, index=data.index)
print data.keys()
print data.shape
mapping-Zielnamen können mit map () elegant bearbeitet werden:
data["target"] = pd.Categorical(pd.Series(cancer.target).map(lambda x: cancer.target_names[x]))