Bagaimana cara mengonversi data dari objek Scikit-learn Bunch ke Pandas DataFrame?
from sklearn.datasets import load_iris
import pandas as pd
data = load_iris()
print(type(data))
data1 = pd. # Is there a Pandas method to accomplish this?
dataset
scikit-learn
pandas
Sampel SANBI
sumber
sumber
load_boston()
. Jawaban ini bekerja lebih umum: stackoverflow.com/a/46379878/1840471Tutorial ini mungkin menarik: http://www.neural.cz/dataset-exploration-boston-house-pricing.html
sumber
Solusi TOMDLt tidak cukup umum untuk semua kumpulan data di scikit-learn. Misalnya, ini tidak berfungsi untuk kumpulan data perumahan boston. Saya mengusulkan solusi berbeda yang lebih universal. Tidak perlu menggunakan numpy juga.
Sebagai fungsi umum:
sumber
Sebagai alternatif yang bisa saya lakukan dengan lebih mudah:
Pada dasarnya alih-alih menggabungkan dari awal, buat saja bingkai data dengan matriks fitur dan kemudian tambahkan kolom target dengan data ['whatvername'] dan ambil nilai target dari dataset
sumber
Butuh waktu 2 jam untuk menyelesaikannya
Dapatkan kembali spesies panda saya
sumber
Jika tidak, gunakan kumpulan data seaborn yang merupakan bingkai data panda sebenarnya:
Bandingkan dengan kumpulan data scikit learn:
sumber
Ini berhasil untuk saya.
sumber
Cara lain untuk menggabungkan fitur dan variabel target dapat menggunakan
np.column_stack
( detail )Hasil:
Jika Anda membutuhkan label string untuk
target
, maka Anda dapat menggunakanreplace
dengan mengkonversitarget_names
kedictionary
dan menambahkan kolom baru:Hasil:
sumber
Pada dasarnya yang Anda butuhkan adalah "data", dan Anda memilikinya dalam kelompok scikit, sekarang Anda hanya memerlukan "target" (prediksi) yang juga ada dalam kelompok tersebut.
Jadi hanya perlu menggabungkan keduanya untuk membuat datanya lengkap
sumber
Mulai versi 0.23, Anda bisa langsung mengembalikan DataFrame menggunakan
as_frame
argumen. Misalnya, memuat set data iris:Dalam pemahaman saya menggunakan catatan rilis sementara , ini berfungsi untuk kumpulan data breast_cancer, diabetes, digit, iris, linnerud, anggur, dan california_houses.
sumber
Pembaruan: 2020
Anda dapat menggunakan parameter
as_frame=True
untuk mendapatkan bingkai data pandas.Jika parameter as_frame tersedia (mis. Load_iris)
Jika parameter as_frame TIDAK tersedia (mis. Load_boston)
sumber
Mengerjakan jawaban terbaik dan menangani komentar saya, berikut adalah fungsi untuk konversi
sumber
Apa pun jawaban TomDLT, mungkin tidak berhasil untuk sebagian dari Anda karena
karena iris ['feature_names'] mengembalikan Anda larik numpy. Dalam larik numpy Anda tidak dapat menambahkan larik dan daftar ['target'] hanya dengan operator +. Oleh karena itu Anda perlu mengubahnya menjadi daftar terlebih dahulu dan kemudian menambahkan.
Anda dapat melakukan
Ini akan bekerja dengan baik tho ..
sumber
Mungkin ada cara yang lebih baik tetapi inilah yang telah saya lakukan di masa lalu dan berhasil dengan baik:
Sekarang mydata akan memiliki semua yang Anda butuhkan - atribut, variabel target, dan nama kolom
sumber
mydata = pd.DataFrame(items[1][1])
melemparTypeError: 'dict_items' object does not support indexing
Cuplikan ini hanyalah gula sintaksis yang dibangun di atas apa yang telah dikontribusikan dan dijelaskan oleh TomDLT dan rolyat . Satu-satunya perbedaan adalah bahwa
load_iris
akan mengembalikan tupel alih-alih kamus dan nama kolom disebutkan.sumber
sumber
Salah satu cara terbaik:
Digit adalah kerangka data sklearn dan saya mengubahnya menjadi DataFrame pandas
sumber
Saya mengambil beberapa ide dari jawaban Anda dan saya tidak tahu bagaimana membuatnya lebih pendek :)
Ini memberikan Pandas DataFrame dengan feature_names plus target sebagai kolom dan RangeIndex (start = 0, stop = len (df), step = 1). Saya ingin memiliki kode yang lebih pendek sehingga saya dapat menambahkan 'target' secara langsung.
sumber
API ini sedikit lebih bersih daripada tanggapan yang disarankan. Di sini, menggunakan
as_frame
dan memastikan untuk menyertakan kolom tanggapan juga.sumber
Berikut contoh metode terintegrasi lainnya yang mungkin membantu.
Data iris_X diimpor sebagai pandas DataFrame dan target iris_y diimpor sebagai Seri pandas.
sumber
sumber
Ini adalah metode mudah yang berhasil untuk saya.
Tapi ini juga bisa diterapkan ke load_iris.
sumber