728x90
반응형
train, test 데이터 입니다.
a,b,c,d 는 난수로 -5부터 5까지 임의 생성된 것이고 taget은 sum(a,b,c,d) 이 0보다 크면 1, 작으면 0 입니다.
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score
from sklearn.naive_bayes import GaussianNB
import numpy as np
import pandas as pd
import random
# train = pd.read_csv('train.csv', sep=',')
# test = pd.read_csv('predict.csv', sep=',')
def genData(n_row):
lst = []
for i in range(n_row):
tmp = []
for j in range(4):
n = random.randint(-5, 5)
tmp.append(n)
lst.append(tmp)
df = pd.DataFrame(lst)
df.columns = ['a','b','c','d']
return df
train = genData(500)
test = genData(60)
train['target'] = np.where(train[['a','b','c','d']].sum(axis=1) > 0, 1, 0)
test['target'] = np.where(test[['a','b','c','d']].sum(axis=1) > 0, 1, 0)
X_train = train[['a','b','c']]
y_train = train[['target']]
X_test = test[['a','b','c']]
y_test = test[['target']]
nb = GaussianNB()
nb.fit(X_train, y_train)
pred = nb.predict(X_test)
r_cnt = 0 # 맞추는 수
for i in range(len(y_test)):
r = y_test['target'].tolist()[i]
r_avg = 0
if r == pred[i]:
r_cnt += 1
r_avg = round(r_cnt / len(y_test) * 100,1)
print('[',i,'] real=',r, ' /pred=',pred[i], ' /sum=',r_cnt,' /avg=',r_avg,' %')
print(classification_report(y_test, pred))
# X_test.to_csv('result.csv')
결과
[ 0 ] real= 0 /pred= 0 /sum= 1 /avg= 1.7 %
[ 1 ] real= 1 /pred= 1 /sum= 2 /avg= 3.3 %
[ 2 ] real= 0 /pred= 0 /sum= 3 /avg= 5.0 %
[ 3 ] real= 0 /pred= 0 /sum= 4 /avg= 6.7 %
[ 4 ] real= 0 /pred= 0 /sum= 5 /avg= 8.3 %
[ 5 ] real= 0 /pred= 0 /sum= 6 /avg= 10.0 %
[ 6 ] real= 0 /pred= 0 /sum= 7 /avg= 11.7 %
[ 7 ] real= 0 /pred= 0 /sum= 8 /avg= 13.3 %
[ 8 ] real= 1 /pred= 1 /sum= 9 /avg= 15.0 %
[ 9 ] real= 0 /pred= 0 /sum= 10 /avg= 16.7 %
[ 10 ] real= 1 /pred= 1 /sum= 11 /avg= 18.3 %
[ 11 ] real= 0 /pred= 0 /sum= 12 /avg= 20.0 %
[ 12 ] real= 1 /pred= 1 /sum= 13 /avg= 21.7 %
[ 13 ] real= 1 /pred= 1 /sum= 14 /avg= 23.3 %
[ 14 ] real= 0 /pred= 0 /sum= 15 /avg= 25.0 %
[ 15 ] real= 0 /pred= 0 /sum= 16 /avg= 26.7 %
[ 16 ] real= 1 /pred= 1 /sum= 17 /avg= 28.3 %
[ 17 ] real= 1 /pred= 1 /sum= 18 /avg= 30.0 %
[ 18 ] real= 1 /pred= 1 /sum= 19 /avg= 31.7 %
[ 19 ] real= 0 /pred= 0 /sum= 20 /avg= 33.3 %
[ 20 ] real= 0 /pred= 0 /sum= 21 /avg= 35.0 %
[ 21 ] real= 0 /pred= 0 /sum= 22 /avg= 36.7 %
[ 22 ] real= 0 /pred= 0 /sum= 23 /avg= 38.3 %
[ 23 ] real= 0 /pred= 0 /sum= 24 /avg= 40.0 %
[ 24 ] real= 1 /pred= 1 /sum= 25 /avg= 41.7 %
[ 25 ] real= 0 /pred= 0 /sum= 26 /avg= 43.3 %
[ 26 ] real= 0 /pred= 0 /sum= 27 /avg= 45.0 %
[ 27 ] real= 0 /pred= 0 /sum= 28 /avg= 46.7 %
[ 28 ] real= 0 /pred= 0 /sum= 29 /avg= 48.3 %
[ 29 ] real= 1 /pred= 0 /sum= 29 /avg= 0 %
[ 30 ] real= 1 /pred= 1 /sum= 30 /avg= 50.0 %
[ 31 ] real= 1 /pred= 1 /sum= 31 /avg= 51.7 %
[ 32 ] real= 1 /pred= 1 /sum= 32 /avg= 53.3 %
[ 33 ] real= 1 /pred= 1 /sum= 33 /avg= 55.0 %
[ 34 ] real= 0 /pred= 0 /sum= 34 /avg= 56.7 %
[ 35 ] real= 1 /pred= 1 /sum= 35 /avg= 58.3 %
[ 36 ] real= 0 /pred= 1 /sum= 35 /avg= 0 %
[ 37 ] real= 0 /pred= 0 /sum= 36 /avg= 60.0 %
[ 38 ] real= 0 /pred= 1 /sum= 36 /avg= 0 %
[ 39 ] real= 0 /pred= 0 /sum= 37 /avg= 61.7 %
[ 40 ] real= 1 /pred= 1 /sum= 38 /avg= 63.3 %
[ 41 ] real= 1 /pred= 1 /sum= 39 /avg= 65.0 %
[ 42 ] real= 0 /pred= 0 /sum= 40 /avg= 66.7 %
[ 43 ] real= 1 /pred= 1 /sum= 41 /avg= 68.3 %
[ 44 ] real= 1 /pred= 0 /sum= 41 /avg= 0 %
[ 45 ] real= 0 /pred= 1 /sum= 41 /avg= 0 %
[ 46 ] real= 1 /pred= 1 /sum= 42 /avg= 70.0 %
[ 47 ] real= 1 /pred= 1 /sum= 43 /avg= 71.7 %
[ 48 ] real= 0 /pred= 0 /sum= 44 /avg= 73.3 %
[ 49 ] real= 0 /pred= 0 /sum= 45 /avg= 75.0 %
[ 50 ] real= 1 /pred= 1 /sum= 46 /avg= 76.7 %
[ 51 ] real= 1 /pred= 1 /sum= 47 /avg= 78.3 %
[ 52 ] real= 0 /pred= 0 /sum= 48 /avg= 80.0 %
[ 53 ] real= 1 /pred= 1 /sum= 49 /avg= 81.7 %
[ 54 ] real= 0 /pred= 1 /sum= 49 /avg= 0 %
[ 55 ] real= 0 /pred= 0 /sum= 50 /avg= 83.3 %
[ 56 ] real= 0 /pred= 0 /sum= 51 /avg= 85.0 %
[ 57 ] real= 1 /pred= 1 /sum= 52 /avg= 86.7 %
[ 58 ] real= 0 /pred= 0 /sum= 53 /avg= 88.3 %
[ 59 ] real= 0 /pred= 0 /sum= 54 /avg= 90.0 %
precision recall f1-score support
0 0.94 0.89 0.91 35
1 0.85 0.92 0.88 25
accuracy 0.90 60
macro avg 0.90 0.90 0.90 60
weighted avg 0.90 0.90 0.90 60
728x90
반응형
'프로그램' 카테고리의 다른 글
[파이썬] 딕셔너리 항목의 재계산 (0) | 2022.10.01 |
---|---|
[파이썬] 리스트의 첫 요소로 딕셔너리 변환 (0) | 2022.10.01 |
[파이썬] 이자율에 따른 단리, 복리 계산 (0) | 2022.09.29 |
[파이썬] csv 파일 목록으로 파일 복사 (0) | 2022.09.28 |
[파이썬] ini 파일 사용. 쉽게 사용 할 수 있는 함수 (0) | 2022.09.27 |
댓글