2016-06-24 16 views
10

का मिश्रण संभाल नहीं सकता है। मैं linear_model का उपयोग कर रहा हूं। विज्ञान से लिनेररियन - भविष्यवाणी मॉडल के रूप में सीखें। यह काम करता है और यह सही है। मुझे सटीकता_स्कोर मीट्रिक का उपयोग करके अनुमानित परिणामों का मूल्यांकन करने में समस्या है। यह मेरा सच्चा डाटा है:शुद्धता स्कोर: ValueError: बाइनरी और निरंतर

array([1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0]) 

और ये मेरे भविष्य कहनेवाला डाटा है:

array([ 0.07094605, 0.1994941 , 0.19270157, 0.13379635, 0.04654469, 
    0.09212494, 0.19952108, 0.12884365, 0.15685076, -0.01274453, 
    0.32167554, 0.32167554, -0.10023553, 0.09819648, -0.06755516, 
    0.25390082, 0.17248324]) 

मेरे कोड:

accuracy_score(y_true, y_pred, normalize=False) 

और इस त्रुटि संदेश है:

"ValueError: Can't handle mix of binary and continuous"

सहायता? धन्यवाद।

+1

dtypes क्या हैं? क्या आप अभी 'y_true' को' numpy.int8' पर डाल सकते हैं? शायद आप स्पष्ट चर की भविष्यवाणी करने के लिए, लॉजिस्टिक रिग्रेशन की तलाश में हैं? – Benjamin

+0

यह 'type_of_target (y_true)' और 'type_of_target (y_pred)' ('utils.multiclass.py' में) की जांच कर रहा है। यदि सरणी में केवल 2 अद्वितीय मान हैं तो इसे 'बाइनरी' के रूप में वर्गीकृत किया गया है। – hpaulj

उत्तर

8
accuracy_score(y_true, y_pred.round(), normalize=False) 

अगर आप y_pred.round() की दहलीज उपयोग पर अधिक नियंत्रण (y_pred>threshold).astype(int) बजाय जहां threshold दो वर्गों को अलग करने के अपने मूल्य है पसंद करते हैं।

+1

आप कट पॉइंट को 0.5 पर सेट कर सकते हैं, या रॉक वक्र के अनुसार उदाहरण के लिए एक और थ्रेसहोल्ड तय कर सकते हैं, और विशिष्टता बनाम संवेदनशीलता का एक अलग व्यापार-बंद है, https://stats.stackexchange.com/questions/29719/ देखें कैसे-निर्धारित-सर्वोत्तम-कटऑफ-पॉइंट-एंड-आत्मविश्वास-अंतराल-उपयोग-रॉक-वक्र-मैं आंकड़ों पर अधिक जानकारी देता हूं। – natbusa

+0

आपके अनुमानित सरणी पर एक नोट। मैं देखता हूं कि आपके पास नकारात्मक मूल्य हैं।आम तौर पर आपके पास 0 और 1 के बीच संभावनाएं होनी चाहिए। आप सॉफ्टमैक्स फ़ंक्शन का उपयोग करके संभावनाओं में कनवर्ट कर सकते हैं http://stackoverflow.com/questions/34968722/softmax-function-python – natbusa

1

समस्या यह है कि सत्य वाई बाइनरी (शून्य और एक) है, जबकि आपकी भविष्यवाणियां नहीं हैं। आपने शायद संभावनाएं उत्पन्न की हैं और भविष्यवाणियां नहीं हैं, इसलिए नतीजा :) कक्षा सदस्यता उत्पन्न करने के बजाय प्रयास करें, और इसे काम करना चाहिए!

1

सटीकता_स्कोर एक वर्गीकरण मीट्रिक है, आप इसे एक रिग्रेशन समस्या के लिए उपयोग नहीं कर सकते हैं।

You can see the available regression metrics here

1

हो सकता है कि यह जो इस सवाल पाता है किसी को मदद करता है:

रूप JohnnyQ पहले ही बताया, बात नहीं, आप गैर बाइनरी (नहीं 0 और न ही 1) अपने y_pred में मान हैं वह यह है कि मैं। ई।

print(((y_pred != 0.) & (y_pred != 1.)).any()) 

आउटपुट में True देखेंगे। (आदेश पता चला है कि कोई मूल्य है जो 0 या 1 नहीं है)।

आप का उपयोग कर अपने गैर द्विआधारी मूल्यों देख सकते हैं:

non_binary_values = y_pred[(y_pred['score'] != 1) & (y_pred['score'] != 0)] 
non_binary_idxs = y_pred[(y_pred['score'] != 1) & (y_pred['score'] != 0)].index 

एक प्रिंट बयान कर सकते हैं उत्पादन ऊपर derivated चर।

अंत में, इस समारोह सभी गैर द्विआधारी प्रविष्टियों में से अपने डेटा को साफ कर सकते हैं:

def remove_unlabelled_data(X, y): 
    drop_indexes = X[(y['score'] != 1) & (y['score'] != 0)].index 
    return X.drop(drop_indexes), y.drop(drop_indexes) 
संबंधित मुद्दे