태지쌤

로봇 & 코딩교육 No.1 크리에이터

Data Science

혼자공부하는 머신러닝 + 딥러닝(ch1) k-최근접 이웃 알고리즘

태지쌤 2023. 2. 16. 22:58
반응형

# -*- coding: utf-8 -*-
"""혼공머신러닝_ch1.ipynb

Automatically generated by Colaboratory.

Original file is located at
    https://colab.research.google.com/drive/1yyi3uGfURyYiKYLsQsXAJUsR9X-n9rML
"""

# 데이터의 특성

bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 
                31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 
                35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0]
bream_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 
                500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0, 
                700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0]

import matplotlib.pyplot as plt
plt.scatter(x = bream_length, y = bream_weight)
plt.xlabel('length')
plt.ylabel('weight')
plt.show()

smelt_length = [9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0]
smelt_weight = [6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9]

plt.scatter(bream_length, bream_weight)
plt.scatter(smelt_length, smelt_weight)
plt.xlabel('length')
plt.ylabel('weight')
plt.show()

length = bream_length + smelt_length
weight = bream_weight + smelt_weight

length

weight

fish_data = [[l,w] for l, w in zip(length, weight)]

fish_data

fish_target = [1] * 35 + [0] * 14

fish_target

from sklearn.neighbors import KNeighborsClassifier

kn = KNeighborsClassifier()

"""훈련 : 모델에 데이터를 전달하여 규칙을 학습하는 과정

fit 메서드
"""

kn.fit(fish_data, fish_target)

kn.score(fish_data, fish_target)

"""k-최근접 이웃 알고리즘 : 어떤 데이터에 대한 답을 구할 때 주위의 다른 데이터를 보고 다수를 차지하는 것을 정답으로 사용(주위의 데이터로 현재 데이터를 판단, 근묵자흑)"""

kn.predict([[30,600]]) # 2차원 리스트 입력

# 정확도가 1.0 아래로 내려가기 시작하는 이웃의 개수 구하는 방법

kn = KNeighborsClassifier()
kn.fit(fish_data, fish_target)

for n in range(5, 50):
    kn.n_neighbors = n
    score = kn.score(fish_data, fish_target)
    if score < 1:
        print(n, score)
        break
혼공머신러닝_ch1.ipynb
0.03MB
반응형