AI VIDEO BRIEFING
파이썬 사이킷런 첫 머신러닝 모델 만들기 선형회귀 랜덤포레스트 실습
구글 코랩과 사이킷런으로 용해도 데이터셋을 불러와 선형회귀와 랜덤포레스트 모델을 만들고 MSE·R²로 성능을 비교하는 첫 머신러닝 프로젝트 과정을 단계별로 정리했다.

핵심 메시지
쉽게 이해하기
영상은 파이썬과 사이킷런 라이브러리, 무료이면서 강력한 구글 코랩을 사용해 첫 머신러닝 모델을 처음부터 만든다. 시작하면 노트북에 'first project' 같은 이름을 붙이고, 텍스트 셀과 해시(#) 기호로 헤딩을 달아 주피터 노트북을 깔끔하게 조직한다. 헤딩을 계층적으로 쓰면 목차가 생겨 긴 노트북에서도 원하는 섹션으로 바로 이동할 수 있다는 실용적 팁을 함께 보여 준다.
데이터셋으로는 Data Professor 깃허브의 'data' 저장소에 정리된 Delaney 용해도 데이터셋을 쓴다. 이는 분자가 물이나 용매에 녹는지를 나타내는 자료로, 좋은 약물 후보를 판단하는 데 중요하다. CSV는 쉼표로 값을 구분한 파일이며, 첫 행은 열 이름이고 둘째 행부터가 데이터다. raw 링크 주소를 복사해 pandas를 pd라는 별칭으로 import한 뒤 pd.read_csv로 데이터프레임(df)에 읽어 들인다. 다섯 개 열 중 마지막 logS가 예측 대상(y)이고 나머지 네 변수가 x로, y = f(x)의 다변량 분석 형태가 된다.
데이터 준비 단계에서는 y를 df의 logS 열로 얻고, x는 df.drop으로 logS를 axis=1(열 방향)로 제거해 네 개 열만 남긴다. 이어 sklearn.model_selection의 train_test_split으로 test_size=0.2, random_state=100을 주어 데이터를 나눈다. random_state를 고정하면 실행할 때마다 같은 분할을 얻는다. 전체 1,144개 중 훈련셋은 80%인 915행, 테스트셋은 20%인 229행이 된다. 훈련셋으로 모델을 만들고, 테스트셋은 미지의 데이터를 모사해 모델이 견고하게 작동하는지 평가하는 데 쓴다.
모델 구축에서는 먼저 sklearn.linear_model의 LinearRegression을 import해 lr 변수로 만들고 lr.fit(x_train, y_train)으로 학습한다. 그다음 lr.predict로 훈련셋과 테스트셋에 대한 예측값을 만든다. 변수 이름에 알고리즘(lr)과 대상(train/test)을 함께 담는 명명 규칙은 여러 알고리즘을 시도할 때 유용하다. 성능은 sklearn.metrics의 mean_squared_error(MSE)와 r2_score(R²)로 평가하며, 실제값과 예측값을 비교한다. 결과는 pandas 데이터프레임으로 정리해 method·training MSE·training R²·test MSE·test R² 열로 깔끔하게 표시한다.
이어 sklearn.ensemble의 RandomForestRegressor로 두 번째 모델을 만든다. y(logS)가 정량적 값이라 회귀 모델을 쓰며, 범주형이면 분류 모델을 썼을 것이라는 점을 짚는다. max_depth=2, random_state=100을 주고 같은 방식으로 학습·예측·평가한 뒤, pd.concat으로 선형회귀와 랜덤포레스트 결과 표를 행 방향(axis=0)으로 합쳐 한 표에서 비교한다. 마지막으로 matplotlib로 실제값과 예측값의 산점도를 그리고 alpha로 점 농도를 조절하며 numpy의 polyfit으로 추세선을 더해, 분산이 낮을수록 성능이 좋다는 점을 시각적으로 확인한다.
주요 인사이트
- 예측 대상 변수가 정량적이면 회귀(regressor), 범주형이면 분류(classifier) 모델을 쓴다. 영상의 logS는 정량값이라 RandomForestRegressor 같은 회귀 모델을 사용한다.
- random_state를 특정 숫자로 고정하면 train_test_split이 실행 때마다 동일한 데이터 분할을 만들어 결과를 재현할 수 있다.
- 여러 모델의 MSE·R² 결과를 하나의 pandas 데이터프레임에 누적하면 랜덤포레스트·KNN·서포트벡터머신·신경망 등을 손쉽게 비교하고 열 기준으로 정렬해 최적 모델을 가릴 수 있다.
- 훈련셋과 테스트셋을 8:2로 나누는 이유는, 테스트셋을 모델이 보지 못한 미지의 데이터처럼 활용해 모델이 견고하게 일반화되는지 평가하기 위해서다.
자주 묻는 질문
이 실습에는 어떤 도구와 데이터셋을 사용하나요?
코딩 환경으로는 무료이면서 강력한 구글 코랩을, 머신러닝 라이브러리로는 사이킷런(scikit-learn)을 사용합니다. 데이터셋은 분자의 물·용매 용해도를 담은 Delaney 용해도 데이터셋으로, Data Professor의 깃허브 저장소에서 CSV로 불러옵니다.
데이터를 훈련셋과 테스트셋으로 어떻게 나누나요?
sklearn.model_selection의 train_test_split을 test_size=0.2로 호출해 8:2로 나눕니다. random_state를 100으로 고정하면 매번 같은 분할을 얻습니다. 전체 1,144개 중 훈련셋 915행, 테스트셋 229행이 됩니다.
모델 성능은 무엇으로 평가하나요?
sklearn.metrics의 mean_squared_error(MSE)와 r2_score(R²)로 실제값과 예측값을 비교해 평가합니다. 선형회귀와 랜덤포레스트의 결과를 하나의 pandas 데이터프레임으로 합치면 여러 모델을 한눈에 비교할 수 있습니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗