2015-11-23 8 views
6

मेरा लक्ष्य फिट पैरामीटर मान सहित वास्तविक समीकरण एक बहुपद समारोह के लिए कुछ डेटा फिट और प्राप्त करने के लिए है।बहुपद फिट से समीकरण निकालने के लिए कैसे?

मैं अपने डेटा को this example अनुकूलित और परिणाम की उम्मीद है के रूप में।

import numpy as np 
import matplotlib.pyplot as plt 

from sklearn.linear_model import Ridge 
from sklearn.preprocessing import PolynomialFeatures 
from sklearn.pipeline import make_pipeline 


x = np.array([0., 4., 9., 12., 16., 20., 24., 27.]) 
y = np.array([2.9,4.3,66.7,91.4,109.2,114.8,135.5,134.2]) 

x_plot = np.linspace(0, max(x), 100) 
# create matrix versions of these arrays 
X = x[:, np.newaxis] 
X_plot = x_plot[:, np.newaxis] 

plt.scatter(x, y, label="training points") 

for degree in np.arange(3, 6, 1): 
    model = make_pipeline(PolynomialFeatures(degree), Ridge()) 
    model.fit(X, y) 
    y_plot = model.predict(X_plot) 
    plt.plot(x_plot, y_plot, label="degree %d" % degree) 

plt.legend(loc='lower left') 

plt.show() 

enter image description here

हालांकि, मैं अब जहां संबंधित फिट के लिए वास्तविक समीकरण और सज्जित पैरामीटर मान निकालने के लिए पता नहीं है:

यहाँ मेरी कोड है। मैं वास्तविक फिट समीकरण का उपयोग कहां से प्राप्त करूं?

संपादित करें:

चर model निम्नलिखित गुण होते हैं:

model.decision_function model.fit_transform  model.inverse_transform model.predict   model.predict_proba  model.set_params   model.transform   
model.fit    model.get_params   model.named_steps  model.predict_log_proba model.score    model.steps 

model.get_params वांछित मापदंडों दुकान नहीं है।

उत्तर

5

रैखिक मॉडल के गुणांक intercept_ और coeff_ मॉडल के गुणों में संग्रहीत किए जाते हैं।

आप मोड़-डाउन नियमितीकरण और एक ज्ञात मॉडल खिला-इन के द्वारा और अधिक स्पष्ट रूप से देख सकते हैं; जैसे

import numpy as np 
from sklearn.linear_model import Ridge 
from sklearn.pipeline import make_pipeline 
from sklearn.preprocessing import PolynomialFeatures 

x = 10 * np.random.random(100) 
y = -4 + 2 * x - 3 * x ** 2 

model = make_pipeline(PolynomialFeatures(2), Ridge(alpha=1E-8, fit_intercept=False)) 
model.fit(x[:, None], y) 
ridge = model.named_steps['ridge'] 
print(ridge.coef_) 
# array([-4., 2., -3.]) 

भी ध्यान रखें कि PolynomialFeatures डिफ़ॉल्ट रूप से, एक पूर्वाग्रह अवधि शामिल है, ताकि Ridge में अवरोधन फिटिंग छोटे alpha के लिए निरर्थक हो जाएगा।

+0

बढ़िया है, कि काम करता है। मेरी राय में छुपा हुआ। मैं इसे ऊपर उठाता हूं और इसे बाद में स्वीकार करता हूं। – Cleb

+0

यह "छुपा" है क्योंकि scikit-learn एक मशीन लर्निंग लाइब्रेरी है, एक सांख्यिकीय मॉडलिंग लाइब्रेरी नहीं है। आम तौर पर, मशीन लर्निंग मॉडल के पैरामीटर के बजाए मॉडल के आउटपुट पर केंद्रित होती है। इस विभाजन का एक क्लासिक चर्चा के लिए (https://projecteuclid.org/euclid.ss/1009213726): [दो संस्कृतियों सांख्यिकीय मॉडलिंग] देखें। – jakevdp

+0

लिंक के लिए धन्यवाद! क्या आप इस तरह के पैरामीटर अनुमान के लिए scikit-learn का उपयोग करेंगे या फिर कुछ और उपयुक्त होगा? मैं पूछ रहा हूं क्योंकि मैं चाहता हूं उदा। नकारात्मक मूल्यों से बचने के लिए और मुझे यकीन नहीं है कि इस मॉड्यूल का उपयोग करना कितना आसान होगा। – Cleb

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