Python 缩短sklearn逻辑回归的运行时间

Python 缩短sklearn逻辑回归的运行时间,python,amazon-web-services,scikit-learn,aws-lambda,logistic-regression,Python,Amazon Web Services,Scikit Learn,Aws Lambda,Logistic Regression,我目前有一个Flask服务器,它接收数据并对其应用逻辑回归算法。然而,我计划将其转换为AWS Lambda函数,我希望算法在时间上尽可能高效 输入如下: 代码的algo部分有几行: from sklearn.linear_model import LogisticRegression classifier = LogisticRegression(random_state = 0) classifier.fit(X_train, y_train) y_predict_test = classi

我目前有一个Flask服务器,它接收数据并对其应用逻辑回归算法。然而,我计划将其转换为AWS Lambda函数,我希望算法在时间上尽可能高效

输入如下:

代码的algo部分有几行:

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state = 0)
classifier.fit(X_train, y_train)
y_predict_test = classifier.predict(X)
oldlist = classifier.predict_proba(X)
problist = sortProb(oldlist)
return(problist)
目前,处理该过程大约需要2.6秒。有没有办法加快速度


感谢

这不是lambda在机器学习管道中通常使用的方式。通常,您会使用lambda进行一些数据格式化,并将结果传递给承载经过训练的模型的SageMaker端点。但对于一些非常小的型号,我想您可以尝试使用lambda作为后端

首先,无论您使用的是lambda还是任何后端,您很可能不想在每次调用端点时训练模型,您只想进行推断(除非我们专门讨论在线学习)

所以,像平常一样离线训练模型,然后使用经过训练的模型进行推理。逻辑回归是一个非常简单的算法(至少是它的推理部分),因此您可以只提取相关参数,并使用适当的推理逻辑将其“硬编码”到lambda函数中

下面是如何提取模型的系数和截距

# This is the offline part
classifier = LogisticRegression(random_state = 0)
classifier.fit(X_train, y_train)

coef, intercept = clf.coef_, clf.intercept_
并在lambda函数中使用这些函数。下面是您可以如何实现它(我在这里使用
numpy
,但是您可以随意实现它)。另外,我省略了lambda的样板代码

# This goes into your lambda function
coef, intercept = # hardcoded parameters here

def sigmoid(X):
    return 1 / (1 + np.exp(-X))

def predict(X, intercept, coef):
    return sigmoid(np.dot(X, coef.T) + intercept)

# compute prediction
predict(X[0], intercept, coef)

在样本上运行您的模型这是否回答了您的问题?我不太明白你怎么能在lambda进行离线训练?我希望能够将一个数据帧传递到LogReg算法,并获得一个问题列表。不知道离线是如何工作的。如果你不介意的话,我可以获取你的reddit用户名,这样我就可以带这个车队去聊天了吗?我所说的离线培训是指你在不使用lambda(在你的计算机或你有权访问的某个虚拟服务器上)的情况下执行培训步骤,完成后,您只需提取参数,然后将其硬编码到lambda函数中。这假设您的端点只负责预测,而不负责实际的训练。如果您计划同时进行培训和预测,那么我认为lambda不适合这样的任务,您很可能需要设计不同的策略。