안녕하세요. 언제나 휴일입니다.
이번에는 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가 적합합니다.
이처럼 상황에 맞는 모델을 선택하세요.