2022년 4월 25일 월요일

Orange3에서 혼공머신러닝+딥러닝 예제 따라하기

Orange3에 있는 Python Script를 이용하면 Orange3의 활용성이 매우 좋아집니다.

혼공머신러닝에 나온 예제를 풀어보기위한 간단한 예제를 보입니다.


Python Script를 더블크릭한후 아래와 같이 수정합니다.(복사붙이기)

    

from Orange.data import Table, Domain, ContinuousVariable, DiscreteVariable

import numpy as np


domain = Domain([ContinuousVariable("length"), ContinuousVariable("weight"), ContinuousVariable("target")])


bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0]


bream_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0, 700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0]


smelt_length = [9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0]

smelt_weight = [6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9]


length = bream_length + smelt_length

weight = bream_weight + smelt_weight


target = np.array([1]*35 + [0]*14)


arr = np.array([[x,y,z] for x,y,z in zip(length, weight, target)])

out_data = Table.from_numpy(domain, arr)


그리고 왼쪽 아래 [RUN]버튼을 눌러주시고 [Data Table]위젯으로 확인합니다. 타겟을 지정하기위해 Select Columns 위젯을 중간에 추가하였습니다.

만약 스크립트 실행에러가 나면 오렌지를 다시실행하고 해보세요.

Educational Group 에 Create Table 이라는 위젯이 있어서 일일이 키보드로 입력할 수 도 있습니다.



2022년 4월 24일 일요일

Orange3.32 설치후에 Add-Ones 중의 Time Series 가 설치되지 않은 경우

 Orange3 최신버전(3.32 2021-04-21)을 다운받아 설치하였더니 Add-Ones 중의 Time Series 가 설치되지 않아 구글링하였더니 git-hub에 답이 있더군요. (22. 5. 17 내용을 수정합니다)

아래 7. 의 과정으로 진행하면서

(orange) jglee@iMac ~ % conda install scipy==1.7.3

을 사용하지 않아도 이제는 Time Series가 잘 설치됩니다. (22.11.12 내용을 추가합니다)

1. 저같은 경우에는 맥환경이고, MiniConda를 설치하였습니다.

jglee@iMac ~ % pwd
/Users/jglee
jglee@iMac ~ % conda config --add channels conda-forge
jglee@iMac ~ % conda config --set channel_priority strict
jglee@iMac ~ % conda create python=3 --yes --name orange

................................................................
Downloading and Extracting Packages
python-3.10.4 | 13.2 MB | #################################### | 100%
python_abi-3.10 | 4 KB | #################################### | 100%
setuptools-62.3.1 | 1.4 MB | #################################### | 100%

"orange"라는 가상환경이 Python 3.10.4로 만들어지군요. (22.05.17 기준)

2. orange가상환경으로 이동한 후 오렌지를 설치 합니다.

jglee@iMac ~ % conda activate orange
(orange) jglee@iMac ~ % conda install orange3

..................................................................
The following packages will be DOWNGRADED:
openssl 3.0.3-hfe4f2af_0 --> 1.1.1o-hfe4f2af_0
python 3.10.4-h1cc4136_0_cpython --> 3.9.12-h8b4d769_1_cpython
python_abi 3.10-2_cp310 --> 3.9-2_cp39
setuptools 62.3.1-py310h2ec42d9_0 --> 62.3.1-py39h6e9494a_0

버전을 재 조정하군요. 


3. 설치가 끝나서 오렌지를 실행합니다.

(orange) jglee@iMac ~ % orange-canvas

계속하여 오렌지의 메뉴를 통하여 Add-Ones 중의 Time Series를 설치합니다. 그러나 

Successfully installed Orange3-Timeseries-0.3.12 lxml-4.8.0 \
more-itertools-8.13.0 pandas-datareader-0.10.0 patsy-0.5.2 statsmodels-0.12.2

하면서 설치는 되지만 Widget Collection Box에 Time Series가 나타나지 않습니다.

4. scipy 패키지를 다운그레이드 합니다.

(orange) jglee@iMac ~ % conda remove scipy

설치된 오랜지가 자동으로 삭제됩니다.

(orange) jglee@iMac ~ % conda install scipy==1.7.3


5. 오렌지3를 최신버전으로 설치합니다.

(orange) jglee@iMac ~ % conda install orange3  

6. 설치가 끝나면...

(orange) jglee@iMac ~ % orange-canvas &

으로 실행하면 됩니다. &은 백그라운드 실행입니다.( 윈도우 PS에서는 ";"를 사용)

알면 별것 아닌데 모르면 어려운게....

7. 진행과정을 전부 제외하고 결론만 보여드립니니다. ( 가상환경 만들어 이동하고 > scipy 1.7.3을 설치하고  > 오렌지3를 설치하면 됩니다. 가상환경을 만드는 이유는 패키지들이 엉키면 한방에 날려버리고 재설치하면 갈끔해지거든요.)

jglee@iMac ~ % conda config --add channels conda-forge
jglee@iMac ~ % conda config --set channel_priority strict
jglee@iMac ~ % conda create python=3.9.12 --yes --name orange

jglee@iMac ~ % conda activate orange
(orange) jglee@iMac ~ % conda install scipy==1.7.3
(orange) jglee@iMac ~ % conda install orange3
(orange) jglee@iMac ~ % orange-canvas &

(orange) jglee@iMac ~ % conda deactivate <= 가상환경 삭제하기위해
(base) jglee@iMac ~ % conda env remove -n orange <= 가상환경 삭제,오렌지포함

2022년 4월 21일 목요일

py to ipynb

 파이썬 확장자 파일을 주피터노트북으로 불러오면 전체가 하나로 불려진다.

파이참에서 만들어진 노트북형태의 파일을 VSCode에서 불러와 명령행  하나마다 실행하면서 결과를 확인하고 싶다면 아래와 같은 방법으로 하면 된다.


 

Run Cell | Run Bellow | Debug Cell 에서 Run Cell을 선택하면 됩니다.

#In[ ]:을 만나게 되면 다음 #In[ ]: 을 만나기 전까지 하나의 셀형태로 실행할 수 있으며 결과가 VSCode 오른쪽 화면에 나타난다.


그런데 .py 파일의 가독성이  떨어지네요. 줄바꿈이 너무 빈번해서 줄바꿈을 줄여봅시다. [Edit > Replace..] 한다음 아래와 같이 정규식에서 찾아 바꾸어 주면 됩니다.








2022년 4월 19일 화요일

이미지를 바이너리(base64)로 불러오기 (Data-URI)

0. Data-URI란?

RFC 2397에 정의되어 있으며 이미지 등의 외부 바이너리 파일을 웹페이지에 인라인으로 넣기 위해 사용.

바이너리 파일 : 컴퓨터 파일로 컴퓨터 저장과 처리 목적을 위해 이진 형식으로 인코딩된 데이터파일 ( 이미지를 메모장으로 열었을때 보임)

형식은 data:[<MIME-type>][;charset=<encoding>][;base64],<data> 이며 사용하는 방법은

1. html 에서는

<img src=”data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAA” />

<img src ="Data-URI" /> 

실제 예 <사파리의 경우 아래 이미지에서 마우스우측 크릭하여소스보기하면 알 수 있음> 

2. Jupyter (.ipynb)등 마크다운 문서등을 작성할때

URL의 경우에는 ![](URL)

즉 ![scikit](https://datascienceschool.net/_static/logo.jpg) 와 같은 형태로 불러올 수 있고, 

Data-URI의 경우에는 ![](Data-URI)

![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAA... )

이때 base64, 뒷부분이 실제 바이너리데이터이다. 위의 예에서는 뒷부분을 생략하였다.

3. 이미지의 Data-URI 생성은 CSS Portal 에서 컴퓨터에 있는 이미지를 드래그&드롭하거나,

4. 웹상에 있는 이미지는 아래와 같이 얻을 수 있다.

4-1. Microsoft Edge 에서는 


하여 개발자도구를 불러오고

이미지를 데이터 URI로 복사하기를 선택한다음 ![]() 의 소괄호 사이에 붙여넣기하면 됩니다.
인터넷상의 이미지를 링크하였다가, 소스의 주소가 변경되는등의 경우를 대비할 수 있다. 물론 소스의 크기는 엄청나게 커지겠지요.

4-2. 구글의 크롬에서는 역시 개발자도구로 들어간후
4-3. 사파리에서는 아직 방법을 못찾음

2022년 3월 30일 수요일

마크다운 문서에 이미지 삽입하기

 SVCode Jupyter Markdown 문서에 이미지를 삽입하는 방법

1. 소스 링크를 하여 삽입하는 방법

![이미지가 불려지지 않을때 나타낼 글](이미지 주소)

그런데 자신의 컴퓨터에 있는 이미지는 안되는 경우가 빈번하다.

![안보이나요]('c:\Temp\fig01.jpg')

2. 이미지 자체를 불러와서 삽입하는 방법

크롬등에서 해당 이미지를 선택하고, 

마우스 오른쪽을 크릭한다음 이미지 주소복사를 선택하고,

![]() 에서 괄호사이에 붙여 넣기합니다.




2022년 3월 22일 화요일

윈도우에서 가상환경 설정 및 Jupyter lab

한글윈도우10 에서 가상환경설정

1. 우선 python 이 설치되어 있어야 한다. 

    python 으로 검색하여 최신버전을 다운 받아 설치 한다.

2.  cmd 관리자: 명령프롬프트 에서...

2. python 으로 가상환경을 만든다.(저는 c:\ 에 만듬)

>cd c:\

>pyphon -m venv venv

    두번째 venv    는 가상환경을 만들고자하는 폴더이름입니다. 

    myVenv 등등 적당한 이름 사용

    잠시 기다리면 venv라는 폴더가 만들어졌슴을 dir 하여 확인할 수 있습니다.



C:\venv>.\Scripts\activate 실행하면 화면이 지워지고

(venv) C:\venv>로 프롬프트가 바뀝니다. (venv)가 가상환경을 말합니다.

(venv) C:\venv>python -V

(venv) C:\venv>pip list

하여 확인 list에 2개만 있슴..

(venv) C:\venv>pip install jupyterlab   #하면 많은 파일을 다운 받아 설치합니다.

(venv) C:\venv>jupyter lab 하여 

print('안녕하세요')  Shift + Return 하여 정상을 확인합니다.

콘솔명령에서 한글이 엄청나게 깨어지네요...
! 해결방법은
cmd.exe 명령실행창에서 가상환경으로 들오온다음
(venv) C:\venv>chcp 하여 현재의 코드페이지를 확인합니다.

(venv) C:\venv>chcp
활성 코드 페이지: 949
로 되어 있는 것을 확인한다음.
(venv) C:\venv>chcp65001
(venv) C:\venv>jupyter lab
하여 한글이 깨어지지 아니한 것을 확인 할 수 있습니다.

vscode를 처음 실행시 가상환경 디렉토리를 열고 인터프리터도 이곳의 python으로 지정해야 한다.

을 이것으로

으로 또는 F1 키를 누르고  Select interpreter >> +Enter interpreter path



하여 지정한다.

가상환경이 설치되었으면 기본환경의 phthon library를 전부 삭제하자.
pip list 하여보면 가상환경외의 library 를 확인할 수 있다.
과감히 지우자
pip freeze > requirements.txt
pip uninstall -r requirements.txt


2022년 3월 20일 일요일

pytagcloud 시각화에서 한글문제

 맥 (Mac)에서 pytagcloud 를 이용하여 시각화를 하면서 한글 폰트 때문에 오류가 생겨 구글링을 하였으나 쉽게 해결하지 못하였다.

 영문 폰트로하면 네모박스로 표현되니 분명 폰트 문제인데..

우선 저의 사용환경은 가상터미널에서 사용합니다.

jglee@iMac ~ % cd Projects/exam

jglee@iMac exam % source ./venv/bin/activate

(venv) jglee@iMac exam % jupyter notebook


하여 실행시킨후 

import random
import pytagcloud
import webbrowser

# 가장 출현 빈도수가 높은 40개의 단어를 선정합니다.
ranked_tags = remove_char_counter.most_common(40)

# pytagcloud로 출력할 40개의 단어를 입력합니다. 단어 출력의 최대 크기는 80으로 제한합니다.
taglist = pytagcloud.make_tags(ranked_tags, maxsize=80)

# pytagcloud 이미지를 생성합니다. 폰트는 나눔 고딕을 사용합니다.
pytagcloud.create_tag_image(taglist, 'wordcloud.jpg', size=(900, 600), 
fontname='NanumGothic', rectangular=False)

와 같이 따라하였습니다. 그런데 에러가 발생하였습니다.

/Users/jglee/Projects/exam/venv/lib/python3.9/site-packages/pytagcloud/fonts

에 적당한 한글폰트를 복사하고
fonts.json을 편집하여 앞쪽에 아래와 같이 추가하였습니다.

{
"name": "NanumGothic",
"ttf": "NanumGothic.ttf",
"web": "http://fonts.googleapis.com/css?family=NanumGothic"
},

그래도 똑같은 현상입니다. 폰트가 있는데 전혀 찾지를 못해요.
해서, 파이썬을 실행하고, pytagcloud를 import 한 다음 패스를 확인하였더니 위에 지정한 장소가 아닙니다.

(venv) jglee@iMac exam % 

(venv) jglee@iMac exam % python

Python 3.9.6 (v3.9.6:db3ff76da1, Jun 28 2021, 11:49:53) 

[Clang 6.0 (clang-600.0.57)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import pytagcloud

pygame 2.1.2 (SDL 2.0.18, Python 3.9.6)

Hello from the pygame community. https://www.pygame.org/contribute.html

>>> print(pytagcloud.__path__)

['/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pytagcloud']

>>> 


/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pytagcloud/fonts

결국 이곳에 폰트를 복사하고 fonts.json에 다시 추가하였더니 되었습니다.

터미널에서 $jupiter notebook 하거나,  vsCode에서 노트북을 불러도 같은 결과입니다.
그런데 궁금한 것은 가상환경의 venv에 있는 라이브러리를 사용하지 않는 다는 것이 이상해요...









2022년 3월 19일 토요일

형태소 분석기 JPype1-py3 설치하기

맥북에서

"이것이 데이터 분석이다"를  따라하다가 konlpy 의 형태소 분석기에서 막혔다.

!pip install konlpy
!pip install jpype1

까지는 잘되었는데

!pip install Jpype1-py3

에서 막혔다.

관련 자료를 검색해보니 Java 가 제대로 설치되지 않았다고 한다.

jre-8u321-macosx-x64.dmg 를 다운받아 설치하고 다시 Jpype1-py3를 설치해도 안된다.

$brew install java

🍺  /usr/local/Cellar/openjdk/17.0.2: 639 files, 305.4MB

sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

java -version


확인하니 자바는 정상으로 설치가 되었다.


가상환경들어가서

$cd ./exam01

$source ./venv/bin/activate



설치하니 정상으로 설치가된다. (후! 몇시간을 해메였다)

그래도 안된다. 앙!

콘솔에서 하면 잘되는 군요!
vsCode에서 주피터노트북으로 할때 만 잘안되는 경우가 있네요!





2021년 11월 21일 일요일

델파이 11 버전으로 만들어진 윈도우32비트 실행파일을 윈도우XP에서 실행하기.

아직도 각종 기기를 제어하는 시스템에는 윈도우XP를 상당 사용하고 있습니다. (시스템 프로그램에 굳이 비용과 아이센스측면에서 윈도우7 이상을 사용할 이유는 없는 경우가 많습니다) 

iMac 에서 윈도우프로그램을 델파이로 만들어 실행파일을 돌려볼라치면 부트캠프를 사용하거나, 파라랠즈 같은 가상머신을 돌려서하는 방법이 있습니다. 

그런데 가상머신의 용량이 너무커서 부담이되어 패러럴즈에서 윈도우 XP를 설치하여 실험하면 좋겠다고 생각되어 XP를 설치하였습니다.

윈도우 10은 Lite버전을 설치한 후 델파이11 Alexandria 을 설치하였고,
윈도우 XP는 OS만 설치한후 용량입니다.

델파이11버전으로 윈32실행파일을 생성하여 XP에서 실행하려고 하면 "올바른 Win32응용 프로그램이 아닙니다"(아래)라는 경고창을 볼 수 있습니다.

구굴링해본 결과 델파이 11버전의 업그레이드버전에서는 문제가 해결되었다고 하네요.

업그레이드 이전 버전에서는 (수정. 2021.11 업그레이드 이후에도 아래와 같이 바꾸어주어야함)

 PE Header  부분을 6.0 에서 5.1로 수정하면 되더군요.



또는 프로젝트 소스에서 
program notepad_clone;
{$SETPEOSVERSION 5.1}     // 5.1 로 변경
{$SETPESUBSYSVERSION 5.1} // 5.1 로 변경 

만약 쓰레드를 사용하는 경우에는  Delphi 11 Windows XP compatibility tweak 을 참조하세요.

#delphi11 #windowsxp #windows32 #올바른 Win32 응용 프로그램 #delphi







2021년 11월 15일 월요일

iMac Big Sur 에서 윈도우98 설치하여 Delphi6.0을 설치하여 실행

 iMac Big Sur 에서 윈도우98 설치하여 Delphi6.0을 설치하여 실행하였습니다.

DOSBox-X 를 방문하시면 OS X (iMAC등)에서 윈도우98SE 설치방법을 알 수 있습니다.

참고로 위 홈피에서 언급하지 않은 사항만 알려드립니다.

DosBoox-X를 처음 실행하면 디렉토리를 지정하라고 합니다. 저는 문서폴더에 폴더를 하나만들어 지정하였습니다.(나중에 이미지 생성시 이곳에 생성되고, 델파이 .ISO 파일도 이곳에 둡니다)

도스박스 윈도우98 환경은 

/Users/jglee/Library/Preferences/DOSBox-X 0.83.19 Preferences

에 있으니 위 홈피에 나온 방법으로 수정하시면 됩니다.(반드시 수정하셔야  설치에 실수가 없습니다. 진짜 win98Se 정도의 속도 밖에 안나옴니다. 나중에 cpu 설정을 바꾸면 되겠지요)

DosBox-X를 압축해제 한 후 iMac의 Application 폴더로 복사/붙여넣기하신후 런처에서 실행하시면 됩니다.(런처에서 실행시 Preferences 설정환경으로 실행됩니다. Windows98SE 설치 참조)

DosBox-X 에서

IMGMAKE hdd.img -t hd_2gig
IMGMOUNT C hdd.img
IMGMOUNT D Win98.iso
IMGMOUNT A -bootcd D
BOOT A:

윈도우98 설치중 DosBox-X가 종료되면(실제 PC에서는 종료됩니다) 

아래와 같이 지정하고 재부팅하면 관련드라이버를 자동으로 잡습니다. (2회)

IMGMOUNT C hdd.img
IMGMOUNT D Win98.iso
BOOT C:

델파이6.0을 설치하려면 Borland Delphi 6.0 에서 다운 받은 후 압축해제 후 위에서 언급한 디렉토리에 저장하시면 됩니다.

IMGMOUNT C hdd.img
IMGMOUNT D Delphi60.iso
BOOT C:

델파이의 부활(Antigravity와의 만남)?

 델파이 프로그램을 사용하여 개인적으로 필요한 프로그램을 생성해 왔는데, 얼마전부터 파이썬으로 옮겨갔다.  그런데 Google 의 Antigravity를 만나고 나서 델파이에 대한 미련을 버리지 못해  제미나이가 Delphi이에 대한 학습도 엄청 했을...