2017-06-03 10 views
6

मैं एक sklearn.dataset लोड करने की कोशिश कर रहा हूं, और कुंजी के अनुसार कॉलम गायब कर रहा हूं (target_names, target & DESCR)। मैंने अंतिम कॉलम को शामिल करने के लिए विभिन्न विधियों का प्रयास किया है, लेकिन त्रुटियों के साथ।पांडस डेटाफ्रेम में 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_names']

data = pd.DataFrame(cancer.data, columns=[cancer.feature_names]) 
print data.describe() 
कोड के साथ ऊपर

, यह केवल रिटर्न हैं 30 कॉलम, जब मुझे 31 कॉलम चाहिए। पांडस डेटाफ्रेम में साइकेकिट-सीखने वाले डेटासेट को लोड करने का सबसे अच्छा तरीका क्या है।

+0

आप व्याख्या कर सकते हैं क्यों 31 कॉलम होना चाहिए? यदि आप 'cancer.data.shape' का उपयोग करते हैं या [डेटासेट विवरण] की जांच करें (http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html), ऐसा लगता है कि केवल 30 हैं डेटासेट में कॉलम। आप किस कॉलम को याद कर चुके हैं? –

+1

मुझे dataset.keys() से लक्ष्य/target_names कॉलम गुम है, क्योंकि इसे अभी तक डेटा फ्रेम में लोड नहीं किया गया है। – pythonhunter

उत्तर

2

आप एक target स्तंभ आप इसे जोड़ने के लिए है, क्योंकि यह cancer.data में नहीं है की आवश्यकता होगी चाहते हैं। cancer.target में 0 या 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

हां, मैंने अभी पता लगाया है, डेटा ['लक्ष्य'] = pd.Series (डेटा = कैंसर.target, अनुक्रमणिका = 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

एक अन्य विकल्प है, लेकिन एक एक लाइनर, सुविधाओं और लक्ष्य चर सहित dataframe बनाने के लिए है:

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'])) 
संबंधित मुद्दे