Как мне преобразовать данные из объекта Scikit-learn Bunch в 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
SANBI образцы
источник
источник
load_boston()
. Этот ответ работает в более общем плане: stackoverflow.com/a/46379878/1840471Этот учебник может быть интересен: http://www.neural.cz/dataset-exploration-boston-house-pricing.html
источник
Решение TOMDLt недостаточно универсально для всех наборов данных в scikit-learn. Например, это не работает для набора данных о жилье в Бостоне. Предлагаю другое решение, более универсальное. Нет необходимости использовать numpy.
Как общая функция:
источник
Просто в качестве альтернативы, которую я мог бы гораздо проще понять:
По сути, вместо конкатенации с самого начала, просто создайте фрейм данных с матрицей функций, а затем просто добавьте целевой столбец с данными ['whatvername'] и возьмите целевые значения из набора данных
источник
Мне потребовалось 2 часа, чтобы понять это
Верни вид для моих панд
источник
В противном случае используйте наборы данных seaborn, которые являются фактическими фреймами данных pandas:
Сравните с наборами данных scikit learn:
источник
У меня это работает.
источник
Другой способ комбинировать функции и целевые переменные можно использовать
np.column_stack
( подробности )Результат:
Если вам нужен ярлык строки для
target
, то вы можете использоватьreplace
путем преобразованияtarget_names
вdictionary
и добавить новый столбец:Результат:
источник
По сути, вам нужны «данные», и они у вас есть в группе scikit, теперь вам нужна только «цель» (прогноз), которая также находится в группе.
Так что просто нужно объединить эти два, чтобы данные были полными.
источник
Начиная с версии 0.23, вы можете напрямую вернуть DataFrame с помощью
as_frame
аргумента. Например, загрузка набора данных радужной оболочки:Насколько я понимаю, используя предварительные примечания к выпуску , это работает для наборов данных груди_cancer, diab, digits, iris, linnerud, wine и california_houses.
источник
Обновление: 2020
Вы можете использовать параметр
as_frame=True
для получения фреймов данных pandas.Если доступен параметр as_frame (например, load_iris)
Если параметр as_frame НЕ доступен (например, load_boston)
источник
Отрабатывая лучший ответ и обращаясь к моему комментарию, вот функция для преобразования
источник
На что бы ни ответил TomDLT, для некоторых из вас это может не сработать, потому что
потому что iris ['feature_names'] возвращает вам массив numpy. В массиве numpy вы не можете добавить массив и список ['target'] только оператором +. Следовательно, вам нужно сначала преобразовать его в список, а затем добавить.
Ты можешь сделать
Это будет работать нормально, хотя ..
источник
Возможно, есть способ получше, но вот что я делал в прошлом, и он работает довольно хорошо:
Теперь в mydata будет все, что вам нужно - атрибуты, целевая переменная и имена столбцов.
источник
mydata = pd.DataFrame(items[1][1])
throwsTypeError: 'dict_items' object does not support indexing
Этот фрагмент - всего лишь синтаксический сахар, построенный на том, что TomDLT и rolyat уже внесли и объяснили. Единственное отличие будет заключаться в том, что
load_iris
вместо словаря будет возвращен кортеж, а имена столбцов перечислены.источник
источник
Один из лучших способов:
Digits - это фрейм данных sklearn, и я преобразовал его в фрейм данных pandas
источник
Я взял пару идей из ваших ответов и не знаю, как сделать их короче :)
Это дает Pandas DataFrame с feature_names плюс target в виде столбцов и RangeIndex (start = 0, stop = len (df), step = 1). Я хотел бы иметь более короткий код, в который я мог бы напрямую добавлять «цель».
источник
API немного чище, чем предложенные ответы. Здесь, используя
as_frame
и обязательно включив столбец ответа.источник
Вот еще один пример интегрированного метода, который может быть полезен.
Данные iris_X импортируются как pandas DataFrame, а целевой iris_y импортируется как pandas Series.
источник
источник
Этот простой метод сработал для меня.
Но это также применимо и к load_iris.
источник