Я довольно новичок в Python и SKLearn. Я пытаюсь сделать простой классификатор, но у меня проблема. Я слежу за несколькими различными учебниками, но получаю сообщение об ошибке, когда пытаюсь использовать метод .fit
. Я новичок в концепции и пробовал документацию, но обнаружил, что трудно понять, может ли кто-нибудь помочь мне в ошибке или указать мне в правильном направлении.Python Classifier Sklearn
Мои мысли за ошибки в том, что значения из диапазона для DTYPE, как я преобразовали все недостающие значения или значения нан но ошибка все еще возникающие
Код
def main():
setup_files()
imputer = Imputer()
#the training data minus id and type:
t_num_data = load_csv(training_set_file_path, range(1, 17))
t_num_data_imputed = imputer.fit_transform(t_num_data)
print(t_num_data_imputed)
#the training type column
t_type_col = load_csv(training_set_file_path, 17, dtype=np.dtype((str, 5)))
#the query data minus id and type:
q_data = load_csv(queries_file_path, range(1, 17))
#the query id column
q_id = load_csv(queries_file_path, 0, dtype=np.dtype((str, 10)))
#fit data above to DTC and predict import
model = tree.DecisionTreeClassifier(criterion='entropy')
model.fit_transform(t_num_data, t_type_col)
predictions = model.predict(q_data)
#output the predictions:
with open(solutions_file_path, 'w') as f:
for i in range(len(predictions)):
f.write("{},{}\n".format(q_id[i], predictions[i]))
#fit data above to DTC and predict import
model = tree.DecisionTreeClassifier(criterion='entropy')
model.fit(t_num_data, t_type_col)
predictions = model.predict(q_data)
#output the predictions:
with open(solutions_file_path, 'w') as f:
for i in range(len(predictions)):
f.write("{},{}\n".format(q_id[i], predictions[i]))
Ошибка
Traceback (most recent call last):
File "/Users/Rory/Desktop/classifier.py", line 71, in <module>
main()
File "/Users/Rory/Desktop/classifier.py", line 60, in main
model.fit_transform(t_num_data, t_type_col)
File "/Users/Rory/anaconda/lib/python2.7/site-packages/sklearn/base.py", line 458, in fit_transform
return self.fit(X, y, **fit_params).transform(X)
File "/Users/Rory/anaconda/lib/python2.7/site-packages/sklearn/tree/tree.py", line 154, in fit
X = check_array(X, dtype=DTYPE, accept_sparse="csc")
File "/Users/Rory/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py", line 398, in check_array
_assert_all_finite(array)
File "/Users/Rory/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py", line 54, in _assert_all_finite
" or a value too large for %r." % X.dtype)
ValueError: Input contains NaN, infinity or a value too large for dtype('float32').
Ошибка говорит все. У вашего 't_num_data' есть значения inf или nan. Попробуйте распечатать min/max –
и есть ли это простое исправление или оно или находится внутри самих данных? – JJSmith
@imaluengo, когда я печатаю max и min Я получаю nan для обоих – JJSmith