Scikit-Learn을 이용한 분류와 회귀

안녕하세요. 언제나 휴일입니다.

이번에는 Scikit-Learn을 이용하여 분류와 회귀를 비교해 볼 거예요.

머신 러닝에는 Label(정답 or 기대값)을 포함하여 학습시키는 지도학습과 포함시키지 않는 비지도학습이 있어요.

그리고 Label을 포함하여 학습시키는 지도학습에는 분류와 회귀가 있습니다.

분류를 통해 머신러닝을 했을 때 학습한 Lable 중에서 하나의 값을 예측합니다.

동물 사진을 분류하거나 손글씨를 분류하는 예를 들 수가 있어요.

회귀는 상황에 따른 값을 예측할 때 사용합니다.

택시로 이동한 거리를 입력하였을 때 요금을 예측하는 것을 대표적으로 들 수 있겠죠.

여기에서는 붗꽃의 종류를 예측하는 것과 직선의 방정식에서 Y값을 예측하는 예로 비교해 볼게요.

svm.svc모델은 분류에 적합한 머신러닝 모델입니다.

LinearRegression은 선형 회귀 머신러닝 모델입니다.

두 개의 모델의 차이를 비교해 보세요.

#분류와 (선형)회귀
import pandas as pd
from sklearn import svm
from sklearn.linear_model import LinearRegression

#y = 2x+1
data = [[0],[2],[5],[7]]
label = [1,5,11,15]
example = [[1],[4]]
print("원하는 결과: 3, 9")

clf = svm.SVC()
clf.fit(data,label)
result = clf.predict(example)
print(result)

lr = LinearRegression()
lr.fit(data,label)
result = lr.predict(example)
print(result)

csv = pd.read_csv('iris.csv')
data2 = csv[["sepal.length","sepal.width","petal.length","petal.width"]]
label2 = csv["variety"]
example2 = [[4.8,3.4,1.6,.2]]

clf.fit(data2,label2)
result = clf.predict(example2)
print(result)

lr = LinearRegression()
lr.fit(data2,label2)
result = lr.predict(example2)
print(result)

실행 결과는 다음과 같습니다.

원하는 결과: 3, 9
[5 11]
[3. 9.]
[0]
[0.00075935]

실행 결과를 보면 직선에서 Y값을 찾는 것은 LinearRegression이 적합합니다.

붓꽃 종류를 판별하는 것은 svm.svc가 적합합니다.

이처럼 상황에 맞는 모델을 선택하세요.