2022년 4월 29일 금요일

Orange3로 통계강의 따라하기 05 (비율검정 카이제곱 chi2)

 Orange3를 엘리쌤과 인공지능에서 알게된후 Python 기초 통계를 공부하면서 최대한 Orange3로 따라하면서 통계도 공부하고, 오렌지도 공부하고 덩달아 파이썬도 익히는 시간을 갖기로 하였습니다.

섹션: 카이제곱(chi2)을 오렌지로 따라해봅니다.

1. 데이터는 아래와 같은 형태로 housetasks.tab 이것을 다운로드하고, 오렌지의 캔바스를 아래와 같이 배치하고 연결합니다.


2. File Widget으로 다운받은 파일을 불러오고, Python Widget을 더블크릭하고 아래 내용을 복사하여 붙여넣기 합니다.

import Orange.data.pandas_compat as p
idf = p.pd.concat(in_data.to_pandas_dfs(), axis=1)
import scipy.stats as ss
print(ss.chi2_contingency(idf))


[RUN]버튼을 선택하여 결과를 확인합니다.


(1944.4561959955277, 0.0, 36, .....) 검정통계량(독립성 검정), p-value, dof(자유도=(12-1)*(4-1))


귀무가설을 기각하고 대립가설을 채택합니다. 가사는 작업구성과 차이가 있습니다.

2. 카이제곱 검정은 카이제곱 독립성(동질성) 검정과 적합도 검정 2개로 구분되네요( https://www.jmp.com 이하 이곳에서 가져옴)

3. 카이제곱 독립성 검정은 두 변수가 관련될 가능성 여부를 확인합니다. 여기에 범주형 또는 명목형 변수 2개에 대한 개수 값이 있습니다. 또한 두 변수가 관련이 없다고 가정합니다. 검정을 통해 이러한 가정이 타당한지 여부를 판정할 수 있습니다.

  • 영화 장르가 첫 번째 변수입니다. 두 번째 변수는 장르별로 관객들이 영화관에서 간식류를 구입했는지 여부입니다. 기본 전제(또는 통계 용어로 귀무가설)는 영화 장르와 관람객들의 간식류 구입 여부 사이에는 관련성이 없다는 것입니다. 영화관 사장은 영화관에 간식류 비축량을 추정하려고 합니다. 영화 장류와 간식류 구매 간에 관련이 없는 경우, 영화 장르가 간식류 판매에 영향을 미칠 경우보다 더 간단히 추정할 수 있습니다.

4. 카이제곱 적합도 검정은 표본 데이터가 특정 이론적 분포에서 추출된 것인지 여부를 확인합니다. 여러 데이터 값들이 표집된 집합이 있고 데이터 값의 분포 양상에 대한 가정이 내려져 있습니다. 카이제곱 적합도 검정은 데이터 값이 가정에 "충분히" 적합한지 또는 가정에 의문점이 있는지 판별하는 방법을 제공합니다.

  • 각 봉지마다 캔디가 100개씩 들어있고 5가지 맛 캔디가 고르게 담겨있는 캔디 봉지 10개 가 있습니다. 각 봉지에 맛별로 동일한 개수의 캔디가 들어 있습니다. 검정하려는 가설은 봉지마다 담긴 5가지 맛의 비율이 같다는 것입니다.

5. 오렌지의 데이터세트에 있는 타니타닉생존자 자료에서 남녀간의 생존여부의 차이가 있는지 카이제곱검정을 해봅니다.


6. Datasets위젯을 더블크릭하여  Titanic을 선택합니다.



6. Data Table위젯을 더블크릭하여 데이타의 구조를 살펴봅니다.


 7. Sieve Diagram(채 다이아그램)위젯을 오렌지 캔바스에 놓고 Datasets와 연결하고 더블크릭한후 아래와 같이 선택합니다.


8. 자료의 갯수가 2201개이고, 카이제곱검정값이  456.87이며, 피값은 0.05 이하입니다. 귀무가설을 기각하고 생존율은 성별에 유의하다고 판정합니다.  4개의 사각형 크기가 다르지요. 사각형 크기는 기대값이고 사각형안의 채(그리드, 그물)의 촘촘함은 관측치입니다.

성별에서 여성의 사각형이 적은 것은 탑승자중 여성의 비율이 낮은것이고, 파란사각형 안의 채(그리드)가 촘촘 한것은 실제 관특치가 많은 것을 보여줍니다. 반대로 남성의 탑승자는 많으나 위 빨강위처럼 채가 듬성듬성한 것은 생존자가 기대값보다 매우 적었다고 해석합니다.

2022년 4월 28일 목요일

Orange3로 통계강의 따라하기 04 (일원분산분석 Anova)

   Orange3를 엘리쌤과 인공지능에서 알게된후 Python 기초 통계를 공부하면서 최대한 Orange3로 따라하면서 통계도 공부하고, 오렌지도 공부하고 덩달아 파이썬도 익히는 시간을 갖기로 하였습니다.

섹션: 일원분산분석(Anova)을 오렌지로 따라해봅니다.

1. 인터넷상의 자료의 URL을 복사합니다. 다운 받은 다음 불러와도 됩니다. PlantGrowth.csv   이 자료에서 group 요인은 수준이 ctrl, trt1, trt2 세 개. 다시 말해 세 집단을 비교하는 것입니다.


2. 오렌지의 캔바스는 아래와 같이 파일과 박스플롯을 배치합니다. 

3. 파일 위젯의 URL에 붙여넣기하고 [Reload] 버튼을 선택합니다.
4. 박스플롯위젯을 선택하고 Variable = weight, Subgroup = group을 선택하고 오른쪽 화면에서 결과를 확입합니다. p값이 0.016으로 유의수준 0.05보다 적으므로 세집단간(요인간)에는 유의미한 차이가 있다고 판정합니다.

5. 데이터의 요인내 일관성이 있는지를 살펴보기위하여 Silhouette Plot위젯을 연결하여 결과를 확인하니 trt1에 2개의 자료가 특이하군요.
6. 해서 정규성검증을 해봅니다. 파이썬스크립트를 캔바스에 놓고 연결을 합니다. (2번째 요인만 확인 합니다)


import pandas as pd
from Orange.data.pandas_compat import table_from_frame,table_to_frame
import scipy.stats as ss
df = pd.concat(in_data.to_pandas_dfs(), axis=1)
trt1 = df.weight[df['group']==1]
print(ss.shapiro(trt1))


Running script:

ShapiroResult(statistic=0.9304108619689941, pvalue=0.451945960521698)


7. p값이 0.45 입니다. 귀무가설을 채택합니다. 즉 자료가 정규성을 크게 벗어났다고 보기 어렵다.


8. 등분산성은 파이썬스크립트를 이용해 아래의 코드로 확인 할 수 있습니다.

레빈 검증과 바틀렛 검증의 코드입니다.

scipy.stats.levene(
    idf.weight[df.group == 0],
    idf.weight[df.group == 1], df.weight[df.group == 2] )     
scipy.stats.bartlett(
    idf.weight[df.group == 0],
    idf.weight[df.group == 1], df.weight[df.group == 2] )




 

Orange3로 통계강의 따라하기 03 (단일표본, 독립표본 t-test의 논리)

   Orange3를 엘리쌤과 인공지능에서 알게된후 Python 기초 통계를 공부하면서 최대한 Orange3로 따라하면서 통계도 공부하고, 오렌지도 공부하고 덩달아 파이썬도 익히는 시간을 갖기로 하였습니다.

1.0 단일표본 t-test


1.1 Crate Table Widget

1.2 Edit Domain Widget

1.3 distributions widget
1.4 Python Script

Ttest_1sampResult(statistic=array([-1.07107994]), pvalue=array([0.31201445]))

평균이 90이다.


2.0 독립표본 t-test

2.1 두 집단 dat_M와 dat_F가 있음

dat_M = [117, 108, 105, 89, 101, 93, 96, 108, 108, 94, 93, 112, 92, 91, 100, 96, 120, 86, 96, 95]
dat_F = [121, 101, 102, 114, 103, 105, 101, 131, 96, 109, 109, 113, 115, 94, 108, 96, 110, 112, 120, 100]

2.2  두 집단의 평균 차이가 통계적으로 유의미한지 t-검증

import scipy.stats

scipy.stats.ttest_ind(dat_M, dat_F, equal_var=False)
Ttest_indResult(statistic=-2.670573872669349, pvalue=0.01108318824471652)

2.3. 파이썬에서는 [2]와 같이 하면 p값이 0.05 보다 적으므로 귀무가설을 기각하여 두 집단간의 차이는 유의미 하다고 판단합니다. 오렌지에서는 할 수 있는 위젯이 없는 것 같더군요.

3.0 이번에는 오렌지에서 파이썬스크립트를 이용합니다. 아래 그림과 같이 위젯을 배치&연결합니다.



3.1 Create Table

3.2 스크립터에 아래와 같이 입력합니다.

import pandas as pd
from Orange.data.pandas_compat import table_from_frame,table_to_frame

df = table_to_frame(in_data)
df = df.stack().reset_index()
out_data = table_from_frame(df)


3.3 Data Table에서 컬럼단위 데이터가 스택되었슴을 확인합니다.




3.4. Distributions widget에서 비교합니다.


3.5 Box Plot Widget . p값이 0.05보다 적네요. 그런데 계산값이 조금 차이가나네요. 공분산 때문인 것 같네요.


 


Orange3로 통계강의 따라하기 02 (평균, 표준편차, 분산, 사분위간 범위)

  Orange3를 엘리쌤과 인공지능에서 알게된후 Python 기초 통계를 공부하면서 최대한 Orange3로 따라하면서 통계도 공부하고, 오렌지도 공부하고 덩달아 파이썬도 익히는 시간을 갖기로 하였습니다.

섹션3~4 평균, 표준편차, 분산, 사분위간 범위를 오렌지로 따라해봅니다.

x = [1, 1, 2, 3, 3, 3, 4, 5, 5, 7]

1. 이번에는 구글시트를 이용하여 자료를 입력하고 가져오기를 합니다. File 위젯을 사용합니다. 크롬 익스플러에서 새탭을 연다음 아래 그림처럼 1, 2, 3 하여 스프레드시트를 열어 데이터를 입력합니다.


2. 공유를 선택합니다.

3. 링크를 생성하고 복사합니다.

4. 오렌지에서 Google Sheets 또는 File 위젯을 캔바스에 떨구고> 복사한 URL을 붙여넣기합니다.

5. Box plot 위젯을 캔바스에 떨구고 연결한다음 

6. 더블크릭하여 결과를 확인합니다.

7. 평균: 3.40, 표준편차: 1.8, 최소값: 1, 최대값: 7, 중위수: 3, 1Q: 2.50, 3Q: 4.50, 범위(IQR * 1.5)를 확인.



Orange3로 통계강의 따라하기 01 (도수분포표와 히스토그램)

 Orange3를 엘리쌤과 인공지능에서 알게된후 Python 기초 통계를 공부하면서 최대한 Orange3로 따라하면서 통계도 공부하고, 오렌지도 공부하고 덩달아 파이썬도 익히는 시간을 갖기로 하였습니다.

섹션2 도수분포표와 히스토그램을 오렌지로 따라해봅니다.

0. 데이터를 오렌지에 입력하는 방법은 인터넷환경에서 구글시트, 로칼컴퓨터에서 텍스트에디터, 오렌지에서 파이썬스크립위젯, 오렌지에서 Create Table 위젯을 사용 할 수 있겠네요. Create Table 위젯을 사용해봅니다. 혹시   Create Table 위젯이 안보이시면 [Options > Add Ones...] 한 후 아래와 같이 설치하시면 됩니다.


I. 범주 변수 
blood = ['A', 'A', 'A', 'B', 'B', 'AB', 'O']
1. Create Table을 캔바스에 올려놓고 더블크릭한 후 아래와 같이 입력합니다.

2. Distributions 위젯을 캔바스에 올려 놓고 > 연결하고 > 더블크릭하면 아래와 같은 결과를 볼 수 있습니다.  
3. 특성(속성, feature) 이름이 "1"로되어 있어 눈에 거슬리면 Edit Domain 위젯을 중간에 삽입하고 아래 그림처럼 변수이름을 바꾸어 주면 됩니다.
4. 최종 결과입니다. (왜이렇게 복잡하게 하냐구요? 오렌지의 위젯을 익힐 수 있잖아요.)

II. 연속 변수
x = [1, 1, 1, 2, 3, 5, 5, 7, 8, 9]
1. 위와 같은 방법으로 하면 이렇게

2. 교제에서는 범주로 나누었는데 이것은 조금 어렵겠네요. 아래와 같이 Preprocess 위젯을 중간에 삽입하고
3. Discretize Continuous Variables를 선택한다음 구간을 4으로 나누면 

4. 결과가 아래와 같습니다.

2022년 4월 26일 화요일

파이썬스크립트 위젯에서 만든 데이터가 Metas로만 읽힐때

앞의 방법으로 파이썬스크립트로 조작한 데이터가 Metas로만 읽힐때는, 당연히 바꾸어 줄 수 있습니다.

Select Columns Widget을 중간에 Insert 한후에 

을 이렇게 바꾸어 주면 됩니다.



Orange3의 Python Script 활용하여 데이터 조작하기

 매일 파이썬코딩을 하는 사람이 아니면 머신러닝을 Orange3로 학습하면 좋겠다는 생각입니다. 그런데 오렌지의 위젯은 정해진 틀에서 작동하므로 유연성이 부족합니다. 그래서 조금만 깊게 들어가면 파이썬의 도움이 필요하다는 생각입니다. 오렌지에서는 이것을 쉽게 해결해줄 수 있는 방법이 있는데 Python Script가 있습니다.(파이스크립트는 3.32 기준으로 Transform에 있음)

아래에서 파이썬스크립트를 활용하는 방법을 살펴봅니다.

0. 환경 만들기

    0.1 miniConda를 설치합니다. https://docs.conda.io/en/latest/miniconda.html#

    0.2 VSCode를 설치합니다. https://code.visualstudio.com/

1. 미니콘다가 설치되어 있으면 오렌지3 가상환경을 만들고 액티브합니다.

    $명령어창(윈도우)에서(맥은 터미널) $conda env list 명령을 실행하여 현재 가상환경을 살펴보고 없으면 orange3라는 가상환경을 만듭니다

    $ conda create -n orange3 python=3.8.13  #타임시리즈 위젯사용을 위해 구버전 설치

    $ conda activate orange3 #orange3 가상환경으로 이동합니다.

    (orange3) C:\user\gilson>_   #orange3 가상환경으로 들어 왔습니다.(윈도우)

    (orange3) $ pip list # 또는 conda list #현재 설치되어 있는 package를 살펴봅니다.

    (orange3) $ pip install scipy==1.7.3 #타임시리즈 위젯사용을 위해 구버전 설치

    (orange3) $ pip install orange3==3.32 #2022년04월26일 현재 최신버전

    (orange3) $ orange-canvas& (윈도우에서는 & 대신 ";"을 또는 필요없음)

    (orange3) $ code . 

만약 vscode가 실행이 안되면 맥은 VSCode 설정에서 "shell command" 설정을 하면 되고, 윈도우에서는 path설정이 제대로 되었는지 확인합니다.

이제 오렌지3와 VSCode를 같이 실행할 수 있습니다. 굳이 VSCode를 같이 실행하는 이유는 오렌지의 파이썬스크립트가 AutoComplete 기능과 Code Insight 기능이 없어서입니다. 아래 이미지를 참조하여 보십시요.

2. 오렌지의 파이썬 스크립트 활용

2.1 오렌지3를 실행하고 > 파이썬스크립트 위젯을 캔바스에 드롭하고 > 파이썬스크립트 위젯을 더블크릭합니다.

2.2 VSCode에서 exam.ipynb 파일을 만든 다음 > Kernel을 지정하라고 하면
    위와 같이 orange3의 가상환경의 python 인터프리터를 지정합니다. 
    제대로 되었는지는 아래 그림과 같이 확인 할 수 있습니다.

2.3 스크립트의 내용을 복사하여 VSCode에 붙여 넣습니다. 그리고 이미있는 내용을 참조하여 파이썬 코드를 작성하고 컨트롤+리턴키로 셀을 실행하여 결과를 확인합니다. 
2.4 원하는 결과가 나오면 셀내용을 복사하여 오렌지3의 파이썬 스크립트 에디터에 붙여넣기하고 스크립트 왼쪽아래의 [런버튼]을 크릭하여 실행합니다. 아래그림을 확인해보세요.
2.5 이와 같은 변환은 자주하기 때문에 이 형식을 저장하여 두었다가 사용하면 좋겠지요. 파이썬 스크립트 화면에서 아래 그림과 같이 하여 저장해 둘 수 있습니다.

2.6 당연히 불러오기도 됩니다.
2.7 Update 버튼을 크릭하면 스크립트 내용을 바꿀 수 있겠죠.

3. 넘파이보다는 판다스사용이 좋으시면 이렇게 하면 됩니다. 이번에는 입력데이타가 있는경우입니다.
3.1 VSCode에서 실행하고 결과를 확인합니다.
3.2 코드보기

import Orange.data.pandas_compat as p
# 오렌지의 in_data를 가상으로 만들어 줍니다.
# 오렌지에 붙여 넣기 한 후에는 실행이 안되게 합니다.
idf = p.pd.DataFrame({'x': [1,2,3,4,5],'y': [1,2,3,4,5]})
in_data = p.table_from_frame(idf)
# 아랫부분이 오렌지에서 실행됩니다.
idf = p.pd.concat(in_data.to_pandas_dfs(), axis=1)
idf = idf[:3] # 이런방법으로 pandas를 활용하면 됩니다.
out_data = p.table_from_frame(idf)

3.3 역시 자주 사용되는 형식이므로 저장하여두겠습니다.
3.3 저장할때 한글이 들어가있으면 별도의 에디터프로그램에서 .py 파일을 불러온다음 utf-8로 저장하여야 정상으로 읽어옵니다.

4. VSCode를 사용하지 않고 idle를 사용할 수도 있다. 다만 idle은 conda의 orange3 가상환경에 있는 idle을 실행해주어야 Orange.data.pandas_conpat 를 import 할 수 있습니다.
저같은 경우에는 
C:\Users\gilso\.conda\envs\orange3\Scripts\idle.exe
에 있습니다. (맥에서는 곧바로 실행이 되는데 윈도우에서는 다른곳의 idle이 실행이 되는군요. 아마도 패스문제 이겠지요. 그래도 가상환경내의 실행파일이 실행되야 맞지않나...

5. feature 와 target으로 분리하려면 아래와 같이하면 됩니다.

import numpy as np

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


x1 = DiscreteVariable("size", ["small", "big"])

x2 = ContinuousVariable("height")

x3 = DiscreteVariable("shape", ["circle", "square", "oval"])

y1 = ContinuousVariable("speed")


domain = Domain([x1, x2, x3], y1)


X = np.array([[1, 3.4, 0], [0, 2.7, 2], [1, 1.4, 1]])

Y = np.array([42.0, 52.2, 13.4])


out_data = Table(domain, X, Y)

 
6. 참고로 파이썬스크립트에서 Table변수 다룰때 스트링으로 고친다음 인티져로 고쳐야 하는 경우가 있음. 
    print(num+1)!=print(int(num)+1), print(num+1) == print(int(str(num))+1)임.
! 2022.04.28 01:40 수정함(5번을 추가하였습니다)

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 <= 가상환경 삭제,오렌지포함

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

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