रैखिक प्रतिगमन दो आयामों के साथ एक सरणी के रूप में X
उम्मीद और आंतरिक रूप से X.shape[1]
की आवश्यकता है एक np.ones
सरणी प्रारंभ करने में। तो X
को nx1 सरणी में कनवर्ट करना होगा। तो, बदल देते हैं:
regr.fit(x,y)
द्वारा:
regr.fit(x[:,np.newaxis],y)
यह समस्या ठीक कर देंगे। डेमो:
>>> from sklearn import datasets
>>> from sklearn import linear_model
>>> clf = linear_model.LinearRegression()
>>> iris=datasets.load_iris()
>>> X=iris.data[:,3]
>>> Y=iris.target
>>> clf.fit(X,Y) # This will throw an error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/sklearn/linear_model/base.py", line 363, in fit
X, y, self.fit_intercept, self.normalize, self.copy_X)
File "/usr/lib/python2.7/dist-packages/sklearn/linear_model/base.py", line 103, in center_data
X_std = np.ones(X.shape[1])
IndexError: tuple index out of range
>>> clf.fit(X[:,np.newaxis],Y) # This will work properly
LinearRegression(copy_X=True, fit_intercept=True, normalize=False)
प्लॉट करने के लिए प्रतिगमन रेखा से नीचे कोड का उपयोग करें:
>>> from matplotlib import pyplot as plt
>>> plt.scatter(X, Y, color='red')
<matplotlib.collections.PathCollection object at 0x7f76640e97d0>
>>> plt.plot(X, clf.predict(X[:,np.newaxis]), color='blue')
<matplotlib.lines.Line2D object at 0x7f7663f9eb90>
>>> plt.show()
स्रोत
2014-11-24 16:34:57
खेद है कि मैं पूरी तरह से अपने प्रश्न पढ़ने में भूलना :(मैं जवाब हटा दिया हो, अगर मैं एक मिल सकता है ठीक करें तो मैं संपादित उत्तर को अनदेखा कर दूंगा। लेकिन क्या आप अधिक जानकारी प्रदान कर सकते हैं? जैसे आपका पूरा कोड? – Ffisegydd
यह वह कोड है जिसकी आपको आवश्यकता है, और कुछ भी महत्वपूर्ण नहीं है। – JackLametta
वास्तव में? 'linear_model' क्या है? आपने कैसे किया इसे प्राप्त करें? – Ffisegydd