Jak przekonwertować dane z obiektu Scikit-Learn Bunch na 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
Próbki SANBI
źródło
źródło
load_boston()
. Ta odpowiedź działa bardziej ogólnie: stackoverflow.com/a/46379878/1840471Ten samouczek może Cię zainteresować: http://www.neural.cz/dataset-exploration-boston-house-pricing.html
źródło
Rozwiązanie TOMDLt nie jest wystarczająco ogólne dla wszystkich zestawów danych w scikit-learn. Na przykład nie działa w przypadku zbioru danych dotyczących mieszkań bostońskich. Proponuję inne, bardziej uniwersalne rozwiązanie. Nie ma też potrzeby używania numpy.
Jako funkcja ogólna:
źródło
Jako alternatywa, którą mógłbym znacznie łatwiej owinąć głową:
Zasadniczo zamiast łączyć od samego początku, wystarczy utworzyć ramkę danych z macierzą funkcji, a następnie po prostu dodać kolumnę docelową z danymi [„whatvername”] i pobrać wartości docelowe z zestawu danych
źródło
Zajęło mi to 2 godziny, żeby to rozgryźć
Odzyskaj gatunki dla moich pand
źródło
W przeciwnym razie użyj zbiorów danych dotyczących porodów morskich, które są rzeczywistymi ramkami danych pand:
Porównaj z zestawami danych scikit Learn:
źródło
To działa dla mnie.
źródło
Innym sposobem łączenia funkcji i zmiennych docelowych może być użycie
np.column_stack
( szczegóły )Wynik:
Jeśli potrzebujesz etykiety ciągu dla
target
, możesz użyćreplace
, konwertująctarget_names
nadictionary
i dodając nową kolumnę:Wynik:
źródło
Zasadniczo potrzebujesz "danych" i masz je w paczce scikit, teraz potrzebujesz tylko "celu" (przewidywania), który również znajduje się w paczce.
Więc wystarczy połączyć te dwa, aby dane były kompletne
źródło
Od wersji 0.23 możesz bezpośrednio zwrócić ramkę DataFrame przy użyciu
as_frame
argumentu. Na przykład ładowanie zestawu danych tęczówki:W moim rozumieniu, korzystając z informacji o tymczasowym wydaniu , działa to dla zestawów danych dotyczących raka piersi, cukrzycy, cyfr, tęczówki, linnerud, wina i california_houses.
źródło
Aktualizacja: 2020
Możesz użyć tego parametru,
as_frame=True
aby pobrać ramki danych pandy.Jeśli dostępny jest parametr as_frame (np. Load_iris)
Jeśli parametr as_frame NIE jest dostępny (np. Load_boston)
źródło
Opracowując najlepszą odpowiedź i odnosząc się do mojego komentarza, oto funkcja konwersji
źródło
Cokolwiek TomDLT odpowiedział, może nie działać dla niektórych z was, ponieważ
ponieważ iris ['feature_names'] zwraca tablicę numpy. W tablicy numpy nie możesz dodać tablicy i listy ['cel'] za pomocą samego operatora +. Dlatego musisz najpierw przekonwertować go na listę, a następnie dodać.
Możesz to zrobić
To zadziała dobrze, chociaż ...
źródło
Może być lepszy sposób, ale oto, co zrobiłem w przeszłości i działa całkiem dobrze:
Teraz moje dane będą miały wszystko, czego potrzebujesz - atrybuty, zmienną docelową i nazwy kolumn
źródło
mydata = pd.DataFrame(items[1][1])
rzucaTypeError: 'dict_items' object does not support indexing
Ten fragment jest jedynie cukrem syntaktycznym zbudowanym na podstawie tego, co TomDLT i rolyat już wnieśli i wyjaśnili. Jedyna różnica polega na tym, że
load_iris
zamiast słownika zwróci krotkę, a nazwy kolumn zostaną wyliczone.źródło
źródło
Jeden z najlepszych sposobów:
Digits to sklearn dataframe i przekonwertowałem ją na pandas DataFrame
źródło
Wziąłem kilka pomysłów z Twoich odpowiedzi i nie wiem, jak to skrócić :)
Daje to Pandas DataFrame z nazwami_funkcji oraz celem jako kolumnami i RangeIndex (start = 0, stop = len (df), step = 1). Chciałbym mieć krótszy kod, w którym mógłbym bezpośrednio dodać „cel”.
źródło
Interfejs API jest nieco bardziej przejrzysty niż sugerowane odpowiedzi. Tutaj, używając
as_frame
i pamiętaj, aby dołączyć również kolumnę odpowiedzi.źródło
Oto inny przykład zintegrowanej metody.
Dane iris_X są importowane jako pandy DataFrame, a docelowe iris_y są importowane jako pandy Series.
źródło
źródło
To łatwa metoda zadziałała dla mnie.
Ale można to również zastosować do load_iris.
źródło