2017-01-10 8 views
5

पोस्ट करने से पहले मैंने बहुत सी खोज की और this question पाया जो वास्तव में मेरी समस्या हो सकती है। हालांकि, मैंने कोशिश की कि उत्तर में क्या प्रस्तावित किया गया है लेकिन दुर्भाग्य से इसने इसे ठीक नहीं किया है, और मैं आगे स्पष्टीकरण के लिए एक टिप्पणी नहीं जोड़ सका, क्योंकि मैं यहां एक नया सदस्य हूं।2 डी-इनपुट, 1 डी-आउटपुट रिग्रेशन के लिए विज्ञान-सीखने की गाऊशियन प्रक्रिया का सही ढंग से उपयोग कैसे करें?

वैसे भी, मैं पाइथन में विज्ञान के साथ गॉसियन प्रक्रियाओं का उपयोग करना चाहता हूं - एक सरल लेकिन असली मामला शुरू करने के लिए (विज्ञान-सीखने के दस्तावेज़ीकरण में दिए गए उदाहरणों का उपयोग करके)। मेरे पास 2 डी इनपुट सेट (2 पैरामीटर के 8 जोड़े) हैं जिन्हें एक्स कहा जाता है। मेरे पास 8 संबंधित आउटपुट हैं, 1 डी-सरणी y में एकत्र हुए।

# Input space 
x1 = np.linspace(x1min, x1max) 
x2 = np.linspace(x2min, x2max) 
x = (np.array([x1, x2])).T 

तब मैं जीपी मॉडल का दृष्टांत, मेरे प्रशिक्षण डेटा (एक्स, वाई) लिए फिट है, और 1 डी भविष्यवाणी करने:

# Inputs: 8 points 
X = np.array([[p1, q1],[p1, q2],[p1, q3],[p1, q4],[p2, q1],[p2, q2],[p2, q3],[p2, q4]]) 

# Observations: 8 couples 
y = np.array([r1,r2,r3,r4,r5,r6,r7,r8]) 

मैं एक इनपुट परीक्षण अंतरिक्ष एक्स परिभाषित

kernel = C(1.0, (1e-3, 1e3)) * RBF([5,5], (1e-2, 1e2)) 
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=15) 
gp.fit(X, y) 
y_pred, MSE = gp.predict(x, return_std=True) 
: मेरी इनपुट अंतरिक्ष एक्स पर y_pred

और फिर मैं एक 3 डी साजिश बनाने:

fig = pl.figure() 
ax = fig.add_subplot(111, projection='3d') 
Xp, Yp = np.meshgrid(x1, x2) 
Zp = np.reshape(y_pred,50) 

surf = ax.plot_surface(Xp, Yp, Zp, rstride=1, cstride=1, cmap=cm.jet, 
linewidth=0, antialiased=False) 
pl.show() 

यह मैं क्या प्राप्त है:

RBF[5,5]

जब मैं कर्नेल पैरामीटर मैं कुछ इस तरह, क्या पोस्टर मैं के लिए इसी तरह मिलता संशोधित

RBF[10,10]

इन भूखंडों भी मेल नहीं खाते: गॉट ऊपर उल्लेख किया मूल प्रशिक्षण बिंदुओं से अवलोकन (कम प्रतिक्रिया [65.137] के लिए प्राप्त की जाती है और [92.3,54] के लिए उच्चतम) प्राप्त होती है।

मैं 2 डी में जीपी के लिए बिल्कुल नया हूं (पाइथन बहुत पहले भी शुरू नहीं हुआ) इसलिए मुझे लगता है कि मुझे कुछ याद आ रहा है ... कोई भी जवाब सहायक और बहुत सराहना की जाएगी, धन्यवाद!

+0

मैंने GPy और pyGPs का उपयोग करने की भी कोशिश की, लेकिन चूंकि वे sklearn की तुलना में थोड़ा कम दस्तावेज हैं, मैं 2 डी में बहुत दूर नहीं गया था। लेकिन अगर आपको लगता है कि इनमें से एक अभी भी मेरी समस्या के लिए एक बेहतर विकल्प हो सकता है, तो विज्ञान-सीखने के बजाय, कृपया मुझे बताएं -और क्यों! धन्यवाद। – Julie

उत्तर

1

मैं विज्ञान-सीखने वाले गाऊशियन प्रक्रिया का उपयोग करके भी काफी नया हूं। लेकिन कुछ प्रयासों के बाद, मैंने सफलतापूर्वक 3-डी गाऊशियन प्रक्रिया प्रतिगमन को लागू करने में कामयाब रहे। 1-डी रिग्रेशन के कई उदाहरण हैं लेकिन उच्च इनपुट आयामों पर कुछ भी नहीं है।

शायद आप जो मूल्यों का उपयोग कर रहे हैं उन्हें दिखा सकते हैं।

मैंने पाया कि कभी-कभी प्रारूप जिसमें आप इनपुट भेजते हैं, कुछ समस्याएं उत्पन्न कर सकते हैं। के रूप में इनपुट एक्स प्रारूपित करने का प्रयास:

X = np.array([param1, param2]).T 

और के रूप में आउटपुट स्वरूप:

gp.fit(X, y.reshape(-1,1)) 

इसके अलावा, जैसा मैं समझ गया, कार्यान्वयन एक मतलब समारोह मीटर = 0 मान लिया गया है। यदि आप जिस आउटपुट को रेग्रेस करने का प्रयास कर रहे हैं, वह औसत मान प्रस्तुत करता है जो 0 से काफी अलग है तो आपको इसे सामान्य बनाना चाहिए (जो शायद आपकी समस्या का समाधान करेगा)। पैरामीटर स्पेस को मानकीकृत करने में भी मदद मिलेगी।

संबंधित मुद्दे