[인공지능 #16 ] 인공지능/딥러닝 실전입문_외국어판별_식용버섯 식별
인공지능의 실전입문에 관한 글입니다.
알고리즘을 만드는것이 아니고, 만들어진 알로리즘을 활용하는 방법에 관한 글입니다.
자동차 운전을 위해 자동차를 만드는방법을 알필요는 없습니다. 물론 알면 좋기는 하겠지만, 서로 별도의 분야라고 할수있습니다.
본글은 학습용 데이터를 학습/테스트/측정하는 방법에 대한 글입니다.
글의 순서는 아래와 같습니다.
=========================================================================================
1. 외국어 문장 판별 => [ # 170814 7 xor-train ]
. count=list(map(lambda n : n/total,count)) ==> 주의 " list " 를 넣치 않으면 error 발생
. 언어별 알파벳 사용횟수가 틀리다는 점을 이용해서, 문장을 주고 영어인지 프랑스어인지 등 구분하는 알고리즘임. 유첨(학습,테스트 데이터)
2. 외국어별 알파벳 사용빈도을 그래프로 표식하여 비교 ==> [ 170816 3 lang-train graph ]
3. 독버섯과 식용버섯 구분==> [ #170819 3 mushroom-train ]
4. 참고자료
=========================================================================================
[ # 170816 2 lang-train ]
from sklearn import svm, metrics
import glob, os.path ,re, json
files=glob.glob("./lang/train/*.txt")
train_data=[]
train_label=[]
for file_name in files :
basename=os.path.basename(file_name)
lang=basename.split("-")[0]
file=open(file_name,"r",encoding="utf-8")
text=file.read()
text=text.lower()
file.close()
code_a = ord("a")
code_z = ord("z")
count = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
for character in text:
code_current=ord(character)
if code_a<=code_current <=code_z :
count[code_current-code_a] +=1
total=sum(count)
count=list(map(lambda n : n/total,count))
#리스트에 넣기
train_label.append(lang)
train_data.append(count)
#print(train_data)
#print("=========================================================================")
#print(train_label)
files=glob.glob("./lang/test/*.txt")
test_data=[]
test_label=[]
for file_name in files :
basename=os.path.basename(file_name)
lang=basename.split("-")[0]
file=open(file_name,"r",encoding="utf-8")
text=file.read()
text=text.lower()
file.close()
code_a = ord("a")
code_z = ord("z")
count = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
for character in text:
code_current=ord(character)
if code_a<=code_current <=code_z :
count[code_current-code_a] +=1
total=sum(count)
count=list(map(lambda n : n/total,count))
#리스트에 넣기
test_label.append(lang)
test_data.append(count)
#print(train_data)
#print("=========================================================================")
#print(train_label)
clf = svm.SVC()
clf.fit(train_data, train_label)
predict=clf.predict(test_data)
score=metrics.accuracy_score(test_label, predict)
print("score=",score)
report=metrics.classification_report(test_label, predict)
print("--------report-----------")
print(report)
[ 170816 3 lang-train graph ]
from sklearn import svm, metrics
import glob, os.path ,re, json
import matplotlib.pyplot as plt
import pandas as pd
files=glob.glob("./lang/train/*.txt")
train_data=[]
train_label=[]
for file_name in files :
basename=os.path.basename(file_name)
lang=basename.split("-")[0]
file=open(file_name,"r",encoding="utf-8")
text=file.read()
text=text.lower()
file.close()
code_a = ord("a")
code_z = ord("z")
count = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
for character in text:
code_current=ord(character)
if code_a<=code_current <=code_z :
count[code_current-code_a] +=1
total=sum(count)
count=list(map(lambda n : n/total,count))
#리스트에 넣기
train_label.append(lang)
train_data.append(count)
# 그래픽 준비하기
graph_dict={}
for i in range(0,len(train_label)):
label = train_label[i]
data = train_data[i]
if not (label in graph_dict) :
graph_dict[label]=data
asclist=[[chr(n) for n in range(97,97+26)]]
print(asclist)
df=pd.DataFrame(graph_dict, index=asclist)
# 그래프 그리기
plt.style.use('ggplot')
df.plot(kind="bar",subplots=True,ylim=(0,0.15))
plt.savefig('lang-plot.png')
[ #170819 3 mushroom-train ]
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn import metrics
from sklearn.model_selection import train_test_split
# 데이터 읽어 들이기--- (※1)
mr = pd.read_csv("170819 1 mushroom.csv", header=None)
# 데이터 내부의 기호를 숫자로 변환하기--- (※2)
label = []
data = []
attr_list = []
for row_index, row in mr.iterrows():
label.append(row.ix[0])
row_data = []
for v in row.ix[1:]:
row_data.append(ord(v))
data.append(row_data)
# 학습 전용과 테스트 전용 데이터로 나누기 --- (※3)
data_train, data_test, label_train, label_test = \
train_test_split(data, label)
# 데이터 학습시키기 --- (※4)
clf = RandomForestClassifier()
clf.fit(data_train, label_train)
# 데이터 예측하기 --- (※5)
predict = clf.predict(data_test)
# 결과 테스트하기 --- (※6)
ac_score = metrics.accuracy_score(label_test, predict)
cl_report = metrics.classification_report(label_test, predict)
print("정답률 =", ac_score)
print("리포트 =\n", cl_report)
[참고자료]
https://www.data.go.kr/main.do
'프로젝트 > 인공지능' 카테고리의 다른 글
[인공지능 #18 ] 인공지능/딥러닝 실전입문_형태소 적용/텍스트(스팸등) 분류 (0) | 2017.08.19 |
---|---|
[인공지능 #17 ] 인공지능/딥러닝 실전입문_머신러닝에 딥러닝 적용 (0) | 2017.08.19 |
[인공지능 #15 ] 인공지능/딥러닝 실전입문_XOR/손글씨 맞추기 (0) | 2017.08.14 |
[인공지능 #14 ] 인공지능/딥러닝 실전입문_데이터 확보하기 (0) | 2017.08.12 |
[인공지능 #13 ] q_net_frozenlake / cartpole (0) | 2017.08.07 |
[인공지능 #15 ] 인공지능/딥러닝 실전입문_XOR/손글씨 맞추기
인공지능의 실전입문에 관한 글입니다.
알고리즘을 만드는것이 아니고, 만들어진 알로리즘을 활용하는 방법에 관한 글입니다.
자동차 운전을 위해 자동차를 만드는방법을 알필요는 없습니다. 물론 알면 좋기는 하겠지만, 서로 별도의 분야라고 할수있습니다.
본글은 학습용 데이터를 학습/테스트/측정하는 방법에 대한 글입니다.
글의 순서는 아래와 같습니다.
=========================================================================================
1. X-OR 구현 => [ # 170814 7 xor-train ]
2. 손글씨 맞추기
- MNIST DOWN ==> [ # 170814 10 mnist-download ]
- DATA 변환 ==> CSV 로 , [# 170814 11 mnist-tocsv]
- 학습/테스트/평가 ==> [# 170814 9 mnist-train]
. DATA숫자가 5000개 정도 수준으로, 정확도는 78% 수준임, 전체DATA로 하게되면 정확도는 95% 수준으로 올라감
3. 참고자료
=========================================================================================
[ # 170814 7 xor-train ]
from sklearn import svm
# XOR의 계산 결과 데이터 --- (※1)
xor_data = [
#P, Q, result
[0, 0, 0],
[0, 1, 1],
[1, 0, 1],
[1, 1, 0]
]
# 학습을 위해 데이터와 레이블 분리하기 --- (※2)
data = []
label = []
for row in xor_data:
p = row[0]
q = row[1]
r = row[2]
data.append([p, q])
label.append(r)
# 데이터 학습시키기 --- (※3)
clf = svm.SVC()
clf.fit(data, label)
# 데이터 예측하기 --- (※4)
pre = clf.predict(data)
print(" 예측결과:", pre)
# 결과 확인하기 --- (※5)
ok = 0; total = 0
for idx, answer in enumerate(label):
p = pre[idx]
if p == answer: ok += 1
total += 1
print("정답률:", ok, "/", total, "=", ok/total)
[참고자료]
https://www.data.go.kr/main.do
'프로젝트 > 인공지능' 카테고리의 다른 글
[인공지능 #17 ] 인공지능/딥러닝 실전입문_머신러닝에 딥러닝 적용 (0) | 2017.08.19 |
---|---|
[인공지능 #16 ] 인공지능/딥러닝 실전입문_외국어판별_식용버섯 식별 (0) | 2017.08.16 |
[인공지능 #14 ] 인공지능/딥러닝 실전입문_데이터 확보하기 (0) | 2017.08.12 |
[인공지능 #13 ] q_net_frozenlake / cartpole (0) | 2017.08.07 |
[인공지능 #12 ] Q-Learning / OpenAI gym / frozenlake (0) | 2017.08.06 |
[인공지능 #14 ] 인공지능/딥러닝 실전입문_데이터 확보하기
인공지능의 실전입문에 관한 글입니다.
알고리즘을 만드는것이 아니고, 만들어진 알로리즘을 활용하는 방법에 관한 글입니다.
자동차 운전을 위해 자동차를 만드는방법을 알필요는 없습니다. 물론 알면 좋기는 하겠지만, 서로 별도의 분야라고 할수있습니다.
본글은 인공지능에 입력할 학습data를 구하는 방법에 관한 글입니다 ( 인터넷에 흩어져 있는 자료수집 )
글의 순서는 아래와 같습니다.
=========================================================================================
[ 웹상의 데이타 가져오기 ]
1.개발환경 구성
- 아나콘다 기준으로 설명합니다.
2.웹사이트에 자료요청하는 방식 ==> get 요청
3.웹사이트에서 사진한장 가져오기 ==> download-png1
4.쇼핑몰에서 가격정보 가져오기 ==>bs-usd
5.포털에서 뉴스자료 가져오기 ==> download-bs-news2
6.웹 사이트에 파이선으로 프로그램 안에서 로그인 하기 ==> 170813 6 selenium-login
7.자바스크립트를 이용해서 자료 가져오기 selenium-js
8.날씨정보 가져오기 ==>170813 8 api-weather
9.네이버에서 이메일 가져오기 ==> 170813 10 selenium-login
- 네이버 메일을 가져오는 코드입니다.
- 네이버에 처음 로그인시에는
. 1)로그인 ,2)새로운 기기 등록 , 3)로그인상태 유지 3단계의 단계를 통과해야 합니다. 각각 단계에 버튼입력코드가 필요합니다
. 두번째 부터는 새로운 기기등록 , 로그인상태 유지 2단계의 코드는 필요없습니다, 주석처리를 해야합니다. 주석 처리 않하면 error 발생
12 csv 화일 읽기 ==> [# EUC_KR로 저장된 CSV 파일 읽기]
13. 엑셀화일 읽기==>[# 170814 4 excel-read]
- 다운받은 엑셀은 다름이름으로 저장 " 엑셀통합문서" 로 저장해야 파이선에서 불러올수 있음
14. 엑셀에 자료 입력하기[ # 170814 5 write excel ]
[ Next Step ]
==> 가져온 데이터를 머신러닝으로 학습 시키기
[ 참고자료 ]
===================================================================================================
[ 개발환경 구성 ]
아나콘다에서 설치
phantomjs
conda install -c trent phantomjs
conda install -c javascript phantomjs
conda install -c javascript/label/dev phantomjs
conda install -c mutirri phantomjs
conda install -c mutirri/label/bokeh-deps phantomjs
conda install -c mutirri/label/all phantomjs
conda install -c mutirri/label/selenium phantomjs
selenium
conda install -c metaperl selenium ==> python 2.xx
conda install -c conda-forge selenium ==> python 3.xx
beautifulsoup4
conda install -c anaconda beautifulsoup4 ==>python 4.xx
fontconfig
conda install -c anaconda fontconfig python 2.xx
https://www.data.go.kr/main.do
'프로젝트 > 인공지능' 카테고리의 다른 글
[인공지능 #16 ] 인공지능/딥러닝 실전입문_외국어판별_식용버섯 식별 (0) | 2017.08.16 |
---|---|
[인공지능 #15 ] 인공지능/딥러닝 실전입문_XOR/손글씨 맞추기 (0) | 2017.08.14 |
[인공지능 #13 ] q_net_frozenlake / cartpole (0) | 2017.08.07 |
[인공지능 #12 ] Q-Learning / OpenAI gym / frozenlake (0) | 2017.08.06 |
[인공지능 #11 ] hello-rnn /char-seq-rnn /char-seq-softmax-only /rnn_long_char (0) | 2017.08.06 |