Đang tải bộ sưu tập tập dữ liệu - Ví dụ về mã Python

Oct 20 2020

Đôi khi bạn có thể muốn kiểm tra ý tưởng của mình trên nhiều tập dữ liệu. Có một số nơi có bộ sưu tập tập dữ liệu.

Câu hỏi: Vui lòng chia sẻ một số tập lệnh Python làm thế nào để tải xuống nhiều bộ dữ liệu từ bộ sưu tập bộ dữ liệu này (hoặc khác)?

Lý tưởng nhất là người ta có thể: 1) lấy danh sách bộ dữ liệu 2) chọn một số bộ dữ liệu mong muốn theo điều kiện 3) tải xuống những bộ dữ liệu đã chọn. Nhưng nếu bạn có một cái gì đó khác nhau, xin vui lòng chia sẻ anyway.

Đối với cơ sở dữ liệu "openml" - tôi có một tập lệnh - hãy xem câu trả lời của riêng tôi. Nhưng tôi có cho các bộ sưu tập khác: Kaggle, uci ...


Dưới đây là một số ví dụ về bộ sưu tập tập dữ liệu:

https://www.openml.org/

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

https://ieee-dataport.org/datasets

Каggle chứa rất nhiều bộ dữ liệu, cũng có các bộ sưu tập cụ thể: bộ sưu tập đồ thị xem danh sách tại đây https://mathoverflow.net/a/359449/10446 , nhiều dữ liệu sinh học ở đây: https://www.ncbi.nlm.nih.gov/gds

Trả lời

5 Farid Oct 22 2020 at 09:48

Làm thế nào để tìm nạp dữ liệu Kaggle từ mã python?

  1. Cài đặt gói kaggle C: \ Users \ TalgatHafiz> pip cài đặt kaggle

  2. đăng nhập vào tài khoản Kaggle của bạn nhấp vào biểu tượng ở góc trên bên phải -> Tài khoản của tôi Cuộn xuống phần API Nhấp vào "Tạo Mã thông báo API mới". Tệp "kaggle.json" được tạo và lưu cục bộ

  3. Tạo ".kaggle" dir C: \ Users \ TalgatHafiz> mkdir .kaggle và di chuyển "kaggle.json" vào thư mục đó

  4. xem tất cả các cuộc thi đang hoạt động bằng cách chạy lệnh sau C: \ Users \ TalgatHafiz> danh sách các cuộc thi kaggle

  5. Chọn một trong các cuộc thi mà bạn đã đăng ký, ví dụ: https://www.kaggle.com/c/contradictory-my-dear-watson/data#Cuộn xuống. Ngay trước phần "Trình khám phá dữ liệu" phải có dòng API: "kaggle Competition download -c inherit-my-dear-watson" copy it

  6. chạy các lệnh này từ sổ tay nhập khẩu kaggle! kaggle thi tải xuống -c mâu thuẫn-của tôi-thân-watson

  7. tệp dữ liệu đã nén được tải xuống cùng thư mục nơi sổ ghi chép của bạn: C: \ Users \ TalgatHafiz \ conda \ mâu thuẫn-my-dear-watson.zip nên bây giờ bạn có thể giải nén và bắt đầu sử dụng dữ liệu

Nếu bạn vẫn còn thắc mắc, vui lòng đọc https://medium.com/@jeff.daniel77/accessing-the-kaggle-com-api-with-jupyter-notebook-on-windows-d6f330bc6953

3 AlexanderChervov Oct 20 2020 at 02:35

Đây là một số tập lệnh cho tập hợp dữ liệu "openml". Hy vọng rằng người ta có thể cung cấp một cái gì đó tương tự cho các cơ sở dữ liệu khác.

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

Dưới đây là một ví dụ đơn giản hơn nữa cho các tập dữ liệu tích hợp sẵn của 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 có một thư viện các ví dụ trường hợp sử dụng khác nhau, bao gồm duyệt và tải xuống bộ dữ liệu thông qua python và chạy các điểm chuẩn: https://openml.github.io/openml-python/master/examples/index.html

Khi bạn muốn đánh giá các thuật toán mới, đây là ý chính:

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

Đầu ra (đây là những nhiệm vụ CV gấp 10 lần):

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]

Bạn cũng có thể chọn chia sẻ trực tiếp kết quả trên OpenML với run.publish()

Tuyên bố từ chối trách nhiệm: Tôi là một trong những nhà phát triển cốt lõi của OpenML