2017-06-03 9 views
6

私はsklearn.datasetをロードしようとしており、キー(target_names、target & DESCR)に従って列が欠落しています。最後の列を含めるにはさまざまな方法を試しましたが、エラーがあります。Pandas DataFrameにSKLearn癌データセットを読み込む

import numpy as np 
import pandas as pd 
from sklearn.datasets import load_breast_cancer 

cancer = load_breast_cancer() 
print cancer.keys() 

キーは、それだけ戻り[ 'target_names'、 'データ'、 '目標'、 'DESCR'、 'FEATURE_NAMEに']上記のコードで

data = pd.DataFrame(cancer.data, columns=[cancer.feature_names]) 
print data.describe() 

あります私は31の列が必要なときに30列。最も良い方法は、scikit-learnデータセットをpandas DataFrameに読み込むことです。

+0

あなたは説明できますか? 'cancer.data.shape'を使うか、[データセットの説明](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html)をチェックすると、30個しかないようですデータセット内の列。どの列を見逃しましたか? –

+1

まだデータフレームにロードされていないので、dataset.keys()からtarget/target_namesカラムが抜けています。 – pythonhunter

答えて

2

target列を使用する場合は、cancer.dataにないため追加する必要があります。 cancer.target0または1の列を持ち、cancer.target_namesにはラベルが付いています。私はあなたが欲しいものが次のようになることを願っています:

import numpy as np 
import pandas as pd 
from sklearn.datasets import load_breast_cancer 

cancer = load_breast_cancer() 
print cancer.keys() 

data = pd.DataFrame(cancer.data, columns=[cancer.feature_names]) 
print data.describe() 

data = data.assign(target=pd.Series(cancer.target)) 
print data.describe() 

# In case you want labels instead of numbers. 
data.replace(to_replace={'target': {0: cancer.target_names[0]}}, inplace=True) 
data.replace(to_replace={'target': {1: cancer.target_names[1]}}, inplace=True) 
print data.shape # data.describe() won't show the "target" column here because I converted its value to string. 
+0

はい、私はちょうど、データ['Target'] = pd.Series(data = cancer.target、index = data.index)もうまくいきました。 – pythonhunter

1

これはpd.Seriesでも使えます。

import numpy as np 
import pandas as pd 
from sklearn.datasets import load_breast_cancer 

cancer = load_breast_cancer() 
print cancer.keys() 

data = pd.DataFrame(cancer.data, columns=[cancer.feature_names]) 
data['Target'] = pd.Series(data=cancer.target, index=data.index) 

print data.keys() 
print data.shape 
3

別のオプションが、ワンライナー、機能やターゲット変数を含むデータフレームを作成することです:31個の列がなければならない理由

import pandas as pd 
import numpy as np 
from sklearn.datasets import load_breast_cancer 

cancer = load_breast_cancer() 
df = pd.DataFrame(np.c_[cancer['data'], cancer['target']], 
        columns= np.append(cancer['feature_names'], ['target'])) 
関連する問題