2017-06-03 47 views
6

Tôi đang cố gắng tải một sklearn.dataset và thiếu cột, theo các khóa (target_names, target & DESCR). Tôi đã thử các phương pháp khác nhau để bao gồm cột cuối cùng, nhưng có lỗi.Đang tải tập dữ liệu về SKLearn vào Pandas DataFrame

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

cancer = load_breast_cancer() 
print cancer.keys() 

các phím là [ 'target_names', 'dữ liệu', 'mục tiêu', 'DESCR', 'feature_names']

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

với đoạn code trên, nó chỉ trả lại 30 cột, khi tôi cần 31 cột. Cách tốt nhất là tải các tập dữ liệu scikit-learn vào pandas DataFrame.

+0

bạn có thể giải thích lý do tại sao cần có 31 cột? Nếu bạn sử dụng 'cancer.data.shape' hoặc kiểm tra [mô tả tập dữ liệu] (http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html), có vẻ như chỉ có 30 các cột trong tập dữ liệu. Bạn đã bỏ lỡ cột nào? –

+1

Tôi thiếu cột target/target_names từ dataset.keys(), vì nó chưa được tải vào khung dữ liệu. – pythonhunter

Trả lời

2

Nếu bạn muốn có cột target, bạn sẽ cần phải thêm nó vì nó không nằm trong số cancer.data. cancer.target có cột có 0 hoặc 1cancer.target_names có nhãn. Tôi hy vọng những điều sau đây là những gì bạn muốn:

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

Có, tôi chỉ tìm ra, dữ liệu ['Mục tiêu'] = pd.Series (data = cancer.target, index = data.index) cũng hoạt động. – pythonhunter

1

Điều này cũng hoạt động, cũng sử dụng 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

Một tùy chọn khác, nhưng một lớp lót, để tạo ra các dataframe bao gồm các tính năng và biến mục tiêu là:

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'])) 
Các vấn đề liên quan