web-dev-qa-db-ja.com

自分のデータからscikit-learnでsklearn.datasets.base.Bunchオブジェクトを作成するにはどうすればよいですか?

ほとんどのScikit-learnアルゴリズムでは、データをBunchオブジェクトとしてロードする必要があります。チュートリアルの多くの例では、load_files()または他の関数を使用してBunchオブジェクトにデータを入力します。 load_files()のような関数は、データが特定の形式で存在することを想定していますが、データは別の形式で保存されています。つまり、各フィールドの文字列を含むCSVファイルです。

これを解析して、Bunchオブジェクト形式でデータをロードするにはどうすればよいですか?

16
David

Bunchオブジェクトを作成する必要はありません。これらは、scikit-learnの内部サンプルデータセットをロードするのに役立ちます。

Python文字列のリストをvectorizerオブジェクトに直接フィードできます。

16
ogrisel

あなたはこのようにそれを行うことができます:

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)
22
Hugh Perkins

これは、ウィスコンシン州乳がん(診断)データセットの例です。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それはUnique変数で作成できます(target、target1、...は#私がしたことを説明するためだけに分離されています。#3-)最初の変換パンダへのゴツゴツ

target2 = pd.Series(target)

#4-)ランク機能を使用するため、ステップ番号5をスキップできます

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

#5-)これは、#Bookの例のように、ターゲットを0または1に変換するためだけのものです

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

#6-)値をnumpyに入れました

target5 = target4.values

ここで私はヒューパーキンスのソリューションをコピーしました

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