Как получить точность прогноза при тестировании неизвестных данных на сохраненной модели в Scikit-Learn?

У меня есть модель, которую я обучил двоичной классификации, теперь я хочу использовать ее для прогнозирования неизвестных элементов класса.

     from sklearn.externals import joblib
     model = joblib.load('../model/randomForestModel.pkl')
     test_data = df_test.values # df_test is a dataframe with my test data
     output = model.predict(test_data[:,1:]) # this outputs the prediction either 1 or 0

Я знаю, как получить confusion_matrix, precision_score, classification_report с учетом набора данных обучения, но в случае, если у меня нет данных поезда. Я хотел бы получить что-то подобное от weka:

       inst#     actual  predicted error prediction
           1        1:?        1:0       0.757 

Возможно ли это в Scikit-learn? если да, то как мне это сделать?


person marengz    schedule 18.03.2015    source источник


Ответы (1)


Да, это вполне возможно.

1) При попытке оценить модель, которую вы обучили, следует использовать набор для тестирования. Подмножество имеющихся у вас данных, которые вы не использовали для обучения, чтобы оценить способность вашей модели предсказывать новые значения. С этим набором для тестирования у вас есть истинное значение, поэтому вы можете сравнить результат прогноза. Вы можете просто использовать пакет train_test_split или cross_validation.

2) Scikit-learn предоставляет различные показатели, чтобы оценить модель. Еще раз, вы должны использовать эти метрики на тестовом наборе, а не на тренировочном наборе. Это могло привести к ложному хорошему результату.

Я не вижу причин, по которым вы не знали бы об обучающем наборе. Но вы также можете использовать метод модели _score, который вы можете параметризовать по желанию (оценка F1, отзыв, точность).

В weka не вижу, что такое предсказание ошибок. Вы можете объяснить ?

person MathiasDesch    schedule 18.03.2015
comment
спасибо, в weka это не «прогноз ошибки», а на самом деле «ошибка» - это отдельный столбец, который при оценке известных классов, если был сделан неверный прогноз, в этом столбце будет +. Возвращаясь к моему вопросу, я хочу использовать модель в производственной среде, поэтому данные для обучения не нужны. Я хочу только проверить каждое значение по мере его поступления, но я хотел бы знать вероятность / точность предсказанного класса. Я не уверен, что правильно сформулировал ... - person marengz; 18.03.2015
comment
Думаю, я понял. Каждый классификатор в scikit learn имеет predict_proba метод, который отображает вероятность для каждого возможного класса. Затем вы узнаете вероятность того, что предсказанный класс будет наивысшим. Дополнительную информацию можно найти по этой ссылке: scikit-learn.org/stable/modules/generated/ - person MathiasDesch; 19.03.2015