Ask Learn
Preview
Please sign in to use this experience.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
4月19日の Data Amp で SQL Server 2017 の Python Integration が正式に発表されました。これは SQL Server 2016 で機能追加された SQL Server 2016 R Services を SQL Server 2017 Machine Learning Services に拡張し、R に加えて Python による Advanced Analytics を利用可能にするという内容です。
そこで今回は Python を T-SQL を用いて実行する In-Database Python を試してみようと思います。
まずインストールです。
SQL Server 2017 CTP2.1 のセットアップで Machine Learning サービス(データベース内)にチェックを入れます。
そのままインストールを進めていくと、「Python のインストールに同意する」画面があらわれるので、承認ボタンをクリックすることで「次へ」ボタンを押すことができるようになります。
インストールが完了したら、サーバー構成オプションで「external script enabled オプション」を有効にしておきます。
|
CTP2.1 では RECONFIGURE WITH OVERRIDE が効かなかったのでインスタンスの再起動が必要でした。
また CTP 2.0 では既知の不具合があり、次のログインを作成する必要があります。
|
SELECT ステートメントの結果セットを sp_execute_external_script ストアドプロシージャの @input_data_1 で渡すと、Python スクリプト内で InputDataSet 予約変数で受けることができます。下のスクリプトから分かるように、この InputDataSet はデータフレームとして渡ってきます。
|
|
また Python スクリプト内の OutputDataSet 予約変数もデータフレームタイプを持ち、結果セットとしてT-SQLへ返すことができます。
|
これだけ分かれば大抵のことはできるでしょう。さっそく Python で機械学習を試してみましょう。
データは以前 関連記事「Azure Machine Learning Studio を使ってモデルをスクラッチから構築してみよう」で使った "Wine Data Set" を利用しました。
あらかじめこの Wine Data Set をダウンロードし、wine というテーブルにロードしておきます。インプットとして渡せるデータ型については参考リンク "Python Libraries and Data Types" を参照してください。
|
もともとこのデータセットは 3 つの分類種別を持っていて、今回使った Python の LogisticRegression モデルは多クラス分類に対応しているのですが、上述の関連記事では同じデータセットを 2 クラス分類の例として使用したので、ここでも 2 クラスのデータに絞ってモデルを構築してみました。
|
実行するとホールドアウト法によるスコアが 0.87 となりました。
|
今回は基本的な In-Database Python の操作を試してみました。Python を用いてゴリゴリデータ抽出・整形を行うところを、T-SQL の SELECT ステートメントで必要なデータだけを Python スクリプトに渡すことができるので便利だと感じました。
また今回は revoscalepy で提供されている強力な Python 関数を利用しませんでしたが、これらの関数を利用することで In-Database Python のスケーラビリティとパフォーマンスを Advanced Analytics の分野に利用できることは素晴らしいことだと思います。
N
参考リンク
Microsoft Machine Learning Services
/en-us/sql/advanced-analytics/r/r-services
Machine Learning Services with Python /en-us/sql/advanced-analytics/python/sql-server-python-services
Python Libraries and Data Types
/en-us/sql/advanced-analytics/python/python-libraries-and-data-types
Introducing revoscalepy
/en-us/sql/advanced-analytics/python/what-is-revoscalepy
関連記事
Azure Machine Learning Studio を使ってモデルをスクラッチから構築してみよう
https://blogs.msdn.microsoft.com/dataplatjp/2017/01/18/azure-machine-learning-studio/
Please sign in to use this experience.
Sign in