我正在使用 SQL Server 2017 和带有 Python 脚本的数据库内机器学习,目的是运行机器学习模型。在 sql 文件中遵循有关 PluralSight 'Getting started with Python on SQL Server' 的教程时,我声明了一个变量及其数据类型并将我的 Python 脚本输入其中。但它会在第一行引发语法错误。我的代码如下:
我正在按照教程编写声明。
DECLARE @myscript NVARCHAR(MAX) = N
错误如下:
DECLARE @myscript NVARCHAR(MAX) = N'
^
SyntaxError: invalid syntax
预计代码必须声明一个变量@myscript,然后我在定义输入代码期间使用它。
这是下面的完整代码
DECLARE @myscript NVARCHAR(MAX) = N'
import sys
sys.path += ["D:\\sql_queries"]
import ml_models as ms
mydf = ms.fill_na(mydf)
mydf = ms.backup_columns(mydf)
mydf = ms.shaping_df(mydf)
mydf = ms.normalising_numerical_mydf(mydf)
mydf = ms.date_to_datetime(mydf)
mydf = ms.split_years_months(mydf)
mydf = ms.replacing_strings_with_integers(mydf)
mydf = ms.type_casting(mydf)
mydf = ms.label_encoder(mydf)
mydf = ms.drop_unnecessary_features(mydf)
x_train, x_valid, x_test, y_train, y_valid = ms.seperate_train_test_validation(mydf)
y_pred_rf = ms.random_forest_model(x_train, y_train, x_valid, y_valid, x_test)
y_pred_ada = ms.adboost_model(x_train, y_train, x_valid, y_valid, x_test)
y_pred_xgb = ms.xgb_model(x_train, y_train, x_valid, y_valid, x_test)
y_pred_lgb = ms.light_gradient_boost_model(x_train, y_train, x_valid, y_valid, x_test)
predictions = y_pred_rf*0.3 + y_pred_ada*0.2 + y_pred_xgb*0.2 + y_pred_xgb*0.3
';
DECLARE @myquery NVARCHAR(MAX) = N'
select * from banktest.dbo.train
UNION ALL
select *, 6 as loan_default from banktest.dbo.test;'
;
DECLARE @predictions float;
EXEC sp_execute_external_script
@language = N'Python'
, @script = @myscript
, @input_data_1 = @myquery
, @input_data_1_name = N'mydf'
, @output_data_1_name = N'predictions'
, @parallel = 1
, @params = N'@predictions float out'
, @predictions = @predictions OUT
WITH RESULT SETS ((predicted_value nvarchar(MAX)));