Đang tải bộ sưu tập tập dữ liệu - Ví dụ về mã Python
Đô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
Làm thế nào để tìm nạp dữ liệu Kaggle từ mã python?
Cài đặt gói kaggle C: \ Users \ TalgatHafiz> pip cài đặt kaggle
đă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ộ
Tạo ".kaggle" dir C: \ Users \ TalgatHafiz> mkdir .kaggle và di chuyển "kaggle.json" vào thư mục đó
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
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
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
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
Đâ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')
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