Как создать объект sklearn.datasets.base.Bunch в scikit-learn из моих собственных данных?

В большинстве алгоритмов Scikit-learn данные должны быть загружены как объект Bunch. Для многих примеров в учебнике load_files() или другие функции используются для заполнения объекта Bunch. Такие функции, как load_files(), ожидают, что данные будут присутствовать в определенном формате, но у меня есть данные, хранящиеся в другом формате, а именно CSV файл со строками для каждого поля.

Как разобрать это и загрузить данные в формате объекта Bunch?

Ответ 1

Вам не нужно создавать объекты Bunch. Они просто полезны для загрузки внутренних образцов данных scikit-learn.

Вы можете напрямую пересылать список строк Python в объект vectorizer.

Ответ 2

Вы можете сделать это следующим образом:

import numpy as np
import sklearn.datasets

examples = []
examples.append('some text')
examples.append('another example text')
examples.append('example 3')

target = np.zeros((3,), dtype=np.int64)
target[0] = 0
target[1] = 1
target[2] = 0
dataset = sklearn.datasets.base.Bunch(data=examples, target=target)

Ответ 3

Это пример набора данных о диагностике рака молочной железы (диагностический), вы можете найти csv в Kaggle:

 #1)From column 2 at 32 in the CSV  are 
 #X_train and X_test data @usecols=range(2,32) this is stored in the Bunch 
 #Object key named "data"
from numpy import genfromtxt
data = genfromtxt("YOUR DATA DIRECTORY", delimiter=',', skip_header=1, 
                 usecols=range(2,32))
 #2-)I am interested in the column data B (column 1 
 #in Numpy Array @usecols= (1),) in the CSV 
 # because is the output of  y_train and y_test and is stored in the Bunch 
#Object Key named: "target"
import pandas as pd
target = genfromtxt("YOUR DATA DIRECTORY", delimiter=',', 
                    skip_header=1, usecols=(1), dtype=str)

# Есть некоторые трюки для преобразования цели, как в    # sklearn,     # offcourse это можно сделать в уникальной переменной (target, target1,... is     #отделяется только для объяснения того, что я сделал.     # 3-) Сначала преобразуйте numpy в Panda

target2 = pd.Series(target)

# 4-) Используется функция ранга, вы можете пропустить шаг 5

target3 = target2.rank(method='dense', axis=0)

# 5-) Это только для преобразования цели в 0 или 1, как пример в     #Book

target4 = (target3 % 2 == 0) * 1 

# 6-) Получает значения в numpy

target5 = target4.values

Здесь я скопировал решение Хью Перкинса

import sklearn  dataset = sklearn.datasets.base.Bunch(data = data, target = target5)