Cargando colecciones de conjuntos de datos: ejemplos de código de Python
A veces, es posible que desee verificar sus ideas en varios conjuntos de datos. Hay varios lugares con colecciones de conjuntos de datos.
Pregunta: Comparta algunos scripts de Python sobre cómo descargar varios conjuntos de datos de esta (u otra) colección de conjuntos de datos.
Idealmente, uno debería ser capaz de: 1) obtener una lista de conjuntos de datos 2) seleccionar algunos deseados por condiciones 3) descargar los seleccionados. Pero si tienes algo diferente, compártelo de todos modos.
Para la base de datos "openml", tengo un script, vea mi propia respuesta. Pero sí tengo para otras colecciones: Kaggle, uci ...
Aquí algunos ejemplos de colecciones de conjuntos de datos:
https://www.openml.org/
https://archive.ics.uci.edu/ml/index.php
https://ieee-dataport.org/datasets
Каggle contiene muchos conjuntos de datos, también hay colecciones específicas: colecciones de gráficos ver lista aquí https://mathoverflow.net/a/359449/10446 , muchos datos biológicos están aquí: https://www.ncbi.nlm.nih.gov/gds
Respuestas
¿Cómo obtener datos de Kaggle desde el código de Python?
Instale el paquete kaggle C: \ Users \ TalgatHafiz> pip install kaggle
inicie sesión en su cuenta de Kaggle haga clic en el icono en la esquina superior derecha -> Mi cuenta Desplácese hacia abajo hasta la sección de API Haga clic en "Crear nuevo token de API" El archivo "kaggle.json" se crea y se guarda localmente
Cree el directorio ".kaggle" C: \ Users \ TalgatHafiz> mkdir .kaggle y mueva "kaggle.json" a ese directorio
ver todas las competiciones activas ejecutando el siguiente comando C: \ Users \ TalgatHafiz> lista de competiciones de kaggle
Seleccione una de las competiciones en las que se inscribió, p. Ej. https://www.kaggle.com/c/contradictory-my-dear-watson/data#Desplácese hacia abajo. Justo antes de la sección "Explorador de datos" debería haber una línea de API: "kaggle compeitions download -c contradictory-my-dear-watson" cópielo
ejecutar estos comandos desde el cuaderno importar kaggle! kaggle competiciones descargar -c contradictory-my-dear-watson
El archivo de datos comprimido se descarga en el mismo directorio donde está su computadora portátil: C: \ Users \ TalgatHafiz \ conda \ contradictory-my-dear-watson.zip, así que ahora puede descomprimir y comenzar a usar los datos.
Si aún tiene preguntas, lea https://medium.com/@jeff.daniel77/accessing-the-kaggle-com-api-with-jupyter-notebook-on-windows-d6f330bc6953
Aquí hay una secuencia de comandos para la recopilación de conjuntos de datos "openml". Es de esperar que se pueda proporcionar algo similar para otras bases de datos.
#see docs: https://docs.openml.org/Python-guide/
!pip install openml
import openml
import numpy as np
import pandas as pd
import time
# Get information on all collection of openml datasets:
datalist = openml.datasets.list_datasets(output_format="dataframe")
# select datasets by some conditions (just pandas) - we will get just 4 such datasets
datasets_selected = datalist[ (datalist.NumberOfInstances < 2550) & (datalist.NumberOfInstances > 300)& (datalist.NumberOfFeatures > 10000) & (datalist.NumberOfFeatures < 40000) & \
( datalist.NumberOfFeatures != 10937) ].sort_values(["NumberOfInstances"], ascending=False)#.head(n=20)
print(datasets_selected.shape)
# load all selected datasets and print short info:
for i in range(len(datasets_selected)):
nm = datasets_selected['name'].iloc[i]
print(nm, i )
did = int( datasets_selected['did'].iloc[i] ) # did - dataset_id
t0 = time.time()
data = openml.datasets.get_dataset(did)
X, y, categorical_indicator, attribute_names = data.get_data(
dataset_format="array", target=data.default_target_attribute )
print(X.shape, y.shape, time.time()-t0,'secs passed' )
Aquí hay un ejemplo aún más simple para los conjuntos de datos integrados de sklearn:
import numpy as np
from sklearn import datasets
import time
list_id = ['load_boston', 'load_iris', 'load_diabetes', 'load_digits', 'load_linnerud', 'load_wine' , 'load_breast_cancer'] + \
['fetch_california_housing', 'fetch_covtype', 'fetch_lfw_people', 'fetch_20newsgroups_vectorized','fetch_olivetti_faces' ]
# 'fetch_rcv1', - too long
# 'fetch_lfw_pairs' - TypeError fetch_lfw_pairs() got an unexpected keyword argument 'return_X_y
# 'fetch_kddcup99' - sometimes problem happens
for id in list_id:
print(id)
t0 = time.time()
func_load = getattr(datasets, id )
X,y = func_load(return_X_y = True)
print(id, X.shape, time.time()-t0, 'secs passed')
OpenML tiene una galería de diferentes ejemplos de casos de uso, que incluyen la exploración y descarga de conjuntos de datos a través de Python y la ejecución de pruebas comparativas: https://openml.github.io/openml-python/master/examples/index.html
Cuando desee comparar nuevos algoritmos, esta es la esencia:
import openml
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
suite = openml.study.get_suite('OpenML-CC18') # get benchmark suite
tasks = np.random.choice(suite.tasks, size=10, replace=False) # sample 10 tasks randomly
clf = make_pipeline(SimpleImputer(),RandomForestClassifier()) # simple pipeline
for task_id in tasks:
task = openml.tasks.get_task(task_id)
print("Running on task",task.get_dataset().name)
run = openml.runs.run_model_on_task(clf, task)
print(run.get_metric_fn(accuracy_score))
Salida (estas son tareas de CV de 10 veces):
Running on task credit-approval
[0.928 0.884 0.841 0.768 0.913 0.884 0.884 0.841 0.899 0.884]
Running on task pc1
[0.955 0.919 0.946 0.955 0.937 0.973 0.919 0.928 0.919 0.918]
También puede optar por compartir directamente el resultado en OpenML con run.publish()
Descargo de responsabilidad: soy uno de los desarrolladores principales de OpenML