2
votes

Comment écrire un ensemble de données scikit-learn dans un fichier csv

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.


0 commentaires

3 Réponses :


3
votes

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
...

et la sortie 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)


0 commentaires

0
votes

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)


0 commentaires

1
votes

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()


0 commentaires