프로그래밍 Programming
파이썬 - 변수, 이름, 객체
2020. 2. 12.변수, 이름, 객체 파이썬에서 모든 것(부울, 정수, 상수, 문자열, 데이터 구조, 함수, 프로그램)은 객체object 로 구현된다. 객체는 데이터가 담긴 투명한 플라스틱 박스다. 투명한 유리창으로 밀봉된 박스(값을 볼 수 있지만 바꿀 수는 없다)는 불변immutable , 열려있는 상자는 데이터 값 변경이 가능한 가변mutable 으로 볼 수 있다. 파이썬은 객체의 타입을 바꿀 수 없는 강타입이다. 변수는 단지 이름일 뿐이다. 메모리에 있는 값을 참조하기 위한 이름이다. = 을 통해 할당하게 된다. 할당이라는 의미는 값을 복사하는 것이 아니라 데이터가 담긴 객체에 그냥 이름을 붙이는 것이다. 포스트잇이라고 생각하면 된다. >>> a = 7 >>> print(a) 7 >>> 변수 이름 b도 7이 담긴 객..
엑셀과 파이썬 결합을 통한 강력한 엑셀 활용법 How to Supercharge Excel With Python
2020. 2. 6.Photo by Lukas from Pexels How to integrate Python and Excel with xlwings 엑셀과 파이썬을 결합하여 사용할 수 있다면, 엑셀에 날개를 다는 것이나 마찬가지다. xlwings 라고 불리는 파이썬 라이브러리는 이를 가능하게 해주는데, VBA 를 통해 파이썬 스크립트를 호출하여 데이터를 전달할 수 있게 한다. 그럼 아래에서 이에 대해 알아보자. 파이썬과 엑셀 VBA 통합 사용의 장점 VBA 로도 충분히 상당한 작업을 할 수 있다. 하지만 파이썬을 엑셀에 통합해서 사용해야하는 이유는 무엇일까? VBA 에 대한 지식 없이도 엑셀에서 커스텀 함수를 만들수 있다 아무래도 사용자들은 엑셀이 친숙하다 파이썬을 사용함으로써 확실히 데이터 작업 속도가 빨라진다 파이썬..
윈도우에 파이썬 및 pip 설치하기 Python & pip Windows installation
2020. 2. 3.금일 기준 윈도우용 파이썬 최신 버전은 3.8.1 이다. Latest Python 3 Release - Python 3.8.1 Python Release Python 3.8.1 The official home of the Python Programming Language www.python.org 아래 링크 최하단 Files 에서 설치 파일을 다운로드할 수 있다. https://www.python.org/downloads/release/python-381/ 아래 3가지 중 적당한 것을 다운로드 받은 후 설치한다. Windows x86-64 embeddable zip file Windows for AMD64/EM64T/x64 4d091857a2153d9406bb5c522b211061 8013540 SIG ..
spaCy 패키지와 코드를 통한 NLP 기초 다지기 Clear the Fundamentals of NLP with Code.
2019. 12. 14.본 포스팅에서는 최근 각광을 받고 있는 spaCy 패키지를 사용하여 NLP 의 기본내용을 코드 실행을 통해 살펴본다. spaCy 는 Explosion AI 의 Matt Honnibal 에 의해 개발된 것으로 “Industrial strength NLP in Python” 을 모토로 삼고 있다. 생산환경에서 주로 사용되며, 사용자 친화성과 객체 기반 접근방식을 통해 문자열이나 배열 대신 객체를 결과값으로 반환한다. NLTK 보다 나은 점 Cython 로 작성되어 엄청 빠른 속도를 선보인다 의존 구문 분석 커스토마이징이 손쉬운 대규모의 워드 벡터 접근 가능 통합된 워드 벡터 GPU 가속 지원 사용자 정의 딥러닝 네트워크 지원 하지만, NTNL 에 비해 매우 느린 문장 토큰화 속도 Prerequisites 다..
우분투 18.04 에 아파치 스파크 설치하기 Install Apache Spark on Ubuntu 19.04/18.04 & Debian 10/9/8
2019. 11. 4.Ubuntu 19.04/18.04 그리고 Debian 9/8/10 에 Apache Spark 를 설치하는 방법에 대해 알아봅니다. 설치에 앞서 시스템 패키지를 업데이트합니다. (AnnaM) founder@hilbert:~$ sudo apt -y upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done (AnnaM) founder@hilbert:~$ sudo apt -y upgrade Step 1: Install Java Apache Spark 는 자바를 필요로 합니다. 어떤 버전의 자바가 설치되어 있는지 java -version 으로 확인해..
Plotly를 이용한 데이터 시각화 Data visualization with Plotly
2019. 10. 26.Data visualization는 데이터로부터 정보와 가치를 추출해내는 데 중요한 역할을 한다. 파이썬은 이러한 목적에 부합하는 다양한 라이브러리를 제공하고 있는데, 여기서는 Plotly 에 대해 살펴본다. Plotly 는 온라인 데이터 분석과 시각화 툴을 개발하는 회사로, pip install plotly 를 통해 간단하게 설치할 수 있다. 그리고 파이썬 노트북에서 임포트해오면 된다. 아래는 아나콘다 환경에서 설치하는 예이다. (AnnaM) founder@hilbert:~$ conda install -c plotly plotly Collecting package metadata: done Solving environment: done ## Package Plan ## environment locati..
tqdm 을 사용하여 파이썬/판다 Progress Bars 만들기
2019. 10. 24.Introducing tqdm tqdm 는 즉석에서 progress bar 를 생성해주고, 함수나 반복문의 TTC (Time To Completion) 를 예측하는 파이썬 패키지를 말한다. from tqdm import tqdm_notebook list = [] for x in tqdm_notebook(range(10000)): list.append(x**x) pip 를 이용해서 다음과 같이 간단히 설치가 가능하다. (AnnaM) founder@hilbert:~$ pip install tqdm Collecting tqdm Downloading https://files.pythonhosted.org/packages/e1/c1/bc1dba38b48f4ae3c4428aea669c5e27bd5a7642a74c8..
고급 주피터 노트북 사용팁 Advanced Jupyter Notebooks Tutorial (Part 1)
2019. 10. 24.Shell Commands 느낌표(exclamation mark)로 시작되는 코드 셀 내의 라인은 셀 커맨드로 실행된다. 이는 데이터셋을 비롯한 파일을 다룰 때나 파이썬 패키지를 관리할 때 유용하다. 간단한 예를 보자. !echo Hello World!! Hello World!! pip freeze | grep pandas pandas==0.25.1 Note: you may need to restart the kernel to use updated packages. 그리고 $ 심볼을 활용하여 파이썬 변수로도 활용가능하다. message = 'This is nitfy' !echo $message This is nitfy Basic Magics 유닉스 명령어와 상당 부분 유사해보이지만, 매직 명령어는 모두 ..
아파치 웹서버 버추얼 호스팅 설정 How To Set Up Virtual Hosts in the Apache Web Server on Ubuntu 18.04
2019. 10. 21.아파치 웹서버를 사용하는 경우, 하나 이상의 도메인을 호스팅하기 위해 버추얼 호스트(Nginx 의 server blocks 과 유사)를 설정할 수 있다. 도메인 설정과 관련해서 더욱 자세한 내용은 introduction to DigitalOcean DNS 을 참조하기 바란다. 1. antilibrary.org 라는 도메인 이름으로 디렉토리를 생성한다. mkdir -p 상위경로도 함께 생성하라는 의미이다. (parabellum) founder@hilbert:~$ sudo mkdir -p /var/www/antilibrary.org/public_html 로그 파일이 저장될 디렉토리도 생성 (parabellum) founder@hilbert:~$ sudo mkdir /var/www/antilibrary.org..
아파치 삭제 후 재설치 apache2.service is not active, cannot reload.
2019. 10. 18.아래와 같이 아파치 서비스가 제대로 작동하지 않는 경우 아파치를 삭제하고 재설치하는 방법을 알아보자. 다음의 순서대로 진행하면 된다. (base) founder@hilbert:/etc/nginx/sites-available$ sudo systemctl status apache2 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: failed (Result: exit-code) since Fr..
커스텀 ML 툴을 만들어주는 가장 빠른 방법 Streamlit 앱 소개 Turn Python Scripts into Beautiful ML Tools
2019. 10. 12.커스텀 ML 툴을 만들어주는 가장 빠른 방법 중 하나인 Streamlit 앱에 대해서 알아보자. 먼저 전통적인 ML 엔지니어의 작업 플로우와 Streamlit 을 이용한 플로우를 비교해보자. 아래는 기존의 앱 빌딩 플로우이다. 위의 방법도 물론 훌륭하다. 하지만 새로운 기능이 필요하다면, 그리고 툴 팀이 10개 이상의 서로 다른 프로젝트를 서포팅하고 있어 업데이트에 약 2달 정도 소요될 것입니다라고 말하는 바람에, 다시 주피터 노트북을 통해 실행한 다음, 이 내용을 파이썬 스크립트로 옮긴다. HTTP request, HTML, callback 등의 요소를 고려해가면서 Flask 앱 등을 작성한다. 구동해보고 부족한 기능이 있으면 다시 위의 과정을 반복한다고 생각해보자. 이러한 부분에서 어떻게 파이썬 스크..
텐서플로우 임포팅 경고 메시지 synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'
2019. 9. 27.텐서플로우 설치 후 다음과 같은 메시지가 뜨는 경우 (AnnaM) founder@hilbert:~$ python Python 3.7.4 (default, Aug 13 2019, 20:35:49) [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>> >>> >>> import tensorflow as tf /home/founder/anaconda3/envs/AnnaM/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:526: FutureWarning: Passing (type, 1) ..
10줄짜리 파이썬 코드로 사진 속 자동차 수 카운트하기 Count Number of Cars in Less Than 10 Lines of Code Using Python
2019. 9. 26.10줄짜리 파이썬 코드로 간단히 사진 속의 차량 대수를 카운트 해보자. 먼저 아래의 라이브러리가 설치되어 있어야 한다. 설치 이전이라면 각각의 링크를 참고해 설치하도록 한다. opencv-python cvlib matplotlib tensorflow keras TensorFlow An open source machine learning library for research and production. www.tensorflow.org Home - Keras Documentation Keras: The Python Deep Learning library You have just found Keras. Keras is a high-level neural networks API, written in Pytho..
오픈소스 컴퓨터 비전 라이브러리 cvlib 설치
2019. 9. 24.오픈소스 컴퓨터 비전 라이브러리 cvlib 을 설치해보자. https://pypi.org/project/cvlib/ cvlib A high level, easy to use, open source computer vision library for python pypi.org 다음과 같이 설치할 수 있다. (lindy) founder@casey:~$ pip install cvlib Collecting cvlib Downloading https://files.pythonhosted.org/packages/ee/f8/86bbd3187ae6741f01f541ee88ee1fbac398f4248b9b327fd497358b4ef1/cvlib-0.2.2.tar.gz (10.0MB) |███████████████████..
우분투에 opencv-python 설치하기 Install OpenCV-Python in Ubuntu 18.04
2019. 9. 24.opencv-python 라이브러리를 Ubuntu 18.04 아나콘다 환경에 설치해보자. (lindy) founder@casey:~$ pip install opencv-python Collecting opencv-python Downloading https://files.pythonhosted.org/packages/44/35/6db0fa2e644922533ddc 2a3c41d1a86dabefce89d9db85ec31dcc69dc2e3/opencv_python-4.1.1.26-cp37-cp37m-manyl inux1_x86_64.whl (28.7MB) |████████████████████████████████| 28.7MB 32.4MB/s Requirement already satisfied: nump..
파이썬 리스트 Python Lists and List Manipulation
2019. 9. 24.파이썬 리스트의 특징 가변적 다양한 타입 포함가능 순차적 접근 (순서나 내용이 바뀔 때 유용) 동일한 값 중복해서 넣을 수 있음 이하 사용할 예제는 다음과 같음 >>> mylist = [‘a’,’b’,’c’,’w’,’d’,’e’,’f’,’g’,’h’,’i’,’w’] >>> mytuple = (‘x’,’y’,’z’) 리스트의 생성 >>> mylist = [] >>> mylist = list( ) 리스트로의 변환 >>> list(‘word’) ['w', 'o', 'r', 'd'] >>> text = ‘We strongly encourage maintainers of third-party Python projects to test with 3.8 during the beta phase and report is..
Dynalist - best outlining app for your best work Help center 소개
2019. 8. 3.workflowy https://workflowy.com/ 를 지난 달까지 사용하다 이번 달 들어 dynalist https://dynalist.io/ 로 옮겨탔습니다. 한 달 정도 workflowy 를 사용해보니 유용한 앱이라는 생각은 들었습니다. 무료 버전은 쓸 수 있는 목록에 제한이 있어 유료로 사용하기로 마음먹은 상황에서 돈을 더 주더라도 괜찮은 걸 선택해야겠다는 생각이 들었습니다. 그래서 workflowy 외에 어떤 것이 있는지 찾아보던 중 dynalist 를 알게 되었습니다. 일단 써봐야 알겠지만 한 눈에 보기에도 workflowy 보다는 풍부한 기능을 가진 것으로 보였습니다. 물론 월사용료도 그만큼 더 비싸긴했지만요. 다음과 같이 가입을 합니다. 구글 계정을 통해서도 간편하게 가입이 가능합니..
아나콘다 환경에서 주피터 노트북 ModuleNotFoundError: No module named 'ccxt'
2019. 6. 21.아나콘다 가상환경에서 ccxt 패키지를 설치하였으나 주피터 노트북에서 아래와 같이 해당 모듈을 찾을 수 없다고 나오는 경우의 처리방법에 대해 알아보자. import ccxt print(ccxt.exchanges) --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) in () ----> 1 import ccxt 2 print(ccxt.exchanges) ModuleNotFoundError: No module named 'ccxt' 하지만 아래에서 보는 바와 같이 ccxt 1.18.766 버전이 설치되어 있음을 알 수 있다. (l..
오라클 SQL 자주 쓰이는 숫자 관련 함수 ROUND
2019. 6. 17.자주 쓰이는 숫자 관련 함수 중 하나가 ROUND 이다. ROUND 숫자 함수는 제공된 값을 주어진 자리 수까지 반올림합니다. ROUND--(--source_number--,--precision--) 다음은 ROUND 함수를 이용하여 반올림하는 예제이다. select ROUND(7534.1238, 2), ROUND(99672.8591, 2) FROM dual; "ROUND(7534.1238,2)""ROUND(99672.8591,2)" 7534.12 99672.86 ROUND 함수는 2개의 파라메터를 갖는다. 이 중 하나는 필수 아이템으로 반올림 대상이 되는 값인 source_number 이다. 나머지 하나는 정밀도를 나타내는 파라메터인 precision으로, 반올림의 결과 양수의 경우 소수점 우측 몇 자..
워드프레스 관리자 로그인 오류 Redirect loop when trying to login to /wp-admin/
2019. 6. 16.워드프레스 설치형 사이트에서 관리자로 로그인한 후 다음의 현상이 나타나는 경우가 있다. 화면 상단의 Admin Bar가 노출되지 않는다 또는 mysite.com/wp-admin 경로를 통해 관리 페이지로 이동하고자 했으나 반복해서 mysite.com 페이지로 리다이렉트된다 이 경우 다음 순서대로 하나씩 진행해본다. 로컬 브라우저의 쿠키 삭제 전체 플러그인 비활성화 - /wp-content/plugins/ 디렉토리를 plugins_OLD 로 변경한다 sudo mv plugins plugins_OLD 기본 테마로 변경 /wp-content/themes/ 디렉토리로 이동하여 현재 테마 디렉토리 이름을 theme_OLD 와 같이 변경 .htaccess 파일 삭제 - .htaccess_OLD 와 같이 이 파일의 ..
AttributeError: module 'tensorflow' has no attribute 'get_default_graph'
2019. 4. 26.Tensorflow 2.0 환경에서 다음과 같은 에러가 발생하는 경우 AttributeError: module 'tensorflow' has no attribute 'get_default_graph' (cooke) founder@casey:~/mandart/glass$ python run_keras_server.py Using TensorFlow backend. * Loading Keras model and Flask starting server...please wait until server has fully started Traceback (most recent call last): File "run_keras_server.py", line 82, in load_model() File "run_ker..
ML을 활용한 스팸 SMS 적발시스템 Flask 로구 현하기 MLDevelop a NLP Model in Python & Deploy It with Flask
2019. 4. 23.Develop a NLP Model in Python & Deploy It with Flask, Step by Step Flask API, Document Classification, Spam Filter ML을 활용하여 스팸 SMS 텍스트 메시지를 적발하는 시스템을 만들어보자. ML 시스템의 워크 플로우는 다음과 같다. Train offline -> Make model available as a service -> Predict online. 분류기는 스팸과 스팸이 아닌 메시지를 가지고 오프라인으로 훈련을 하게 된다. 훈련된 모델은 서버 사용자에게 서비스 형식으로 배포된다. https://cdn-images-1.medium.com/max/1080/1*QverR-xExd4UvfLh3Iq79w.png 모델..
터미널세션 녹화 및 공유기 asciinema
2019. 4. 20.asciinema 는 터미널 세션을 녹화하고 웹상으로 공유할 수 있게 해주는 오픈소스 솔루션이다. 간단히 녹화가 가능하고, 플레이어를 멈추고 터미널 상의 코드를 복사 및 붙여넣기가 가능하다. 손쉽게 블로그 등의 포스팅에 플레이어를 넣을 수도 있다. Installation pip 를 이용해 다음과 같이 설치할 수 있다. https://pypi.org/project/asciinema/ (cooke) founder@casey:~$ pip install asciinema Collecting asciinema Downloading https://files.pythonhosted.org/packages/a7/71/771c859795e02c71c187546f34f7535487b97425bc1dad1e5f6ad2651..
리눅스 디렉토리 크기 구하기 How to Get the Size of a Directory in Linux
2019. 4. 4.ls 명령어를 이용하여 디렉토리 콘텐츠를 리스팅하는 경우, 디렉토리의 크기가 항상 4096 bytes (4 KB) 임을 확인할 수 있다. 아래를 보자. /var$ ls -al total 56 drwxr-xr-x 14 root root 4096 Oct 27 05:19 . drwxr-xr-x 25 root root 4096 Apr 4 06:37 .. drwxr-xr-x 2 root root 4096 Apr 4 07:36 backups drwxr-xr-x 13 root root 4096 Nov 9 07:00 cache drwxrwxrwt 2 root root 4096 Nov 18 06:25 crash drwxr-xr-x 47 root root 4096 Jan 19 09:10 lib drwxrwsr-x 2 ro..
ImportError: cannot import name '_validate_lengths' from 'numpy.lib.arraypad'
2019. 3. 16.다음과 같은 ImportError 가 발생하는 경우ImportError: cannot import name '_validate_lengths' from 'numpy.lib.arraypad' import numpy as np import time import sys import os import random from skimage import io import pandas as pd from matplotlib import pyplot as plt from shutil import copyfile import cv2 import tensorflow as tf --------------------------------------------------------------------------- ImportE..
아나콘다 패키지 삭제 conda remove
2019. 3. 15.아나콘다 환경에서 설치된 패키지를 제거하는 방법은 다음과 같습니다.아래 설치된 cx_oracle 패키지를 제거해보겠습니다.(pyenv) founder@merrow:~/pyenv$ conda list # packages in environment at /home/founder/anaconda3/envs/pyenv: # # Name Version Build Channel ca-certificates 2019.1.23 0 anaconda certifi 2018.11.29 py27_0 anaconda cx_oracle 7.0.0 py27h7b6447c_0 anaconda 아래와 같이 conda remove 명령으로 패키지 제거가 가능합니다. 형식은 다음과 같습니다. 간단하게 이 정도만 기억하시면 될 것 같은데요..
서프라이즈 라이브러리를 활용한 추천시스템 구축 및 검증 Building and Testing Recommender Systems With Surprise, Step-By-Step
2019. 3. 2.source https://www.pexels.com/photo/person-doing-thumbs-up-193821/ 파이썬과 서프라이즈 라이브러리, 그리고 협업 필터링 (Collaborative Filtering) 을 활용한 추천 엔진 구축하기 추천시스템에 접근하는 2가지 방법은 collaborative filtering 과 content-based recommendations 이다. 이 포스팅에서는 collaborative filtering 접근방법에 초점을 맞춰 진행한다. 간단히 말해 사용자간의 유사성에 기반하여 등급을 예측하는 방법이다.추천 시스템 알고리즘 개발을 위한 북크로싱 데이터와 Nicolas Hug에 의해 개발된 Surprise 라이브러리를 가지고 진행한다. 먼저 필요한 라이브러리를 임..
주피터랩 살펴보기 Jupyter Lab: Evolution of the Jupyter Notebook
2019. 2. 25.Jupyter Lab: Evolution of the Jupyter Notebook An overview of JupyterLab, the next generation of the Jupyter Notebook. 데이터에 따르면 깃허브에만도 300만개 이상의 Jupyter Notebook이 사용되고 있다고 한다. 비단 이런 데이터를 빌리지 않고도 Jupyter Notebook의 인기는 짐작 가능하다. Jupyter Notebook은 이미 다양한 장점을 가지고 있지만 여기에 멈추지 않았고, 더욱 진화된 JupyterLab 이 나왔다. 그리고 JupyterLab 이 결국에는 Jupyter Notebook 의 자리를 대신할 것으로 기대된다. Installation conda, pip, pipenv 등을 사용해..
Rasa Stack 과 파이썬을 활용한 슬랙 챗봇 만들기 (2) A guide to creating a chatbot with Rasa stack and Python
2019. 2. 22.A guide to creating a chatbot with Rasa stack and Python. 2편에서는 앞서 만든 봇을 슬랙에 배포하는 실습을 진행해본다. 진행에 앞서 1편을 미리 읽어보고 넘어오길 권해드린다.Rasa Stack 과 파이썬을 활용한 슬랙 챗봇 만들기 (1) A guide to creating a chatbot with Rasa stack and PythonRasa Installations1편과는 달리 여기서는 최신 버전의 Rasa Core 를 설치할 것이다. 아나콘다 등을 활용하여 가상환경을 만든 뒤 실습을 진행하길 권해드린다. 우분투 18.04 아나콘다 설치하기 How To Install the Anaconda Python Distribution on Ubuntu 18.04아..
Rasa Stack 과 파이썬을 활용한 슬랙 챗봇 만들기 (1) A guide to creating a chatbot with Rasa stack and Python
2019. 2. 22.A guide to creating a chatbot with Rasa stack and Python. 대화형 AI 시스템은 인간생태계의 필수불가결한 요소가 되었다. 이미 잘 알려져있듯이 Apple의 Siri, Amazon의 Alexa and Microsoft의 Cortana 등이 있다. r머신 러닝 기반의 AI 어시스턴트인 Rasa를 만들어보자. Objective본 포스팅에서는 사용자의 기분을 체크해서 힘을 북돋우는 적절한 액션을 취하는 ‘Zoe’ 라고 불리는 챗봇을 만들어 본다. 그리고 다음 포스팅에서는 이를 Slack에 배포해본다. 다음 스크린샷과 같이 구현해볼 것이다. https://cdn-images-1.medium.com/max/800/1*YCBEujcXGf4MFOT02my5hQ.png Req..