Пожалуйста, объясните "Неверный поток BXL" - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь разработать хранимую процедуру, которая делает предсказание машинного языка. Вот что я сделал до сих пор:

DROP PROCEDURE IF EXISTS get_prediction_xgb_classify;
GO

CREATE PROCEDURE get_prediction_xgb_classify (@my_text varchar(100))
AS  
BEGIN
DECLARE @my_script nvarchar(4000)
SET @my_script = '

import numpy as np
from sklearn.externals import joblib

predictors = "" + "' + @my_text + '"
fields = predictors.strip().split(",")
n_fields = len(fields)

clf = joblib.load("C:/sm/trained_models/xgb_classify.pkl")
print("clf:\n", clf)
row = np.array(predictors.split(","),dtype=float).reshape(1,5)
print(" row: ", row)

predicted = clf.predict(row)[0]
#print(" predicted: ", predicted)

#probabilities = clf.predict_proba(row)[0]
#probability = probabilities[predicted]
#print("predicted: ", predicted, ", probabilities: ", probabilities, ", probability: ", probability)

'
EXEC sp_execute_external_script @language = N'Python',   
@script = @my_script
END
GO

EXEC get_prediction_xgb_classify "0.215, -0.499, 1.654, 4.25, 1.559"
GO

Этот код вылетает в строке:

predicted = clf.predict(row)[0]

с сообщением: Неверный поток BXL

Если я закомментирую строку прогноза, я получу:

STDOUT message(s) from external script: 
clf:
 XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
       colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=1,
       max_depth=19, min_child_weight=1.0, missing=nan, n_estimators=1000,
       n_jobs=1, nthread=None, objective='binary:logistic', random_state=7,
       reg_alpha=0, reg_lambda=1, scale_pos_weight=16.524663677130047,
       seed=None, silent=True, subsample=0.844367185738714)
 row:  [[ 0.215 -0.499  1.654  4.25   1.559]]

Я также поместил этот код в Visual Studio 2017 и откомментировал все операторы печати. Это бежало ок. и дал хорошие результаты.

Любые предложения будут с благодарностью.

Charles

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...