Deep Learning
분류 모델 2
HoneyIT
2020. 8. 12. 20:51
다음 사진과 같이 교통과 관련된 csv 파일이 있다.
이번에는 이 데이터를 가지고 학습한 후 실제 데이터와 일치율을 알아보자
csv = pd.read_csv('taxi-fare-train.csv', header = None)
train_data = []
train_label = []
test_data = []
test_label = []
taxi-fare-train.csv 파일을 가져온다
학습시킬 data와 label, 테스트에 사용할 data와 label을 생성한다.
for row_index, row in csv.iterrows():
if row_index == 0:
continue
other_data = []
for v in row.loc[1:7]:
if v == "CRD":
v = 0
if v == "CSH":
v = 1
if v == "NOC":
v = 2
if v == "DIS":
v = 3
if v == "UNK":
v = 4
other_data.append(v)
itterrows()로 판다스 데이터 프레임의 행을 반복하면서 row_index에는 인덱스 값을, row에는 행의 데이터를 넣는다.
csv의 첫 줄인 header 부분을 제외한다.
각 행의 1부터 7인덱스의 값을 일일히 비교하여 문자형 데이터인 결제 수단을 숫자인 범주형 데이터로 변환한다.
rv = random.randint(0,10)
label_value = 1 #범주형 데이터
if row.loc[0] == "CMT": #문자형 데이터를 범주형으로 벼환하기 위함
label_value = 0
if rv == 1: #평가 데이터
test_label.append(label_value)#row.loc[0]
test_data.append(other_data)
else: #학습 데이터
train_label.append(label_value)#row.loc[0]
train_data.append(other_data)
if row_index == 10000:
break
행의 첫 부분인 교통 수단이 CMT이면 label_value를 0 그렇지 않으면 1로 초기화한다.
랜덤 값을 추출하여 전체 행의 약 10%를 테스트 값(실제 데이터)로 나머지를 학습시킬 값으로 넣는다.
10000 개의 행만 추출한다.
분류 모델 핵심 코드
slf = svm.SVC() #모델 개체 생성
slf.fit(train_data, train_label) #학습
result = slf.predict(test_data) #예측
score = metrics.accuracy_score(result, test_label) #평가
print(score)
svm 모델 개체를 생성하고 학습시킬 데이터를 입력한다.
저장했던 나머지 테스트 데이터로 예측한 label값을 가져온다.
metrics를 이용하여 실제 저장한 label 값과의 일치율을 계산한다.
약 86%의 일치율이 나온 것을 볼 수 있다.