Carregando coleções de conjuntos de dados - exemplos de código Python

Oct 20 2020

Às vezes, você pode querer verificar suas ideias em vários conjuntos de dados. Existem vários lugares com coleções de conjuntos de dados.

Pergunta: Por favor, compartilhe alguns scripts Python sobre como baixar vários conjuntos de dados dessa (ou outra) coleção de conjuntos de dados?

Idealmente, deve-se ser capaz de: 1) obter a lista de conjuntos de dados 2) selecionar alguns desejados pelas condições 3) baixar os selecionados. Mas se você tiver algo diferente, por favor, compartilhe de qualquer maneira.

Para banco de dados "openml" - eu tenho um script - veja minha própria resposta. Mas eu tenho para outras coleções: Kaggle, uci ...


Aqui estão alguns exemplos de coleções de conjuntos de dados:

https://www.openml.org/

https://archive.ics.uci.edu/ml/index.php

https://ieee-dataport.org/datasets

O Каggle contém muitos conjuntos de dados, também há coleções específicas: coleções de gráficos, veja a lista aqui https://mathoverflow.net/a/359449/10446 , muitos dados biológicos estão aqui: https://www.ncbi.nlm.nih.gov/gds

Respostas

5 Farid Oct 22 2020 at 09:48

Como obter dados Kaggle do código Python?

  1. Instale o pacote kaggle C: \ Users \ TalgatHafiz> pip install kaggle

  2. faça login na sua conta Kaggle, clique no ícone no canto superior direito -> Minha conta Role para baixo até a seção API Clique em "Criar novo token de API" O arquivo "kaggle.json" é criado e salvo localmente

  3. Crie ".kaggle" dir C: \ Users \ TalgatHafiz> mkdir .kaggle e mova "kaggle.json" para esse diretório

  4. veja todas as competições ativas executando o seguinte comando C: \ Usuários \ TalgatHafiz> lista de competições kaggle

  5. Selecione uma das competições em que você se inscreveu, por exemplo https://www.kaggle.com/c/contradictory-my-dear-watson/data#Rolar para baixo. Logo antes da seção "Data Explorer" deve haver uma linha de API: "kaggle competitions download -c contradictory-my-dear-watson" copie-o

  6. execute esses comandos do notebook import kaggle! kaggle competitions download -c contradictory-my-dear-watson

  7. O arquivo de dados compactado é baixado no mesmo diretório onde está o seu bloco de notas: C: \ Users \ TalgatHafiz \ conda \ contradictory-my-dear-watson.zip, então agora você pode descompactar e começar a usar os dados

Se você ainda tiver dúvidas, leia https://medium.com/@jeff.daniel77/accessing-the-kaggle-com-api-with-jupyter-notebook-on-windows-d6f330bc6953

3 AlexanderChervov Oct 20 2020 at 02:35

Aqui está algum script para a coleção "openml" de conjuntos de dados. Esperançosamente, alguém pode fornecer algo semelhante para outros bancos de dados.

#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' )

Aqui está um exemplo ainda mais simples para conjuntos de dados integrados do 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')
3 JoaquinVanschoren Oct 20 2020 at 16:35

OpenML tem uma galeria de diferentes exemplos de casos de uso, incluindo navegação e download de conjuntos de dados por meio de python e benchmarks de execução: https://openml.github.io/openml-python/master/examples/index.html

Quando você deseja comparar novos algoritmos, esta é a essência:

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

Resultado (estas são tarefas de CV de 10 vezes):

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]

Você também pode escolher compartilhar diretamente o resultado no OpenML com run.publish()

Isenção de responsabilidade: eu sou um dos principais desenvolvedores de OpenML