범주형 데이터 인코딩하기 머신러닝 모델은 글자를 인식하지 못합니다. 이 사실만으로도 인코딩을 반드시 해야한다는 걸 이해하실 수 있을겁니다. 컴퓨터는 사람처럼 소통하는 게 아니기 때문에 이것이 범주형 데이터라는 것을 알려주어야 합니다. 그런 의미에서 판다스에서 타입이 object로 분류되는 데이터는 인코딩을 해주어야 합니다. 인코딩 방법 데이터 인코딩하는 방법은 굉장히 많습니다. 그 중에서 주요한 방법인 레이블 인코딩, 원핫인코딩, 더미 변수, 빈도 인코딩, 순서 인코딩에 대해 간단히 정리합니다. 레이블 인코딩 (Label Encoding) 개념: 각 범주에 고유한 정수를 할당하는 방식입니다. 카테고리가 확실할 때 사용합니다. 문자를 정수로 반환하는 역할만 합니다. 원 데이터의 손실이 없습니다. 예시: f..
숫자형 데이터 스케일링하기 머신러닝이나 딥러닝으로 빅데이터 분석을 하기전에 필수로 해야하는 것이 데이터값 맞추는 작업입니다. 숫자형 데이터인 경우 숫자가 중구난방이 되면 안되기 모델 정확도가 많이 떨어지기 때문에 컬러마다 범위가 같게 숫자로 맞춰주어야 합니다. 모두 비율로서 맞춰서 모델 예측력을 높입니다. 스케일링 방법 스케일링 방법에는 Min-Max Scaling, Standard Scaling, Robust Scaling이 주요한 방법입니다. Min-Max Scaling 개념: 데이터의 범위를 최솟값을 0, 최댓값을 1로 변환하여 모든 데이터값이 0~1사이의 값으로 바꿔줍니다. 수식: $$X_{\text{scaled}} = \frac{X - X_{\text{min}}}{X_{\text{max}} - ..
딕셔너리 합치기 딕셔너리 합치는 방법입니다. 간단합니다만 딕셔너리 특성상 key 가 같은 경우에는 덮어쓰기가 되니깐 그부분을 잘 조작하면 내가 원하는대로 딕셔너리를 다룰 수 있습니다. 딕셔너리 합치는 방법 2개의 딕셔너리를 합치는 방법은 간단합니다. update()라는 함수를 쓰면 됩니다. test1 = {'A':1,'B':2,'C':3} test2 = {'A':2,'D':4,'E':5} test1.update(test2) print(test1) 3개 이상일 때도 update를 이용해서 반복하면 됩니다. 한꺼번에 하려면 다음과 같이 합니다. dict1 = {'a': 1, 'b': 2} dict2 = {'b': 3, 'c': 4} dict3 = {'d': 5} merged_dict = {**dict1, *..
StSess.exe StSess.exe를 맨날 windows 보안에서 잡고 있네요. 도대체 뭐길래 매일 저렇게 작업을 차단당하는지... 알람 맨날 뜨는게 신경쓰여서 뭔지나 확인해봐야겠습니다. 정체 작업 관리자에서 찾아봤습니다. 찾아보니 AhnLab Safe Transcation이었습니다. 왜 이렇게 충돌이 찾은지 요즘.. 모바일에서도 그러더니 PC에서도 그러네요. 은행 보안용으로 쓰는것이라 인터넷 뱅킹을 이용하는 게 아니라면 쓸 일은 없어보입니다. 어짜피 충돌되서 뱅킹을 이용하려고 해도 다시 깔아야할 판입니다. 이거 지워야겠습니다. 지금 노트북 너무 느려요 ㅜ 제거 어짜피 다시 설치될 일이 생기기 때문에 굳이 레지스트리까지 남김없이 지울 필요가 있나 싶습니다. 그냥 프로그램 추가제거 가서 지웠습니다.
데이터의 타입을 일일히 확인한다고? 파이썬은 객체니깐 type 함수를 쓰면 언제든지 확인할 수 있습니다. 그런데 데이터가 많으면 일일이 확인할 수 없어서 for문이나 while을 돌리고 있는데 예상치 못한 타입이 나온다면 대처하기가 어렵습니다. 이럴 때 물론 type()을 활용할 수 있지만 루프를 한다면isintance()를 쓰는 걸 추천드립니다. isinstance란? 파이썬은 동적 타이핑(dynamic typing) 언어로, 변수의 타입이 실행 시간(runtime)에 결정됩니다. isinstance 함수는 이러한 특성을 활용하여 객체가 특정 클래스의 인스턴스인지를 동적으로 확인하는 데 사용됩니다. isinstance 함수 개요 isinstance 함수는 객체가 특정 클래스의 인스턴스인지를 확인하는 파..
티스토리에도 매크로 댓글이? 네이버 블로그에서 유행하던 게 티스토리에도 왔나봅니다. 언제부턴가 댓글에 똑같은 사람이 계속 댓글을 다는데 신기한건 (1) 토씨 하나 안바뀌고 똑같은 댓글을 다는 것 (2) 내가 글을 발행하자마자 10분안에 댓글이 달리는 점 (3) 방문자수에 안 잡힌다는 점입니다. 매크로를 어떻게 만들까 생각해보면 RSS 잘 이용해서 하면 되겠다는 생각이 듭니다. 그래도 방문자수에도 안잡히면 기분도 안 좋고 한명도 안 들어왔는데 댓글부터 달리는건 내가 글 쓰고 내가 댓글 단 것 같은 느낌일텐데 그게 반복된다면 카카오측에서 좋게 볼까 싶습니다.(만약 저품질 걸리면 나도 만든다. 이자식...) 왜 매크로 하는지 알겠으나 괜히 저품질이나 걸리지 않을까 싶어서 차단부터 해야겠습니다. 알림오는 것도 ..
값 뽑아내기 자신이 원하는 값을 범위에서 추출하는 방법입니다. 예를 들어, 주소록에서 20세 이상 여자 또는 남자인 경우의 데이터를 가져오거나 키가 170이상인 경우의 데이터를 가져올 수 있습니다. 어쨋든 조건을 달면 거기에 맞는 데이터만 출력해줍니다. 잘 이용하면 자동화도 가능합니다. FILTER 사용하기 FILTER는 다음과 같이 씁니다. =FILTER(범위, 조건1, 조건2, ...) 범위를 정하고 조건을 정하면 그만입니다. 간단한 예제(조건에 맞는 데이터가져오기) 간단한 예제를 만들었습니다. 조건에 맞는 경우 가져오게 합니다. 위에서 언급했던 것과 비슷하게 30세이상 이면서 여자인 경우인 데이터만 가져오겠습니다. =FILTER(A1:D21,B1:B21>=30,C1:C21="여") 함수를 조건으로 ..
이건 자기계발서가 아니다 정리하는 뇌를 처음 봤을 때 무슨 자기계발서가 이렇게 두껍나 했는데 뇌과학책에 가깝다. 교양책인 것이다. 왠지 '정리하는뇌' 이러면 내 뇌를 어떻게 정리하면 되는지 방법을 알려줄것만 같다. 부제도 '디지털 시대, 정보와 선택 과부하로 뒤엉킨 머릿속과 일상을 정리하는 기술' 이렇게 되어있으니 당연히 자기계발서라고 생각이 든다. 하지만, 대부분의 내용은 뇌의 특성에 대해 설명하고 있다. 뇌의 특성을 기반으로 일상에서 이렇게 하라는 방향은 알려준다. 예시도 많고 책이나 어떤 사람의 인용을 많이 가져오지만 왠지 모르게 뇌의 특성만 기억하기도 벅차다는 느낌이 든다. 가벼운 마음으로 책을 읽겠다는 생각은 버리고 각잡고 보면 아주 괜찮은 책이다. 정리하는 뇌 / 대니얼 J. 레비틴 - 교보문..
AMDSServ.exe 현재 AMD APU로 쓰고 있는데 컴퓨터를 켰더니 엄청 느리게 부팅되더군요. 거기에 더해, 이상한 메세지가 나옵니다. 'OpenCL.dll이 없어 코드 실행을 진행할 수 없습니다. 프로그램을 다시 설치하면 이 문제가 해결될 수 있습니다.' AMDSServ이면 그래픽 카드에 문제가 생긴 것 같은데 막상 뭘해야할지 당황스럽더군요.알아보니 그래픽카드 드라이버의 손상으로 일어난 상황이고 다시 깔면 된다고 합니다. 해결 방법 해결방법은 간단합니다. 드라이버를 지우고 다시 설치하면 끝납니다. 드라이버 지우기 먼저 GPU 드라이버를 지워야 합니다. DDU라는 프로그램을 이용해 드라이버를 지워줍니다. DDU는 아래 링크를 통해 받으시면 됩니다. https://www.wagnardsoft.com/..
There is no such driver by url 오랜만에 셀레니움을 써야해서 크롬드라이버 자동으로 받게 했는데 안되네요. 크롬 드라이버 매니저가 되지 않습니다. 'There is no such driver by url' 이라고 합니다. 즉, 이런 다운로드 링크 없다는 얘기입니다.(정말...구글...이럴거야?) 왜그런가 하니 사이트를 바꿔놨습니다. 그걸 chromemaneger는 인지하지 못한 것 같습니다. 그래서 115 버전부터는 다른 사이트에서 운영하니 그 사이트를 가서 받아주어야 합니다. (짜증...) 그럼 최신버전은 더이상 최신버전이 아니니 더이상 chromemaneger는 쓸 수 없게 되는 것... 또르르륵.... 여태 chromemaneger로 해놨던거 다 바꾸게 생겼습니다. 그래서 어느..
다른 시트파일에서 값을 가져올 수 있을까? 다른 시트에서 값을 가져오는 건 '='으로 해결할 수 있습니다. 그런데 다른 시트파일이라면 가능할까? 이런 생각이 문득 들어서 알아보니 역시나 되었습니다. 확실히 시트를 공유하고 다른 파일에 접근하는 건 구글 스프레드시트가 좋은 것 같습니다. 다른 시트파일에서 값 가져오기 IMPORTRANGE 함수를 쓰면 다른 시트파일에서 값을 가져올 수 있는데요. 사용방법은 간단합니다. ==IMPORTRANGE("시트주소", "범위") 시트주소만 가져오면 언제든지 다른 파일에서 가져올 수 있습니다. 물론 권한이 있을때의 얘기입니다. 파일권한이 없으면 무용지물입니다. 실험해보기 TEST1 파일에는 숫자를 써놓고 TEST2 파일에 옮겨넣어보겠습니다. 1~10까지의 숫자인데요. 이..
데이터프레임 표를 웹에 나타내기 데이터프레임은 데이터를 표 형식으로 표시하고 저장하는 데 매우 유용한 판다스(Pandas) 라이브러리의 핵심 데이터 구조입니다. 이것을 그대로 HTML에 옮기고자 합니다. 즉, 데이터프레임을 HTML로 변환하면 데이터를 웹 페이지에 표시하거나 공유할 때 편리하게 사용할 수 있을겁니다. 이번 포스팅에서는 데이터프레임 표를 HTML에 변환하는 방법을 소개합니다. 판다스 데이터프레임 생성 먼저, 데이터프레임을 생성하고 데이터를 채워봅시다. 예시로 사용할 간단한 데이터프레임을 만들어보겠습니다. import pandas as pd data = {'이름': ['Alice', 'Bob', 'Charlie'], '나이': [25, 30, 35]} df = pd.DataFrame(data..
원하는 좌표에 점으로 표현할 수 있다면? 그래프를 그리는 건 어찌어찌 하는데 내가 원하는 곳에 점을 표시하고 글씨를 쓸 수 있으면 더 멋진 그래프를 만들 수 있을겁니다. 멋진 그래프를 그리기 위해 마커설정과 글씨 넣는 방법을 정리해봤습니다. 그래프에 점 넣기 점을 넣으려면 scatter를 이용하면 됩니다. matplotlib는 그래프 겹치기가 가능한 라이브러리라는 것을 이용하면 되는데 다음과 같이 합니다. import matplotlib.pyplot as plt # x와 y 좌표 지정 x = [1, 2, 3, 4, 5] y = [10, 15, 13, 18, 20] # 그래프를 그리기 plt.plot(x, y) # 원하는 위치에 점 넣기(3,13) plt.scatter(3, 13, color='red', ..
DtypeWarning 잘 불러오던 csv가 간혹 DtypeWarning 이라고 경고가 뜹니다. DtypeWarning: Columns (37,66) have mixed types. Specify dtype option on import or set low_memory=False. 특정 컬럼의 type이 섞여있어서 결정할 수 없다고 합니다. 그럼 다 object로 하지 않았나? 왜저러는걸까? 싶은데 컴퓨터가 인식을 그렇게한다니까 어떻게 할 수 있는 건 아닌 것 같습니다. 저 경고를 무시하고 코딩실행을 하니깐 확실히 작업속도가 현저히 느려졌습니다. 메모리 도둑이 따로없네요. 해결방법 해결방법은 두가지입니다. (1) 문제가 되는 컬럼의 타입을 정해준다 (2) csv에 쓰는 메모리 제한을 없애서 csv를 한번..
해상도마다 달라지는 프로그램 크기 Pyqt를 이용해 프로그램을 종종 만드는데요. 컴퓨터마다 해상도가 달라서 내 컴퓨터에는 괜찮게 나오는데 다른 컴퓨터에 적용시키면 창 크기가 달라지는 걸 볼 수 있습니다. 다만, 창 크기만 달라질 뿐 안에 있는 위젯의 크기는 달라지지 않습니다. 해결방법 코드로 하기 직접 코딩으로 한다면 QgridLayout을 사용하면 됩니다. QgridLayout은 그리드 내에 있는 위젯을 확장 또는 축소하여 창의 크기에 맞게 배치하는 레이아웃 매니저로 창의 크기가 변경되면 위젯도 동적으로 크기가 조정되어 창의 크기게 맞게 정렬됩니다. 다음 예제는 버튼 4개를 만들어 GridLayout을 적용한 예제입니다. import sys from PyQt5.QtWidgets import QAppli..