언어/파이썬

머신러닝with파이썬4강(3)_사이킷런으로 머신러닝 진행하기, 사이킷런 공식문서 사이트

디지털랫드 2024. 3. 9. 13:59

머신러닝


이번 시간에는 사이킷런을 활용해서 머신러닝을 함께 진행해 보도록 하겠습니다.

이번 시간 정리


1. train_test_split
-사이킷런의 train_test_split 라이브러리를 활용하면 쉽게 train set(학습데이터셋)과 테스트셋을 랜덤하게 나누어 준다.

2. test_size=0.3
-학습용으로 70%를 두고 30% 데이터는 테스트용으로 둔다.

3. random_state
-반복 연산시 일정하게 섞기 위해 사용하며 random값을 고정하여 동일한 결과를 얻을 수 있다.

1. 머신러닝: 분류


아래의 코드 실행 버튼을 눌러 실습을 진행해 보세요!

1) 검증데이터 분리

 
 
코드 실행
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
/tmp/ipykernel_13/334835610.py in <module>
      2 from sklearn.model_selection import train_test_split
      3 X_train, X_test, y_train, y_test = train_test_split(
----> 4     cancer_df.drop('target', axis=1), cancer_df['target'], test_size=0.3, random_state=1004)

/opt/conda/lib/python3.9/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
    309                     stacklevel=stacklevel,
    310                 )
--> 311             return func(*args, **kwargs)
    312 
    313         return wrapper

/opt/conda/lib/python3.9/site-packages/pandas/core/frame.py in drop(self, labels, axis, index, columns, level, inplace, errors)
   4904                 weight  1.0     0.8
   4905         """
-> 4906         return super().drop(
   4907             labels=labels,
   4908             axis=axis,

/opt/conda/lib/python3.9/site-packages/pandas/core/generic.py in drop(self, labels, axis, index, columns, level, inplace, errors)
   4148         for axis, labels in axes.items():
   4149             if labels is not None:
-> 4150                 obj = obj._drop_axis(labels, axis, level=level, errors=errors)
   4151 
   4152         if inplace:

/opt/conda/lib/python3.9/site-packages/pandas/core/generic.py in _drop_axis(self, labels, axis, level, errors)
   4183                 new_axis = axis.drop(labels, level=level, errors=errors)
   4184             else:
-> 4185                 new_axis = axis.drop(labels, errors=errors)
   4186             result = self.reindex(**{axis_name: new_axis})
   4187 

/opt/conda/lib/python3.9/site-packages/pandas/core/indexes/base.py in drop(self, labels, errors)
   6015         if mask.any():
   6016             if errors != "ignore":
-> 6017                 raise KeyError(f"{labels[mask]} not found in axis")
   6018             indexer = indexer[~mask]
   6019         return self.delete(indexer)

KeyError: "['target'] not found in axis"
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/1562339779.py in <module>
      1 # train 데이터 확인(X)
----> 2 X_train.head()

NameError: name 'X_train' is not defined
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/1642986695.py in <module>
      1 # 학습 데이터 확인(y)
----> 2 y_train.head()

NameError: name 'y_train' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/752611642.py in <module>
      1 # 데이터 크기
----> 2 X_train.shape, X_test.shape, y_train.shape, y_test.shape

NameError: name 'X_train' is not defined

2) 의사결정나무 (DecisionTree)

 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/3663280255.py in <module>
      5 model = DecisionTreeClassifier()
      6 # 학습
----> 7 model.fit(X_train, y_train)
      8 # 예측
      9 pred = model.predict(X_test)

NameError: name 'X_train' is not defined

3) 평가 (accuracy)

 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/1332555200.py in <module>
      1 # 정확도 accuracy_score(실제값, 예측값)
      2 from sklearn.metrics import accuracy_score
----> 3 accuracy_score(y_test, pred)

NameError: name 'y_test' is not defined

2. 머신러닝: 회귀


아래의 코드 실행 버튼을 눌러 실습을 진행해 보세요!

1) 검증데이터 분리

 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/3250448475.py in <module>
      2 from sklearn.model_selection import train_test_split
      3 X_train, X_test, y_train, y_test = train_test_split(
----> 4     diabetes_df.drop('target', axis=1), diabetes_df['target'], test_size=0.3, random_state=1004)

NameError: name 'diabetes_df' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/1562339779.py in <module>
      1 # train 데이터 확인(X)
----> 2 X_train.head()

NameError: name 'X_train' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/1642986695.py in <module>
      1 # 학습 데이터 확인(y)
----> 2 y_train.head()

NameError: name 'y_train' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/752611642.py in <module>
      1 # 데이터 크기
----> 2 X_train.shape, X_test.shape, y_train.shape, y_test.shape

NameError: name 'X_train' is not defined

2) 선형회귀 (LinearRegression)

 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/2785540142.py in <module>
      5 model = LinearRegression()
      6 # 학습
----> 7 model.fit(X_train, y_train)
      8 # 예측
      9 pred = model.predict(X_test)

NameError: name 'X_train' is not defined

3) 평가 (MSE)

 
 
*사이킷런 더 공부해보기
사이킷런 공식문서 사이트:https://scikit-learn.org/stable/
 

scikit-learn: machine learning in Python — scikit-learn 1.4.1 documentation

Model selection Comparing, validating and choosing parameters and models. Applications: Improved accuracy via parameter tuning Algorithms: grid search, cross validation, metrics, and more...

scikit-learn.org

샘플, 예시, 파라미터 값등 나와있어요

커뮤니티가면 블로그에 정보 나와있구요

튜토리얼도 학습할 수 있습니다~

(예시에 있는 코드들을 활용해보면서 혼자 학습해보세요)