Carregando coleções de conjuntos de dados - exemplos de código Python
À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
Como obter dados Kaggle do código Python?
Instale o pacote kaggle C: \ Users \ TalgatHafiz> pip install kaggle
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
Crie ".kaggle" dir C: \ Users \ TalgatHafiz> mkdir .kaggle e mova "kaggle.json" para esse diretório
veja todas as competições ativas executando o seguinte comando C: \ Usuários \ TalgatHafiz> lista de competições kaggle
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
execute esses comandos do notebook import kaggle! kaggle competitions download -c contradictory-my-dear-watson
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
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')
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