Подготовьте модель SKlearn с Isolation Forest для развертывания в Google Cloud.

Я новичок в мире машинного обучения и работаю над проектом, в котором я обучил модель для обнаружения мошенничества с помощью SKlearn. Я обучаю модель следующим образом:

from sklearn.metrics import classification_report, accuracy_score
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor

# define a random state
state = 1

# define the outlier detection method
classifiers = {
    "Isolation Forest": IsolationForest(max_samples=len(X),
                                       contamination=outlier_fraction,
                                       random_state=state),
    "Local Outlier Factor": LocalOutlierFactor(
    n_neighbors = 20,
    contamination = outlier_fraction)
}

# fit the model
n_outliers = len(Fraud)

for i, (clf_name, clf) in enumerate(classifiers.items()):

    # fit te data and tag outliers
    if clf_name == "Local Outlier Factor":
        y_pred = clf.fit_predict(X)
        scores_pred = clf.negative_outlier_factor_
    else:
        clf.fit(X)
        scores_pred = clf.decision_function(X)
        y_pred = clf.predict(X)

    # Reshape the prediction values to 0 for valid and 1 for fraudulent
    y_pred[y_pred == 1] = 0
    y_pred[y_pred == -1] = 1

    n_errors = (y_pred != Y).sum()

    # run classification metrics 
    print('{}:{}'.format(clf_name, n_errors))
    print(accuracy_score(Y, y_pred ))
    print(classification_report(Y, y_pred ))

И он возвращает следующий вывод:

Isolation Forest:7
0.93
         precision    recall  f1-score   support

      0       0.97      0.96      0.96        95
      1       0.33      0.40      0.36         5

avg / total   0.94      0.93      0.93       100

Local Outlier Factor:9
0.91
             precision    recall  f1-score   support

          0       0.96      0.95      0.95        95
          1       0.17      0.20      0.18         5

avg / total       0.92      0.91      0.91       100

Теперь запутанная часть - это развертывание, после долгих усилий я решил развернуть и обслуживать его с помощью веб-службы flask, но не понимаю, как я могу передать входные данные моему методу predict здесь, чтобы получить прогноз?

Что-то было сделано не так?

Как я могу передать входные данные моему методу predict здесь?

Помоги мне, пожалуйста! Мы будем очень признательны за любой ресурс для пошагового руководства по его развертыванию в облаке Google.

Заранее спасибо!


person Abdul Rehman    schedule 15.04.2018    source источник
comment
вы можете прочитать эту статью   -  person MaxU    schedule 15.04.2018
comment
Привет, @MaxU, это действительно полезно для целей развертывания, но я все еще не понимаю, как мне передать новый вход в эту модель для прогноза? значит как я буду служить? какая будет форма ввода?   -  person Abdul Rehman    schedule 15.04.2018
comment
@Abdul Rehman - просто комментарий к вашим результатам: у вас несбалансированный набор данных (коэффициент мошенничества 5%), и я полагаю, что вы больше всего заинтересованы в обнаружении мошенничества, поэтому использование clf.predict() и такого показателя, как точность, может быть не очень полезным. Например, ваш LOF имеет точность 91%, но на самом деле вы обнаруживаете только 1/5 мошенничества, потому что точность рассматривает оба случая как равные. Вы могли бы достичь 95%-й точности, классифицировав все как 0. Попробуйте использовать функцию predict_proba(), чтобы задать ранговый порядок, а затем что-то вроде кривой ROC, чтобы вы могли понять, нужно ли вам сдвинуть порог обнаружения.   -  person Stev    schedule 16.04.2018
comment
Привет, @Stev, ты поднял хороший вопрос, не мог бы ты рассказать мне немного подробнее, как мне реализовать predict_proba() в моем случае? пожалуйста!   -  person Abdul Rehman    schedule 19.04.2018