- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我创建了一个用于欺诈检测的机器学习模型:
实际模型代码的一小段如下:
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)
}
import pickle
# 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)
# Export the classifier to a file
with open('model.pkl', 'wb') as model_file:
pickle.dump(clf, model_file)
scores_pred = clf.negative_outlier_factor_
else:
clf.fit(X)
scores_pred = clf.decision_function(X)
y_pred = clf.predict(X)
# Export the classifier to a file
with open('model.pkl', 'wb') as model_file:
pickle.dump(clf, model_file)
# 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 ))
我已经在 Google Cloud Platform 上成功创建了存储桶、ml 模型和版本。但是作为 ml world 的初学者,我很困惑,我如何将输入传递给这个模型以获得真实的预测,因为这个模型现在部署在谷歌的 ML-Engine 上。
Update: As stated in the N3da's answer, now I'm using this code for online prediction:
import os
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
PROJECT_ID = "PROJECT_ID"
VERSION_NAME = "VERSION"
MODEL_NAME = "MODEL_NAME"
credentials = GoogleCredentials.get_application_default()
service = discovery.build('ml', 'v1', credentials=credentials)
name = 'projects/{}/models/{}'.format(PROJECT_ID, MODEL_NAME)
name += '/versions/{}'.format(VERSION_NAME)
data = {
"instances": [
[265580, 7, 68728, 8.36, 4.76, 84.12, 79.36, 3346, 1, 11.99, 1.14,
655012, 0.65, 258374, 0, 84.12],
]
}
response = service.projects().predict(
name=name,
body={'instances': data}
).execute()
if 'error' in response:
print (response['error'])
else:
online_results = response['predictions']
print(online_results)
但它返回访问错误为:
googleapiclient.errors.HttpError: https://ml.googleapis.com/v1/projects/PROJECT_ID/models/MODEL_NAME/versions/VERSION:predict?alt=json returned "Access to model denied.">
请帮帮我!
最佳答案
成功创建Version
后,您可以使用gcloud
工具或发送http 请求来获取在线预测。来自 this ,这里是一个从 python 代码发送 http 请求的例子:
service = googleapiclient.discovery.build('ml', 'v1')
name = 'projects/{}/models/{}'.format(PROJECT_ID, MODEL_NAME)
name += '/versions/{}'.format(VERSION_NAME)
response = service.projects().predict(
name=name,
body={'instances': data}
).execute()
if 'error' in response:
print (response['error'])
else:
online_results = response['predictions']
上例中的
data
是一个列表,其中每个元素都是您的模型接受的一个实例。 Here是关于预测请求和响应的更多信息。
更新:对于您提到的权限问题,了解最初创建模型和版本的方式/位置(通过 gcloud、UI 控制台、笔记本电脑等)会有所帮助。错误消息表明您的用户可以访问您的项目,但不是模型。尝试从运行 Python 代码的任何位置运行 gcloud auth login
,并确认它显示为默认项目的项目与您的 PROJECT_ID 匹配。
关于python - 从 Google Cloud ML-Engine 上部署的 SCIKITLEARN 模型进行预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49974030/
在 this section关于梯度提升的文档,它说 Gradient Boosting attempts to solve this minimization problem numerically
我正在将 ScikitLearn 的随机森林应用于极度不平衡的数据集(比率为 1:10 000)。我可以使用 class_weigth='balanced' 参数。我看过它相当于欠采样。 但是,这种方
我正在尝试使用 Scikit Learn 提供的神经网络实现来实现图像处理。我有近 10,000 张“JPG”格式的彩色图像,我将这些图像转换为“PNG”格式并删除了颜色信息。新图像都是黑色或白色图像
如何设置 ScikitLearn 的 ConfusionMatrixDisplay 绘制的图形的大小? import numpy as np from sklearn.metrics import C
我是机器学习新手,目前正在使用 ScikitLearn 的 MLPClassifier 来执行神经网络任务。根据 Andrew Ng 著名的机器学习类(class),我正在绘制学习曲线,在我的例子中,
docs对于 scikit-learn 的 Imputation transformer 说 When axis=0, columns which only contained missing val
这在统计数据交换上可能与这里同样有效(可能是我不确定的统计数据或Python。 假设我有两个自变量 X,Y 来解释 Z 的一些方差。 from sklearn.linear_model imp
我目前正在处理给定类标签 0 和 1 的分类任务。为此,我使用 ScikitLearn 的 MLPClassifier 为每个训练示例提供 0 或 1 的输出。但是,我找不到任何文档,说明 MLPCl
我目前正在处理给定类标签 0 和 1 的分类任务。为此,我使用 ScikitLearn 的 MLPClassifier 为每个训练示例提供 0 或 1 的输出。但是,我找不到任何文档,说明 MLPCl
我的目标是从数百万行的数据集中执行文本聚类,其中每一行都是一串单词,与正确的单词不对应文档,而是“关键字”列表。这个想法是,每一行代表一个 Twitter 用户,其关键字列表取自他/她的推文,以下是行
以下示例展示了如何使用 Sklearn 20 新闻组数据训练分类器。 >>> from sklearn.feature_extraction.text import TfidfVectorizer >
尝试开始使用 Python 的 SciKitLearn 库,但对 NearestNeighbors 分类器和 KNeighbors 分类器之间的区别感到困惑。看起来论点相似但又不完全相同......
所以我目前正在从事一个涉及使用主成分分析或 PCA 的项目,并且我正在尝试快速学习它。幸运的是,Python 有一个来自 scikitlearn.decomposition 的非常方便的模块,它似乎为
是否可以在 Python/Scikit-learn GLM 模型中按原样使用分类变量?我确实意识到了 one-hot 编码的替代方案。我对这种方法的问题是我将无法测试整个变量的重要性。我只能测试编码变
我有交通数据,我想通过向模型显示以下输入来预测下一小时的车辆数量:这一小时的车辆数量和这一小时的平均速度值。这是我的代码: dataset=pd.read_csv('/content/final -
我正在学习 scikit 学习执行某些分类。我正在按照我的数据集的教程进行操作。当我运行脚本时,出现类型错误 data = pd.DataFrame({'Description': pd.Catego
我创建了一个用于欺诈检测的机器学习模型: 实际模型代码的一小段如下: from sklearn.metrics import classification_report, accuracy_score
我运行一个 python 程序,它调用 sklearn.metrics 的方法来计算精度和 F1 分数。这是没有预测样本时的输出: /xxx/py2-scikit-learn/0.15.2-comp6
我在执行以下代码块时引用了以下博客文章 https://prateekvjoshi.com/2015/12/15/how-to-compute-confidence-measure-for-svm-c
抱歉,如果这可能已经在某处得到了回答,但我一直在寻找大约一个小时,但找不到好的答案。 我有一个在 Scikit-Learn 中训练的简单逻辑回归模型,我将其导出到 .pmml 文件。 from s
我是一名优秀的程序员,十分优秀!