2023년 2월 2일 목요일

Python 의 sklearn 에 있는 datasets 를 활용하는 방법

0.  sklearn package를 설치하면 학습용 데이터가 포함되어 있습니다.

    이것을 이용하는 방법에 대해 몇가지를 정리해 봅니다.

1. 데이터셋의 종류입니다.

    load_boston: 보스톤 집값 데이터

    load_iris: 아이리스 붓꽃 데이터

    load_diabetes: 당뇨병 환자 데이터

    load_digits: 손글씨 데이터

    load_linnerud: multi-output regression 용 데이터

    load_wine: 와인 데이터

    load_breast_cancer: 위스콘신 유방암 환자 데이터가 있고 그외에도 몇가지가 더있습니다.


2. 불러오려면

from sklearn import datasets
data = datasets.load_

와 같은 방법으로 불러오면 됩니다.

3. 공통 key는 다음과 같습니다.

    data: 샘플 데이터, Numpy 배열로 이루어져 있습니다.

    target: Label 데이터, Numpy 배열로 이루어져 있습니다.

    feature_names: Feature 데이터의 이름

    target_names: Label 데이터의 이름

    DESCR: 데이터 셋의 설명

    filename: 데이터 셋의 파일 저장 위치 (csv)

4. 데이터를 불러오는 방법은

from sklearn import datasets
iris = datasets.load_iris()
iris

{'data': array([[5.1, 3.5, 1.4, 0.2],   [4.9, 3. , 1.4, 0.2],  [4.7, 3.2, 1.3, 0.2],  .....................

        [6.2, 3.4, 5.4, 2.3],   [5.9, 3. , 5.1, 1.8]]),

 'target': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, .........

      2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]),

 'frame': None,

 'target_names': array(['setosa', 'versicolor', 'virginica'], dtype='<U10'),

 'DESCR': '... :Number of Instances: 150 ...'

 'feature_names': ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'],

 'filename': 'iris.csv',

 'data_module': 'sklearn.datasets.data'}

4. 이렇게 불러온 데이터를 pandas(판다스)로 불러오는 방법은 여러가지가 있으나 아래와 같은 방법이 간명하더군요.

from sklearn import datasets
import pandas as pd
iris = datasets.load_iris(as_frame=True)
df = iris.data
df['target'] = iris['target']



5. target의 number를 polynominal로 바꾸려면

iris = datasets.load_iris(as_frame=True)
df = iris.data
df['target']=iris.target
# 0.0, 1.0, 2.0으로 표현된 label을 문자열로 매핑
#df['target'] = df['target'].map({0:"setosa", 1:"versicolor", 2:"virginica"})
idic = {i:j for i,j in enumerate(iris['target_names'])}
df['target'] = df['target'].map(idic)

6. 오렌지의 파이썬스크립트 위젯





2023년 1월 29일 일요일

오렌지에서 Outliers는 이상값을 탐지하는 위젯입니다.

0. 오렌지3와 Rapidminer9 으로 이상값을 추출해 보았습니다.

1. 오렌지 캔바스는 아래와 같이 구성하였습니다.


2. 데이터는 이곳에서(wine) 다운로드 받습니다.

3. 원래의 데이터에 오렌지와 래피드마인드를 비교하기위해 ID열을 추가하였습니다. ID특성을 제거하기위하여 Select Columns Widget을 사용하였습니다.

4. 군집화를 위하여 K-Means Widget을 사용하였고, 파라메터는 아래와 같습니다.


5. Box Plot Widget으로 군집화 결과를 확인해보면 래피드마인드와 차이가 납니다.



6. Outliers widget의 파라메터는 아래와 같습니다. Method를 래피드마인드와 같이 Local Outrier Factor(LOF)로 하지 않은 이유를 결과를 최대한 유사하게 하기위해서 입니다.

7. Select by Data Index를 이용하여 이상값의 위치를 확인하였습니다.

8. 래피드마이너와 결과를 비교해봅니다. 2개가 빠집니다.


9. 참고로 래피드마이너의 포로세서구성을 보입니다.







2023년 1월 5일 목요일

ValueError: list.remove(x): x not in list

 파이썬을 하다가 이상한 현상이 있어 상당시간 허비하고 알게되었습니다.

from random import *
user = list(range(1,21))
shuffle(user)
second = sample(user, 4)
first = sample(second, 1)
print(first, second)
second.remove(first)
second.sort()
print('1등 당첨자 : {0}'.format(first))
print('2등 당첨자 : {0}'.format(second))

[3] [3, 5, 9, 12]

Traceback (most recent call last):

  File "/Users/gilson/eman.py", line 7, in <module>

    second.remove(first)

ValueError: list.remove(x): x not in list

구글에서 관련검색을 해봐도 적당한 답이 없네요.

결국 오류메시지 "x not in list"의 의미는 x 가 리스트가 아니어야 한다는 의미!

second.remove(first[0]) 라고 하고서야 원하는 결과를 얻게되었습니다.


2023년 1월 4일 수요일

Jupyter Qtconsole 설치 및 사용 팁 몇가지

 0. 설치

miniconda가 설치된 환경에서 터미널을 열고

% conda create -n jupyter

% conda activate jupyter

(jupyter)% conda install qtconsole

(jupyter)% jupyter qtconsole

위의 명령어를 순서되로 치면 jupyter라는 가상환경을 만들고, 그곳으로 들어가서,  jupyter가 qtconsole 환경에서 실행된다.( ipython 사용법은 이곳 참조 )

1. 가장기본적인 키 Enter가 3가지입니다. 그냥 엔터키는 현재 셀을 실행, 컨트롤 + 엔터는 줄바꿈만  일어납니다. 쉬프트 + 엔터는 셀 실행. ESC 키는 셀에서 빠져나오기.

2. 업키는 이전 셀(히스토리)을 불러옵니다. 

   홈키를 눌러 맨압으로 이동. 

   %%writefile + 파일명 + 엔터한후 쉬프트+엔터하면 파일로 저장됩니다.

   %은 magic키로 여러 종류가 있으니 %magic하여 살펴보세요.

    cat, cp, mv, rm, rmdir, mkdir, ls, echo, cd, clear, conda, pip, reset

3. 환경설정

(jupyter)% jupyter qtconsole --help-all 하면 관련 옵션을 볼 수 있으며

(jupyter)% jupyter qtconsole --generate-config 하면 환경을 새로 생성합니다.

(jupyter)% jupyter qtconsole 한후

In [6] load ~/.jupyter/jupyter_qtconsole_config.py

편집기로 불러 아래와 같이 콘솔의 가로 크기와 폰트 크기를 키워줌

%edit exam01.py 하면 VSCode 에서 편집할 수 있도록 아래와 같이 수정함.

c.JupyterWidget.editor = 'code'

c.ConsoleWidget.console_width = 121
# c.ConsoleWidget.font_family = ''
## The font size. If unconfigured, Qt will be entrusted
# with the size of the font.
# Default: 0
c.ConsoleWidget.font_size = 14

저장은 아래와 같이 한 후 쉬프트+엔터 하면됩니다.


가로크기와 폰트가 커졌음을 확인합니다.

외부파일 편집은 %edit ~/.jupyter/jupyter_qtconsole_config.py 형식으로 하면됩니다.


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를 설치합니다.



Python 의 sklearn 에 있는 datasets 를 활용하는 방법

0.  sklearn package를 설치하면 학습용 데이터가 포함되어 있습니다.      이것을 이용하는 방법에 대해 몇가지를 정리해 봅니다. 1. 데이터셋의 종류입니다.      load_boston: 보스톤 집값 데이터      l...