python—将一个观察传递给sklearn分类器的最有效方法

j9per5c4  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(328)

因此,经过一年的艰苦工作,我的模型终于在我公司的生产服务器上实现了。
在这个高效的环境中,我的模型加载在python脚本中,并从另一个服务器中提取字符串。我现在必须解析这个字符串并将其传递给模型,以便它可以做出预测并将输出返回给最终用户。
我现在关心的是效率。我正在寻找一种非常快速的方法来将字符串转换为一个类似数组的对象,这个对象可以传递给我的模型。
下面是一个可复制的示例:


# Load modules

from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import GradientBoostingClassifier

# Load dummy data and target

X = load_breast_cancer()['data']
y = load_breast_cancer()['target']

# Initialize and fit classifier

clf = GradientBoostingClassifier(random_state=0)
clf.fit(X, y)

# [1] New string is received

string = '17.99|10.38|122.8|1001.0|0.1184|0.2776|0.3001|0.1471|0.2419|0.07871|1.095|0.9053|8.589|153.4|0.006399|0.04904|0.05373|0.01587|0.03003|0.006193|25.38|17.33|184.6|2019.0|0.1622|0.6656|0.7119|0.2654|0.4601|0.1189'

# [2] Convert string to array-like structure

import numpy as np
x = np.array(string.split('|')).astype(float)

# [3] Pass `x` to `clf` and predict probability

clf.predict_proba(x.reshape(-1, 30)).item(0)

> 0.9987537665581022

我的问题

有没有更有效的方法来解析字符串并将其传递给sklearn模型?
我想跳过 import numpy 会加速事情的发展。不过,我对任何可以改善步骤运行时间的解决方案都持开放态度 [1] , [2] 以及 [3] .

s5a0g9ez

s5a0g9ez1#

确保您确实需要双重精度和使用

fromstring = np.fromstring

# ...

fromstring(string, 'f', -1, '|')

它的速度将比以前快3-4倍

np.array(string.split('|')).astype(float)

相关问题