Share via


Python 자습서: SQL 기계 학습을 사용하여 선형 회귀 모델을 학습시킬 데이터 준비

적용 대상: SQL Server 2017(14.x) 이상 Azure SQL Managed Instance

4부로 구성된 이 자습서 시리즈의 2부에서는 Python을 사용하여 데이터베이스의 데이터를 준비합니다. 이 시리즈의 뒷부분에서 이 데이터를 사용하여 SQL Server Machine Learning Services 또는 SQL Server 2019 빅 데이터 클러스터에서 Python으로 선형 회귀 모델을 학습시키고 배포할 것입니다.

4부로 구성된 이 자습서 시리즈의 2부에서는 Python을 사용하여 데이터베이스의 데이터를 준비합니다. 이 시리즈의 뒷부분에서 이 데이터를 사용하여 SQL Server Machine Learning Services를 통해 Python에서 선형 회귀 모델을 학습하고 배포합니다.

4부로 구성된 이 자습서 시리즈의 2부에서는 Python을 사용하여 데이터베이스의 데이터를 준비합니다. 이 시리즈의 후반부에서 이 데이터를 사용하여 Azure SQL Managed Instance Machine Learning Services를 통해 Python에서 선형 회귀 모델을 학습시키고 배포합니다.

이 문서에서는 다음을 수행하는 방법을 알아봅니다.

  • 데이터베이스의 데이터를 pandas 데이터 프레임에 로드
  • 일부 열을 제거하여 Python에서 데이터 준비

1부에서 샘플 데이터베이스를 복원하는 방법을 배웠습니다.

3부에서는 Python에서 선형 회귀 기계 학습 모델을 학습하는 방법을 알아봅니다.

4부에서는 모델을 데이터베이스에 저장한 다음, 2부와 3부에서 개발한 Python 스크립트에서 저장 프로시저를 만드는 방법을 알아봅니다. 저장 프로시저는 서버에서 실행되어 새 데이터를 기반으로 미래를 예측합니다.

사전 요구 사항

  • 이 자습서의 2부에서는 1부와 해당 필수 구성 요소를 완료했다고 가정합니다.

데이터 탐색 및 준비

Python에서 데이터를 사용하려면 데이터베이스에서 pandas 데이터 프레임으로 데이터를 로드합니다.

Azure Data Studio에서 새 Python Notebook을 만들고 아래 스크립트를 실행합니다.

아래 Python 스크립트는 데이터베이스의 dbo.rental_data 테이블에서 pandas 데이터 프레임 df로 데이터 세트를 가져옵니다.

연결 문자열에서 필요에 따라 연결 세부 정보를 바꿉니다. ODBC 연결 문자열에서 Windows 인증 사용하려면 UIDPWD 매개 변수 대신 Trusted_Connection=Yes;을(를) 지정합니다.

import pyodbc
import pandas
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# Connection string to your SQL Server instance
conn_str = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server}; SERVER=<server>; DATABASE=TutorialDB;UID=<username>;PWD=<password>')

query_str = 'SELECT Year, Month, Day, Rentalcount, Weekday, Holiday, Snow FROM dbo.rental_data'

df = pandas.read_sql(sql=query_str, con=conn_str)
print("Data frame:", df)

다음과 비슷한 결과가 표시됩니다.

Data frame:      Year  Month  Day  Rentalcount  WeekDay  Holiday  Snow
0    2014      1   20          445        2        1     0
1    2014      2   13           40        5        0     0
2    2013      3   10          456        1        0     0
3    2014      3   31           38        2        0     0
4    2014      4   24           23        5        0     0
..    ...    ...  ...          ...      ...      ...   ...
448  2013      2   19           57        3        0     1
449  2015      3   18           26        4        0     0
450  2015      3   24           29        3        0     1
451  2014      3   26           50        4        0     1
452  2015     12    6          377        1        0     1

[453 rows x 7 columns]

데이터 프레임에서 열을 필터링하여 학습에 사용하지 않으려는 열을 제거합니다. Rentalcount은(는) 예측의 대상이므로 포함하지 않아야 합니다.

columns = df.columns.tolist()
columns = [c for c in columns if c not in ["Year", "Rentalcount"]]

print("Training set:", df[columns])

학습 집합이 액세스할 수 있는 데이터에 유의하세요.

Training set:      Month  Day  Weekday  Holiday  Snow
1        2   13        5        0     0
3        3   31        2        0     0
7        3    8        7        0     0
15       3    4        2        0     1
22       1   18        1        0     0
..     ...  ...      ...      ...   ...
416      4   13        1        0     1
421      1   21        3        0     1
438      2   19        4        0     1
441      2    3        3        0     1
447      1    4        6        0     1

[91 rows x 5 columns]

다음 단계

이 자습서 시리즈의 2부에서 다음 단계를 완료했습니다.

  • 데이터베이스의 데이터를 pandas 데이터 프레임에 로드
  • 일부 열을 제거하여 Python에서 데이터 준비

TutorialDB 데이터베이스의 데이터를 사용하는 기계 학습 모델을 학습하려면 다음 자습서 시리즈의 3부를 따르세요.