मुझे एक त्रुटि मिल रही है जिसमें "ऐरे में NaN या अनंतता शामिल है"। मैंने लापता मूल्यों के लिए ट्रेन/परीक्षण दोनों में अपना डेटा चेक किया है और इसमें कुछ भी नहीं है।विज्ञान-किट के साथ त्रुटि एसजीडी अल्गो सीखें - "ऐरे में NaN या अनंतता है"
यह संभव है कि मेरे पास "अरे में NaN या अनंतता" का गलत अर्थ है।
import numpy as np
from sklearn import linear_model
from numpy import genfromtxt, savetxt
def main():
#create the training & test sets, skipping the header row with [1:]
dataset = genfromtxt(open('C:\\Users\\Owner\\training.csv','r'), delimiter=',')[0:50]
target = [x[0] for x in dataset]
train = [x[1:50] for x in dataset]
test = genfromtxt(open('C:\\Users\\Owner\\test.csv','r'), delimiter=',')[0:50]
#create and train the SGD
sgd = linear_model.SGDClassifier()
sgd.fit(train, target)
predictions = [x[1] for x in sgd.predict(test)]
savetxt('C:\\Users\\Owner\\Desktop\\preds.csv', predictions, delimiter=',', fmt='%f')
if __name__=="__main__":
main()
मैंने सोचा कि डेटा प्रकार लूप के लिए अलगो फेंक रहा है (वे फ़्लोटिंग-पॉइंट्स हैं)।
मुझे पता है कि एसजीडी फ़्लोटिंग-पॉइंट्स को संभाल सकता है, इसलिए मुझे यकीन नहीं है कि इस सेटअप को मुझे डेटाटाइप घोषित करने की आवश्यकता है या नहीं।
निम्न में से एक जैसे:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-62-af5537e7802b> in <module>()
19
20 if __name__=="__main__":
---> 21 main()
<ipython-input-62-af5537e7802b> in main()
13 #create and train the SGD
14 sgd = linear_model.SGDClassifier()
---> 15 sgd.fit(train, target)
16 predictions = [x[1] for x in sgd.predict(test)]
17
C:\Anaconda\lib\site-packages\sklearn\linear_model\stochastic_gradient.pyc in fi
t(self, X, y, coef_init, intercept_init, class_weight, sample_weight)
518 coef_init=coef_init, intercept_init=intercept_i
nit,
519 class_weight=class_weight,
--> 520 sample_weight=sample_weight)
521
522
C:\Anaconda\lib\site-packages\sklearn\linear_model\stochastic_gradient.pyc in _f
it(self, X, y, alpha, C, loss, learning_rate, coef_init, intercept_init, class_w
eight, sample_weight)
397 self.class_weight = class_weight
398
--> 399 X = atleast2d_or_csr(X, dtype=np.float64, order="C")
400 n_samples, n_features = X.shape
401
C:\Anaconda\lib\site-packages\sklearn\utils\validation.pyc in atleast2d_or_csr(X
, dtype, order, copy)
114 """
115 return _atleast2d_or_sparse(X, dtype, order, copy, sparse.csr_matrix
,
--> 116 "tocsr")
117
118
C:\Anaconda\lib\site-packages\sklearn\utils\validation.pyc in _atleast2d_or_spar
se(X, dtype, order, copy, sparse_class, convmethod)
94 _assert_all_finite(X.data)
95 else:
---> 96 X = array2d(X, dtype=dtype, order=order, copy=copy)
97 _assert_all_finite(X)
98 return X
C:\Anaconda\lib\site-packages\sklearn\utils\validation.pyc in array2d(X, dtype,
order, copy)
79 'is required. Use X.toarray() to convert to dens
e.')
80 X_2d = np.asarray(np.atleast_2d(X), dtype=dtype, order=order)
---> 81 _assert_all_finite(X_2d)
82 if X is X_2d and copy:
83 X_2d = safe_copy(X_2d)
C:\Anaconda\lib\site-packages\sklearn\utils\validation.pyc in _assert_all_finite
(X)
16 if (X.dtype.char in np.typecodes['AllFloat'] and not np.isfinite(X.s
um())
17 and not np.isfinite(X).all()):
---> 18 raise ValueError("Array contains NaN or infinity.")
19
20
ValueError: Array contains NaN or infinity.
किसी भी विचार की सराहना की जाएगी:
>>> dt = np.dtype('i4') # 32-bit signed integer
>>> dt = np.dtype('f8') # 64-bit floating-point number
>>> dt = np.dtype('c16') # 128-bit complex floating-point number
>>> dt = np.dtype('a25') # 25-character string
नीचे पूर्ण त्रुटि संदेश है।
क्या आप त्रुटि का पूरा पता पोस्ट कर सकते हैं, और 'प्रिंट dataset.dtype' प्रिंट कर सकते हैं? साथ ही, आपके पास एक टिप्पणी है कि आप "हेडर पंक्ति को '[1:]' "से छोड़ रहे हैं, लेकिन ऐसा नहीं लगता है .... – Dougal
मुझे लगता है जैसे @Dougal का एक अच्छा सुझाव है हेडर लोड करने के बारे में। आप यह जांचने का प्रयास कर सकते हैं कि आपका डेटासेट सही ढंग से 'assert np.any (np.isnan (डेटासेट) | np.isinf (डेटासेट) के साथ लोड हो गया है या नहीं) '। – lmjohns3
क्या आपने numpy.nan_to_num (ndarray) का प्रयास किया है, जो फ़ंक्शन नैन को शून्य करता है और जहां तक मुझे पता है, बड़ी संख्या में अनंतताएं होती हैं, (यदि आप जानते हैं कि आपको शून्य पर कितना परिणाम मिलना चाहिए और बहुत अधिक संख्याएं, अन्यथा वास्तव में नहीं) – usethedeathstar