Я новичок в мире машинного обучения и работаю над проектом, в котором я обучил модель для обнаружения мошенничества с помощью 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.
Заранее спасибо!
clf.predict()
и такого показателя, как точность, может быть не очень полезным. Например, ваш LOF имеет точность 91%, но на самом деле вы обнаруживаете только 1/5 мошенничества, потому что точность рассматривает оба случая как равные. Вы могли бы достичь 95%-й точности, классифицировав все как 0. Попробуйте использовать функцию predict_proba(), чтобы задать ранговый порядок, а затем что-то вроде кривой ROC, чтобы вы могли понять, нужно ли вам сдвинуть порог обнаружения. - person Stev   schedule 16.04.2018predict_proba()
в моем случае? пожалуйста! - person Abdul Rehman   schedule 19.04.2018