При попытке запустить некоторый код для набора данных Titanic от Kaggle я продолжает получать следующую ошибку:
NotFittedError Traceback (последний вызов
последний) in ()
6
7 # Сделайте свой прогноз, используя тестовый набор, и распечатайте его.
----> 8 my_prediction = my_tree_one.predict(test_features)
9 print( my_prediction)
10
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/tree/tree.py
в прогнозе(self, X, check_input)
429 """
430
--> 431 X = self._validate_X_predict(X, check_input)
432 proba = self.tree_.predict(X)
433 n_samples = X.shape[0]
/Library/Frameworks/ Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/tree/tree.py
в _validate_X_predict(self, X, check_input)
386 """Проверять X всякий раз, когда кто-то пытается спрогнозировать, применить, Predict_proba"""
387, если self.tree_ равен None:
--> 388 поднять NotFittedError("Оценщик не установлен, "
389 "вызовите соответствие перед использованием модели.")
390
NotFittedError: средство оценки не установлено, вызовите соответствие перед использованием модели
.
Нарушающий код выглядит следующим образом:
Код: Выделить всё
# Impute the missing value with the median
test.Fare[152] = test.Fare.median()
# Extract the features from the test set: Pclass, Sex, Age, and Fare.
test_features = test[["Pclass", "Sex", "Age", "Fare"]].values
# Make your prediction using the test set and print them.
my_prediction = my_tree_one.predict(test_features)
print(my_prediction)
# Create a data frame with two columns: PassengerId & Survived. Survived contains your predictions
PassengerId =np.array(test["PassengerId"]).astype(int)
my_solution = pd.DataFrame(my_prediction, PassengerId, columns = ["Survived"])
print(my_solution)
# Check that your data frame has 418 entries
print(my_solution.shape)
# Write your solution to a csv file with the name my_solution.csv
my_solution.to_csv("my_solution_one.csv", index_label = ["PassengerId"])
Поскольку я уже назвал «подгонку» ', я не могу понять это сообщение об ошибке. Где я ошибаюсь? Спасибо, что уделили время.
Изменить:
Оказывается, проблема унаследована от предыдущего блока кода.
Код: Выделить всё
# Fit your first decision tree: my_tree_one
my_tree_one = tree.DecisionTreeClassifier()
my_tree_one = my_tree_one.fit(features_one, target)
# Look at the importance and score of the included features
print(my_tree_one.feature_importances_)
print(my_tree_one.score(features_one, target))
my_tree_one = my_tree_one.fit(features_one, target)
генерация ошибки:
ValueError: входные данные содержат NaN, бесконечность или значение, слишком большое для
dtype('float32').
Подробнее здесь: https://stackoverflow.com/questions/409 ... -the-model