2022년 12월 28일 수요일

오렌지(orange)에서 python script 이용 seaborn 사용하기 예제

0. conda를 이용하여 orange를 설치하였다면 seaborn을 사용할 수 있습니다.

1. Orange의 Canvas를 아래와 같이 배치하고 Python Script를 선택하고 아래내용을 입력합니다.


2. Script 내용

import pandas as pd
from Orange.data.pandas_compat import table_from_frame
import matplotlib.pyplot as plt
import seaborn as sns
penguins = sns.load_dataset("penguins")
out_data = table_from_frame(penguins)
sns.relplot(x="bill_length_mm", y="body_mass_g", hue="species", data=penguins)
plt.show()

2.1 import seaborn as sns 에서 Package Error 가 나면

  터미널에서 conda install seaborn하여 package를 설치하면 됩니다.


3.  Script를 실행하면 아래와 같은 결과를 확인 할 수 있습니다.

4. Data table Widget을 선택하여 그림1과 같은 결과를 확인합니다.

5. 역시 아래와 같이 약간 복잡한 그래프를 그릴 수도 있습니다.

sns.relplot(x="bill_length_mm", y="body_mass_g", hue="species", col="island", data=penguins)





2022년 12월 14일 수요일

sklearn 설치

 Scikit Learn을 사용할 때 sklearn 이라는 이름을 사용하기 때문에 사용자 또한 conda install sklearn 으로 명령을 입력하는 경우가 많다. 

하지만 특이하게 Scikit Learn은 설치할 때 사용하는 명칭과 불러올 때 사용하는 명칭이 다르다. 

설치는 conda install scikit-learn 으로 해주어야 한다.

업데이트는 conda install scikit-learn -user -upgrade

지정버전 설치는 conda install scikit-learn=1.0 -user

버전확인은

python 으로 들어간 다음 

import sklearn

sklearn.__version__



2022년 12월 13일 화요일

윈도우(windows)환경 오렌지(orange3) 3.34 버전에서 Text Add-one 설치가 안되는 경우

 0. 오렌지(orange)가 3.34로 업그레이드 되고 나서는 Text Add-one이 아래와 같이 설치가 안됩니다.


1. miniconda를 사용하고 있는 환경에서는 conda install orange3-text하고나면



2. 가상환경을 python=3.8로 만들면 해결

conda create -n orange python=3.8





2022년 12월 8일 목요일

오렌지(orange)에서 판다스(pandas) 날자데이터 변환

 0. 유튜브에 있는 kaggle의 바이크 쉐어링 디멘드를 오렌지로 따라하다가 datetime 형식을 year month day hour 로 별도 컬럼으로 생성하다가 어려움에 처했는데 Python Script로 해결하였습니다.

1. 혹시 다른분들에게 도움이 될수 있을가하여 정리하였습니다.

2. 위에 있는 링크를 따라가서 train.csv 데이터를 받아왔습니다. 오렌지를 열고 아래와 같이 위젯을 배치합니다.


3. File 위젯을 선택하여 다운 받은 trans.csv를 읽어들입니다.


   datetime 의 type이 datetime 임을 확인합니다.

4. 파이썬스크립트를 열고 아래의 내용을 복사하여 붙여넣기 하고 실행합니다(RUN)

import pandas as pd
from Orange.data.pandas_compat import table_from_frame, table_to_frame
df = table_to_frame(in_data)

df['Year'] = df['datetime'].dt.year
df['month'] = df['datetime'].dt.month
df['day'] = df['datetime'].dt.day

out_data = table_from_frame(df)

5. Data Table(2) 위젯을 선택하여 Year month day 컬럼이 정상으로 형성되었슴을 확인합니다.


6. Edit Domain 위젯을 선택하여 Year, month, day의 type을 Catagorical로 바꾸어 줍니다.


7. Pivot Table 위젯을 섵택하여 연도별 월별 데이터로 카운트를 변환합니다.


8. Line Plot 위젯을 선택하여 2011년과 2012년의 카운트를 확인합니다. 겨울철에는 확실히 줄어드었네요. 또한 2012년은 2011년에 바하여 일정한 크기로 증가했습니다. 또 확인 할 수 있는 것은 2012년7월은 그래프가 꺽어졌네요. 아마 너무 더워서였을 것이라는 생각입니다.


9. 오렌지에서 데이터 전처리는 Python Script 에서 table_to_frame()로 불러온다음  판다스(Pandas)를 이용하여 처리하고  table_from_frame()으로 내보내면 됩니다. 에전에는 Orange.data.pandas_compat 를 사용하였는데 Pandas를 import하여 처리하고 입출력만 

from Orange.data.pandas_compat import table_from_frame, table_to_frame

을 이용하는 것으로 바꾸었습니다,

Orange.data.pandas_compat 에서는 dt.year 변환이 되지 않아요.

2022년 11월 13일 일요일

macOS Monterey에서 Miniconda 설치 오류나는 경우

0. macOS Monterey에서 Miniconda, Jupeter 설치하려고 하였더니 아래와 같이 설치가 안되더군요.




1. 터미널에서 brew를 설치합니다.


Last login: Sun Nov 13 17:30:40 on ttys000

~ % brew

zsh: command not found: brew

~ % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)

추가로 ==> The Xcode Command Line Tools will be installed.가 설치됩니다.

2. wget을 설치합니다.

~ % brew install wget

3. 미니콘다를 설치합니다.


~ % mkdir -p ~/miniconda3

~ % wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda3/miniconda.sh

(또는 1,2,3을 생략하고  Miniconda 에서 Miniconda3-latest-MacOSX-x86_64.sh 파일을 다운 받은다음,  miniconda3 폴더를 만들고, 옮겨와서 miniconda.sh 로 바꾼다음 아래와 같이 실행해도됩니다)

~ % bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
~ % rm -rf ~/miniconda3/miniconda.sh
~ % ~/miniconda3/bin/conda init bash
~ % ~/miniconda3/bin/conda init zsh


conda init bash 및 conda init zsh(zsh를 사용하는 경우) 명령은
~/.bashrc 및 ~/.zshrc 파일을 수정하여 경로에 conda를 추가합니다.
따라서 명령줄 프로그램 키워드로 인식됩니다.

4. 터미널을 종료하고 다시실행합니다.


5. pip , python, sqlite 등이 설치되었습을 확인할 수 있습니다.




2022년 6월 4일 토요일

Lazarus 2.2.2(2022.5.16) 버전 Mac에 설치 (lldb 디버거 설정 포함)

 최소 macOS 10.12 이상이 필요합니다.  다운로드는 이곳

세 가지 패키지 fpc, fpc-src 및 LazarusIDE를 모두 다운로드하여 설치해야 합니다. 

fpc - 컴파일러, 일부 명령줄 도구, 기본 장치 및 데이터베이스 액세스와 같은 비시각적 구성 요소 

fpc-src - 코드 브라우징에 필요한 fpc 및 패키지의 소스 

LazarusIDE - IDE, 시각적 구성 요소 및 도움말 파일



Step 1: Xcode Command Line Tools (최신버전의 Mac 사용자는 설치가 필요없더군요)

sudo xcode-select --install
sudo xcodebuild -license accept

Step 2: FPC binaries and FPC source code



Step 3: Install the Lazarus IDE



Step 4: Configure the Debugger


4-1. Lazarus를 실행하면 Debuger 설정을 요구합니다. (1) (2) 버튼을 선택합니다.

파인더 창이 나타나면 Shit + Cmd + . (시프트 + 코멘더+ 점)키를 눌러 감추어진 폴더와 파일을 보이게합니다.

4-2. (1)use (2)bin (3)lldv 를 선택하고 (4)Open을 선택합니다.



OK를 확인하고 Start IDE를 선택합니다. 

4-3. 계속하여







* 참고로 Lazarus를 처음 실행하면 창들이 분리되어 있습니다. 하나로 합치려면 아래와 같이 anchordocking, anchordockingdsgn Packages를 설치합니다.



2022년 5월 23일 월요일

오렌지 Python Script에서 matplotlib 한글깨짐 현상

   "데이터 사이언스 스쿨" K-평균군집화를 오렌지로 따라해봅니다. 

아래는 데이터 사이언스 스쿨에서 가져온것임미니배치 K-평균 군집화

K-평균 방법에서는 중심위치와 모든 데이터 사이의 거리를 계산해야 하기 때문에 데이터의 갯수가 많아지면 계산량도 늘어단다. 데이터의 수가 너무 많을 때는 미니배치 K-평균(Mini-batch) 군집화 방법을 사용하면 계산량을 줄일 수 있다. 미니배치 K-평균 군집화는 데이터를 미니배치 크기만큼 무작위로 분리하여 K-평균 군집화를 한다. 모든 데이터를 한꺼번에 썼을 때와 결과가 다를 수는 있지만 큰 차이가 없다.

1.오렌지 캔바스에 Python Script Widget 하나를 올려 놓고 아래 코드를 붙여 넣기 합니다. (소스는 데이터 사이언스 스쿨에서 복사) .[Ctrl + Enter] 또는 [Shift + Enter], [RUN]버튼으로 실행

import numpy as np

import matplotlib.pyplot as plt

# 아래 2줄은 한글 깨어짐 때문에 추가함
plt.rc('font',family='AppleGothic')
plt.rcParams['axes.unicode_minus']=False

from sklearn.cluster import KMeans
from sklearn.cluster import MiniBatchKMeans
from sklearn.datasets import make_blobs

X, y = make_blobs(n_samples=150000, cluster_std=[1.0, 2.5, 0.5], random_state=170)

model1 = KMeans(n_clusters=3).fit(X)

model2 = MiniBatchKMeans(n_clusters=3, batch_size=1000, compute_labels=True).fit(X)

idx = np.random.randint(150000, size=300)
plt.subplot(121)
plt.scatter(X[idx, 0], X[idx, 1], c=model1.labels_[idx])
plt.title("K-평균 군집화")
plt.subplot(122)
plt.scatter(X[idx, 0], X[idx, 1], c=model2.labels_[idx])
plt.title("미니배치 K-평균 군집화")
plt.tight_layout()
plt.show()


2. 한글 깨어짐 현상이 없어 졌습니다. (맥의 경우입니다)

# 아래 2줄은 한글 깨어짐 때문에 추가함
plt.rc('font',family='AppleGothic')
plt.rcParams['axes.unicode_minus']=False
을 추가하였습니다.



2022년 5월 22일 일요일

오렌지로 데이터 사이언스 스쿨 따라하기(4) 부분회귀

   "데이터 사이언스 스쿨" 4-4 부분회귀를 오렌지로 따라해봅니다.

1. 맥환경은 기준으로 설명합니다.

맥에서 터미널을 실행합니다. [CMD+Space]를 누르고 [터미널]이라고 입력합니다. 터미널에서 아래와 같이 명령어를 입력하여 오렌지와 주피터큐티콘솔을 백그라운드로 실행합니다.

이것은 저의 맥에서 만든 가상환경이니 여러분은 여러분이 만든 가상환경에 맞게 바꾸면 됩니다.
미니콘다 설치는 윈도우 미니콘다 설치 맥은 비슷하니... 오렌지, 큐티콘솔 설치는 이곳(제일아래)을 참조하십시요.
오렌지의 캔바스에 위젯을 아래와 같이 배치하고 연결합니다.



2. File Widget에서 [Browse documentation datasets] 버튼을 눌러 [housing.tab]자료를 불러옵니다.

3. Correlations Widget을 선택하여 아래와 같이 설정하여 각 변수와  MEDV와의 상관도를 확인합니다. Correlation Widget과 Scatter Plot Widget의 연결은 아래 그림을 참조하십시요.


4. Scatter PLot Widget을 선택하시면 아래 그림처럼 Axis 그룹박스가 선택불가로 회색처리되었습니다. (3)번에서 띄워놓은 Correlations Widget 에서 (2)를 바꾸어 주면 Scatter PLot Widget의 그래프도 바뀌어 보여 집니다.

AGE가 음의 상관관계를 보이는 것 같지만 상관도가 없는 것을 확인 할 수 있습니다.

5.   "데이터 사이언스 스쿨" 4-4 의 일부내용입니다. 네모박스부분 우측상단의 복사아이콘을 선택하여 코딩내용을 복사합니다.

6. (1)단계에서 실행한 Jupyter QtConsole에 아래 그림처럼 마우스오른쪽버튼을 눌러 붙여넣기하고 [리턴-키]를 누릅니다. 그래프가 보이게 하기위하여 첫줄에 %matplotlib inline 을 넣어 실행했습니다.


7. 계속하여 (5)의 (2)에서와 같이 다음 코딩부분을 복사&붙이기&[리턴-키] 하고 결과를 확인합니다.


8. 계속하여  "데이터 사이언스 스쿨" 4-4 아랫부분의 코딩내용도 [복사&붙이기&리턴-키]하여 결과를 확인합니다.

9. 따라하기 (3)에서의 statsmodels 의 summary 부분도 [print(result_boston.summary()]하여 결과를 확인합니다.

10. 사이언스 스쿨의 내용을 따라 할 때 코딩내용의 실행 결과가 오렌지로 연결될때는 오렌지의 Python Script Widget을 이용하고, 결과만 확인해보고 리턴이 없는 경우에는 Jupyter Qtconsole을 이용하면은 학습에 도움이 되겠다고 생각합니다. 머신만 러닝이냐 사람도 러닝이다!.
통계를 전문으로 하시는분, 코딩을 전문으로 하시는분, 가르치기를 전문으로 하시는분, 그리고 공학이나 의학 그리고 각분야 별로 전문을 하시는분과 나 자신이 오렌지를 잘활용했으면 해서 글을 자주 올리고 있습니다.   


2022년 5월 21일 토요일

오렌지로 데이터 사이언스 스쿨 따라하기(3) 스케일링(조건수)

  "데이터 사이언스 스쿨" 4-3 스케일링을 오렌지로 따라해봅니다.

1. 오렌지 캔바스를 아래와 같이 구성합니다.


2. File Widget에서 [Browse documentation datasets] 버튼을 눌러 [housing.tab]자료를 불러옵니다.

3. Preprocess Widget에서 Normalize 합니다.



4. Test and Score 와 Test and Score (1) Widget을 선택하여 결과가 같음을 확인합니다.

5. Data Table 과 Data Table (1) Widget을 선택하여 계수가 달라졌음을 확인합니다.

6. Python Script Widget을 선택하여 아래 내용을 복사&붙여넣기 한다음 [RUN]버튼을 선택합니다.

import statsmodels.api as sm
import numpy as np
import Orange.data.pandas_compat as p
df = p.pd.concat(in_data.to_pandas_dfs(), axis=1)

model1 = sm.OLS.from_formula("MEDV ~ CRIM+ZN+INDUS+CHAS+NOX+RM"
+"AGE+DIS+RAD+TAX+PTRATIO+B+LSTAT", data=df)

result1 = model1.fit()
print(result1.summary()) 

statsmodels 패키지로 풀어 summary 리포트를 출력해보는 것입니다.

6. Python Script widget 결과를 확인합니다.

조건수가 1.51e+04로 매우 큼을 확인합니다. 아래 내용은 사이언스 스쿨에서 가져왔습니다.
회귀분석에서 조건수가 커지는 경우는 크게 두 가지가 있다.
  • 변수들의 단위 차이로 인해 숫자의 스케일이 크게 달라지는 경우. 이 경우에는 스케일링(scaling)으로 해결한다.
  • 다중 공선성 즉, 상관관계가 큰 독립 변수들이 있는 경우, 이 경우에는 변수 선택이나 PCA를 사용한 차원 축소 등으로 해결한다.

7. Python Script Widget (1)은 Python Script Widget을 복사&붙여넣기 한것으로 같은 내용입니다. [RUN] 버튼을 선택해 실행 시키고 결과를 확인합니다.


조건수가 9.82로 매우 적어졌슴을 확인합니다.





오렌지로 데이터 사이언스 스쿨 따라하기(2) make_regression

 "데이터 사이언스 스쿨" 4-2 선형회귀분석의 기초를 오렌지로 따라해봅니다.

1. 오렌지의 캔바스에 위젯을 아래와 같이 배치하고 연결합니다.


2. Python Script Widget을 선택하고 사이언스 스쿨에 있는 식을 약간 변형하여 아래와 같이 입력하고 Ctrl+Return 또는 [RUN]버튼을 선택합니다.

from Orange.data import Table
from sklearn.datasets import make_regression
import statsmodels.api as sm

X0, y, w = make_regression(n_samples=200, n_features=1,
bias=100, noise=10, coef=True, random_state=1)

y = y.reshape(len(y), 1)

out_data = Table.from_numpy(None, X0, y)

3. Test and Score Widget을 선택하여 확인합니다.


4. Data TAble (1) Widget을 선택하여 절편과 계수를 사이언스 스쿨과 비교 확인합니다.

5. Feature Constructor Widget을 선택하여 잔차를 계산합니다.


6. Feature Statistics Widget을 선택하여 잔차의 통계량을 확인합니다. 평균이 0(영)에 근사합니다.


7. Scatter Plot (1) Widget을 선택하여 잔차의 분포를 살펴봅니다.


8. Google Sheets에서 아래와 같이 입력하고, 공유하고 링크를 복사합니다.
 

9. File Widget을 선택하고 (8)에서 복사한 URL을 붙여넣고 Name을 Feature로 Role을 feature로 변경합니다.

참고로 Create Table Widget이나 Google Sheet Widget으로 불러오면 
Some predictor(s) failed (see more ...)
- Linear Regression: Linear Regression: domain transformation produced no defined values

경고가 뜨며 처리가 안되더군요. 반드시 파일위젯을 사용하십시요. 다른 경우에도 많이 그렇더군요.

10. Prediction Widget을 선택하여 결과를 사이언스 스쿨과 비교합니다.


델파이 12.1이냐 11.3이냐?

 델파이가 12.1이 나왔습니다. 혹시 11.3버전의 커뮤니티버전이 필요하시는분이 있을 수 있을 것 같아 https://altd.embarcadero.com/.../RADStudio_11_3_esd_28... 와 이것 찾느랴 엄청고생함.