1 분 소요

[혼공머신]2-1

### 1. 지도 학습과 비지도 학습 #### 지도 학습 (Supervised Learning)

  • 정의: 입력 데이터와 해당 타깃(라벨) 데이터를 사용하여 모델을 훈련한 후, 새로운 입력 데이터에 대한 예측을 수행합니다.
  • 예시: K-최근접 이웃 알고리즘 (K-Nearest Neighbors)
    • 입력 데이터와 그에 따른 레이블(타깃)을 사용하여 새로운 데이터의 레이블을 예측합니다.
      from sklearn.neighbors import KNeighborsClassifier
      knn = KNeighborsClassifier(n_neighbors=3)
      knn.fit(train_input, train_target)
      prediction = knn.predict(test_input)
      score = knn.score(test_input, test_target)
      

#### 비지도 학습 (Unsupervised Learning)

  • 정의: 타깃 데이터가 없으며, 예측보다는 데이터의 구조나 패턴을 찾는 데 중점을 둡니다.
  • 예시: 클러스터링 알고리즘 (K-Means Clustering)
    • 데이터를 몇 개의 그룹으로 묶는 작업을 수행합니다.
      from sklearn.cluster import KMeans
      kmeans = KMeans(n_clusters=3)
      kmeans.fit(data)
      labels = kmeans.labels_
      

### 2. 데이터 분할 #### 훈련 세트 (Training Set)

  • 정의: 모델을 훈련하는 데 사용하는 데이터입니다. 일반적으로 전체 데이터의 70-80%를 차지합니다.
  • 중요성: 훈련 세트가 클수록 모델이 더 잘 학습할 수 있습니다.
  • 코드 예시:
    from sklearn.model_selection import train_test_split
    train_input, test_input, train_target, test_target = train_test_split(data, target, test_size=0.2)
    

#### 테스트 세트 (Test Set)

  • 정의: 모델을 평가하는 데 사용하는 데이터입니다. 전체 데이터의 20-30%를 차지합니다.
  • 중요성: 모델의 일반화 성능을 평가하는 데 사용됩니다.
  • 코드 예시:
    from sklearn.model_selection import train_test_split
    train_input, test_input, train_target, test_target = train_test_split(data, target, test_size=0.2)
    

### 3. 핵심 패키지와 함수 #### NumPy

  • seed()
    • 정의: 난수 생성을 위한 초깃값을 지정하여 동일한 난수를 재현할 수 있게 합니다.
    • 사용 예:
      import numpy as np
      np.random.seed(42)
      
  • arange()
    • 정의: 일정한 간격의 숫자 배열을 생성합니다.
    • 사용 예:
      import numpy as np
      array = np.arange(0, 10, 1)
      
  • shuffle()
    • 정의: 주어진 배열을 랜덤하게 섞습니다.
    • 사용 예:
      import numpy as np
      array = np.arange(10)
      np.random.shuffle(array)
      

### 4. 실습 코드 예시 #### 데이터 분할 및 모델 훈련

  import numpy as np
  from sklearn.neighbors import KNeighborsClassifier
  from sklearn.model_selection import train_test_split
  
  # 데이터 생성
  data = np.array([[1, 2], [2, 3], [3, 4], [5, 6], [8, 9], [9, 10]])
  target = np.array([0, 0, 0, 1, 1, 1])
  
  # 데이터 분할
  train_input, test_input, train_target, test_target = train_test_split(data, target, test_size=0.2)
  
  # 모델 훈련
  knn = KNeighborsClassifier(n_neighbors=3)
  knn.fit(train_input, train_target)
  
  # 예측 및 평가
  prediction = knn.predict(test_input)
  score = knn.score(test_input, test_target)
  
  print("Prediction:", prediction)
  print("Accuracy:", score)

댓글남기기