webentwicklung-frage-antwort-db.com.de

SKLearn-Krebsdatensatz in Pandas DataFrame laden

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.

8
pythonhunter

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']))
6
Jamie Edgecombe

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.
2
Y. Luo

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
2
pythonhunter

mapping-Zielnamen können mit map () elegant bearbeitet werden:

data["target"] = pd.Categorical(pd.Series(cancer.target).map(lambda x: cancer.target_names[x]))
0
Peter Ertl