Je peux charger un ensemble de données à partir de scikit-learn
en utilisant
f = open('boston.txt', 'w') f.write(str(data))
Ce que j'aimerais faire, c'est écrire cet ensemble de données dans un fichier plat ( .csv )
En utilisant la fonction open ()
,
from sklearn import datasets data = datasets.load_boston() print(data)
fonctionne, mais inclut le description de l'ensemble de données.
Je me demande s'il existe un moyen de générer un simple .csv
avec les en-têtes de cet objet Bunch afin que je puisse le déplacer et utilisez-le ailleurs.
3 Réponses :
et la sortie data = datasets.load_boston ()
générera un dictionnaire. Pour écrire les données dans un fichier .csv
, vous avez besoin des données réelles data ['data']
et des colonnes data ['feature_names'] code>. Vous pouvez les utiliser pour générer un dataframe pandas puis utiliser
to_csv ()
pour écrire les données dans un fichier: CRIM,ZN,INDUS,CHAS,NOX,RM,AGE,DIS,RAD,TAX,PTRATIO,B,LSTAT
0.00632,18.0,2.31,0.0,0.538,6.575,65.2,4.09,1.0,296.0,15.3,396.9,4.98
0.02731,0.0,7.07,0.0,0.469,6.421,78.9,4.9671,2.0,242.0,17.8,396.9,9.14
0.02729,0.0,7.07,0.0,0.469,7.185,61.1,4.9671,2.0,242.0,17.8,392.83,4.03
...
boston.txt
doit être: from sklearn import datasets
import pandas as pd
data = datasets.load_boston()
print(data)
df = pd.DataFrame(data=data['data'], columns = data['feature_names'])
df.to_csv('boston.txt', sep = ',', index = False)
Je voulais juste modifier la réponse en ajoutant que vous devriez probablement inclure également la variable cible - "MV". Ajout d'une ligne supplémentaire ci-dessous:
from sklearn import datasets import pandas as pd data = datasets.load_boston() print(data) df = pd.DataFrame(data=data['data'], columns = data['feature_names']) **df['MV'] = data['target']** df.to_csv('boston.txt', sep = ',', index = False)
Il existe différents ensembles de données sur les jouets dans scikit-learn, tels que les ensembles de données Iris et Boston . Chargons l'ensemble de données Boston :
C:\Users\user\anaconda3\lib\site-packages\sklearn\datasets\data\boston_house_prices.csv
De quel type d'objet s'agit-il? Si nous examinons son type, nous voyons qu'il s'agit d'un objet Bunch scikit-learn.
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])
Sortie:
iris = datasets.load_iris(as_frame=True) df = iris["frame"]
Un objet Bunch scikit-learn est une sorte de dictionnaire. Donc, nous devrions le traiter comme tel. Nous pouvons utiliser des méthodes de dictionnaire. Regardons les clés:
df.to_csv("scikit_learn_boston_dataset.csv", index=False)
sortie:
df['MEDV'] = boston['target']
Ici, nous nous intéressons aux données strong les clés>, feature_names et target Nous importerons le module pandas et utiliserons ces clés pour créer un pandas DataFrame
import pandas as pd df = pd.DataFrame(data=boston['data'], columns=boston['feature_names'])
Nous devrions également ajouter la cible variable au DataFrame. La variable cible est ce que nous essayons de prédire. Nous devrions apprendre le nom de la variable cible. Il est écrit dans le "DESCR" . nous pouvons
print (boston ["DESCR"])
et lisez la description complète de l'ensemble de données.
Dans la description, nous voyons que le nom de la variable cible est MEDV . Maintenant, nous pouvons ajouter la variable cible au DataFrame:
dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])
Il ne reste plus qu'une étape. Nous exportons le DataFrame vers un fichier csv sans numéros d'index:
print(boston.keys())
BONUS : l'ensemble de données Iris a des paramètres supplémentaires qui nous pouvons utiliser ( regardez ici ). Le code suivant crée automatiquement le DataFrame avec la variable cible incluse:
<class 'sklearn.utils.Bunch'>
Remarque : Si nous imprimons (iris.keys ()) , nous pouvons voir la touche 'frame' :
print(type(boston))
BONUS2 : Si nous imprimons (boston ["filename"])
ou print (iris ["filename"])
, nous pouvons voir les emplacements physiques des fichiers csv de ces ensembles de données. Par exemple:
from sklearn import datasets boston = datasets.load_boston()