J'essaie de charger un fichier sklearn.dataset et il me manque une colonne, en fonction des clés (noms_cible, cible et DESCR). J'ai essayé diverses méthodes pour inclure la dernière colonne, mais avec des erreurs.
import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
print cancer.keys()
les clés sont ['target_names', 'data', 'target', 'DESCR', 'feature_names']
data = pd.DataFrame(cancer.data, columns=[cancer.feature_names])
print data.describe()
avec le code ci-dessus, il ne retourne que 30 colonnes, alors que j’ai besoin de 31 colonnes. Quelle est la meilleure façon de charger des jeux de données scikit-learn dans pandas DataFrame.
Une autre option, mais unique, pour créer le cadre de données, y compris les entités et les variables cibles, est la suivante:
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']))
Si vous voulez avoir une colonne target
, vous devrez l'ajouter car elle n'est pas dans cancer.data
. cancer.target
a la colonne avec 0
ou 1
, et cancer.target_names
a l'étiquette. J'espère que ce qui suit est ce que vous voulez:
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.
Cela fonctionne aussi, en utilisant également 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
les noms de cibles de mappage peuvent être gérés avec élégance en utilisant map () :
data["target"] = pd.Categorical(pd.Series(cancer.target).map(lambda x: cancer.target_names[x]))