Oracle DB에서 데이터 가져오기, 머신러닝 라이브러리인 scikit-learn을 이용하여 붓꽃 데이터 분류하는 모델 만들기를 실시하였다.
여기 나오는 내용은 "파이썬을 이용한 머신러닝, 딥러닝, 실전 개발 입문"에 나오는 내용이다.
====================== Python ======================
# cx_Oracle
import cx_Oracle as xe
# ImportError: DLL load failed => 설치된 오라클 bin => oci.dll => Lib/site-package
# dsn: data source name 데이터 원본 이름
dsn = xe.makedsn("127.0.0.1", 1521, "xe") # ip, port, SID
conn = xe.connect("id", "pw", dsn) # id, pw, dsn자료
# print(dsn) # 데이터 확인
# print(conn) # 데이터 확인
# 커서 => 일련의 데이터에 순차적으로 엑세스 할 때, 검색, 현재 위치를 포함하는 요소이다.
# 커서 => 현재 작업중인 레코드를 가리키는 오브젝트이다.
# 관계형 데이터 베이스에서 연산을 전체 행의 집합에 적용된다.
cursor = conn.cursor()
# print(cursor) # 데이터 확인
# 자원해제를 반드시 해야한다. 메모리에 계속 유지할 수 있기 때문이다.
cursor.close()
# 자료검색
dsn = xe.makedsn("127.0.0.1", 1521, "xe") # ip, port, SID
conn = xe.connect("java00", "java00", dsn) # id, pw, dsn자료
cursor = conn.cursor()
cursor.execute("select * from board")
row = cursor.fetchall() # 위의 쿼리에서 나온 값을 전부 저장하는 .fetchall()
# print(row) # 리스트로 저장
# for row in cursor.fetchall(): # 리스트를 보기 좋게 출력
# print(row)
cursor.close()
from tinydb import TinyDB, Query
# 데이터베이스 연결하기
filepath = "test-tinydb.json"
db = TinyDB(filepath)
# 기존의 테이블이 있다면 제거하기
db.purge_table('fruits')
# 테이블 생성/추출하기
table = db.table('fruits')
# 테이블에 데이터 추가하기
table.insert({'name': 'Banana', 'price': 6000})
table.insert({'name': 'Orange', 'price': 12000})
table.insert({'name': 'Mango', 'price': 8400})
# 모든 데이터를 추출해서 출력하기
print(table.all())
# 특정 데이터 추출하기
# Orange 검색하기
Item = Query()
res = table.search(Item.name == 'Orange')
print('Orange is', res[0]['price'])
# 가격이 8000원 이상인 것 추출하기
print("8000원 이상인 것:")
res = table.search(Item.price >= 8000)
for it in res:
print("-", it['name'])
from sklearn import svm, metrics
import random, re
# 붓꽃의 CSV 데이터 읽어 들이기
csv = []
with open('iris.csv', 'r', encoding='utf-8') as fp:
# 한 줄씩 읽어 들이기
for line in fp:
line = line.strip() # 줄바꿈 제거
cols = line.split(',') # 쉼표로 자르기
# 문자열 데이터를 숫자로 변환하기
fn = lambda n: float(n) if re.match(r'^[0-9\.]+$', n) else n
cols = list(map(fn, cols))
csv.append(cols)
# 가장 앞 줄의 헤더 제거
del csv[0]
# 데이터 셔플하기
random.shuffle(csv)
# 학습 전용 데이터와 테스트 전용 데이터 분할하기
total_len = len(csv)
train_len = int(total_len * 2/3)
train_data = []
train_label = []
test_data = []
test_label = []
for i in range(total_len):
data = csv[i][0:4]
label = csv[i][4]
if i < train_len:
train_data.append(data)
train_label.append(label)
else:
test_data.append(data)
test_label.append(label)
# 데이터를 학습시키고 예측하기
clf = svm.SVC()
clf.fit(train_data, train_label)
pre = clf.predict(test_data)
# 정답률 구하기
ac_score = metrics.accuracy_score(test_label, pre)
print('정답률 =', ac_score)
from sklearn import svm, metrics
import pandas as pd
from sklearn.model_selection import train_test_split
# 붓꽃의 CSV 데이터 읽어 들이기
csv = pd.read_csv('iris.csv')
# 필요한 열 추출하기
csv_data = csv[["SepalLength", "SepalWidth", "PetalLength", "PetalWidth"]]
csv_label = csv["Name"]
# 학습 전용 데이터와 테스트 전용 데이터로 나누기
train_data, test_data, train_label, test_label = \
train_test_split(csv_data, csv_label)
# 데이터 학습시키고 예측하기
clf = svm.SVC()
clf.fit(train_data, train_label)
pre = clf.predict(test_data)
# 정답률 구하기
ac_score = metrics.accuracy_score(test_label, pre)
print("정답률 =", ac_score)
====================== Python ======================
'프로그래밍 > Python, R 프로그래밍' 카테고리의 다른 글
[Python] Python 27일차(파이썬을 이용한 머신러닝, 딥러닝 실전 개발 입문) (0) | 2018.07.11 |
---|---|
[Python] matplotlib 라이브러리에서 한글 폰트가 깨지지 않게 만드는 방법 (0) | 2018.07.10 |
[Python] Python 25일차(파이썬을 이용한 머신러닝, 딥러닝 실전 개발 입문) (0) | 2018.07.09 |
[Python] Python 24일차(파이썬을 이용한 머신러닝, 딥러닝 실전 개발 입문) (0) | 2018.07.04 |
[Python] Python 23일차(파이썬을 이용한 머신러닝, 딥러닝 실전 개발 입문) (0) | 2018.07.03 |