분석 Python/구현 및 자료(105)
-
dict을 txt 저장했을 때 다시 dict으로 만들기
제목이 이상해서 누가 이 글을 볼지는 모르겠지만 공유! 보통 먼가 잘 모아놓은 것을 확인하고 싶으면 .txt나 .json 이 좋은 것 같다. 하지만 나같은 경우에는 반복적으로 쓰는 작업이 진행돼서 아래와 같이 저장을 해야 했다. dict을 string으로 바꿔서 .txt에 계속 저장했다. 그럴 때 아래와 같은 방법으로 하면 돼서 공유한다. with open("./tune_result.txt","r") as f : lines = f.readlines() lines = [line.strip().replace("'","\"") for line in lines] 여기까지 하면 아직은 string이다. 그다음에 .json으로 변환해주면 된다. import json dict_collection = [json.loa..
2020.07.09 -
pip list를 이용해서 requirement.txt 만들기
command 에 pip list로 package 정보를 받아온다. pip list > ./package_info.txt 이 코드가 백퍼센트일리는 없지만 웬만하면 되지 않을까...싶다. > 몇개 빼줘야하는 것이 있는 것 같기는 하다. 추후... with open("./package_info.txt","r") as f : lines = f.readlines() import re clean = [ re.sub(" +", "==",i.strip())+"\n" for i in lines if re.search("--|Package", i) is None] with open("./requirement.txt","w") as f : f.writelines(clean)
2020.07.08 -
python dict(사전) 초기화하기
파이썬 dictionay를 기존에 있던 리스트로 다시 초기화를 하고자할 때, 유용한 방법이 있어서 공유한다. dict_ = {"a": [], "b" :[], "c" : []} for i in np.random.randint(0,3,size=10) : if i == 0 : dict_["a"].append(np.random.rand(1)) elif i == 1 : dict_["b"].append(np.random.rand(1)) else : dict_["c"].append(np.random.rand(1)) dict_ ## 초기화하기 dict_.update({}.fromkeys(dict_, [])) 이런 방식으로 안에 있는 값을 다시 비어있는 리스트로 초기화 할 수 있다!
2020.06.27 -
파이썬 상위,하위,특정 디렉토리에 있는 패키지 임포트하기(import)
광고 한 번씩 눌러주세요! 블로그 운영에 큰 힘이 됩니다 :) 하위 디렉터리에서 import 하기 특정 폴더 안에 파일을 넣어놓았다고 하자. 이때 폴더 이름에 얽매이지 않고 안에 있는 패키지를 쓰고 싶다고 해보자. 예를 들어 폴더 이름이 test_folder 이든 test_folder2이든 안에 있는 check.py , check2.py를 쓰고 싶다고 하자. 이럴 때는 일단 __init__. py를 추가하면 된다. 그냥 저 파일만 생성을 해주면 된다. 이제 상위 디렉토리에 있는 주피터 노트북으로 하위 디렉터리 test_folder2에 있는 check.py를 사용해보자 test_folder2에 있는 check에서 method를 import 할 때 check2.py에 있는 것도 같이 임포트 시킨 것을 확인하..
2020.04.25 -
[Survey] Seq2Seq 자료 모으기
Tensorflow에서 seq2seq를 하고 싶은데, 생각보다 자료가 많지 않은 것 같아서, 검색하면서 찾은 것들 하다 보니 오류 투성이라 Pytorch쪽으로 넘어가고 싶다는 생각이 100번 정도 든 듯 (아니면 Tensorflow 2?...) multi step single step에서 multi step까지 예측 keras multi step keras multi step (kaggle) 4 Strategies for multi step time series forcasting Seq2Seq lstm 먼가 쉽게 설명한 것 처럼 보이는 코드 seq2seq 설명 seq2seq 설명 자료 seq2seq attention 한국어 설명 attention-seq2seq 그림 설명 keras_seq2seq_sin..
2020.04.14 -
[Python] 규칙이 있는 영어 한글 패턴 분리해보기
영단어를 복사해서 표로 만들고 싶었는데, 아래 그림과 같은 형태로 복사되었다. 그래서 바로 엑셀에 붙여 넣기를 하니 오른쪽 그림처럼 되었다. ㅠㅠ 그래서 내가 할 줄 아는 것은 파이썬하고 R뿐인데, 그중 요즘은 파이썬을 많이 사용하니 파이썬으로 분리해보기로 했다. 다행히 저기 글에는 패턴이 있었다. 바로 [영어~~] [한글, 영어 기타] 같은 형태로 되어 있었다. 그래서 저 [영어] [한글,영어] 을 하는 저 중간에 인덱스값만 안다면 분리할 수 있다는 것을 알았다. 그래서 코드는 다음과 같다. 일단 읽어들이고 중간에 \n 을 제거해보자. import re f = open("./영어_한글_혼합.txt","r") lines = f.readlines() 공백제거 = [line for line in lines ..
2020.04.12 -
[Python] dict 에서 RuntimeError: dictionary changed size during iteration 해결하는 방법
현재 하고자 하는 것은 다음과 같다. 사용하지 않는 키는 지워버리고 싶다. 사용하지 않는 것을 확인하는 방법은 키에 해당하는 값이 None이면 제거하려고 했다. 하지만 Loop 도중에 key를 제거하려다 보니 에러가 발생했다. 그래서 나중에도 이러한 상황을 다시 겪을 수 있으니 정리를 해놓는다. 해결 방법은 다음과 같다. ## 1 값에서 제거하고자 하는 경우 for key , type_ck in list(current_dict.items()) : ## list , items를 꼭 써야함. if type(type_ck) != dict : del current_dict[key] ## 지우고자 하는 키를 알경우 remove_key = ['Category', 'NewVar'] for key in list(cur..
2020.04.11 -
[Python] self 에 대해서 알아보기 (__init__ , __new__)
광고 한 번씩 눌러주세요! 블로그 운영에 큰 힘이 됩니다 :) class Person: def __init__(self, name, age): self.name = name self.age = age def greet(self, other): print(f'{self.name} says hello to {other}.') Person instance object가 어떻게 생성되는지에 대한 예시가 있다. person = Person('John Smith', 25) print(person.__dict__) `__dict__` 속성을 호출하면, 객체 `person`에는 `name` 과 `age`가 있다. What’s self in the __init__() method? 이 글 참고 person.greet('..
2020.04.09 -
파이썬에서 정규성 검정하기
## shapiro , normaltest shapiro가 노말 분포 검정할 때 가장 엄격하게 한다고 함. from scipy.stats import shapiro , normaltest , anderson , kstest normal = [] notnormal = [] for var in num_var : stat, p = shapiro(train[var].dropna().values) stat, p = normaltest(train[var].dropna().values) alpha = 0.05 if p > alpha : normal.append(var) else : notnormal.append(var) ## kstest 분포 2개를 비교하는 것이므로, 어떤 분포에서도 사용 가능하므로, 노말에서도 사..
2020.03.22 -
nvidia-smi 보다 더 자세한 정보를 알려주는 nvidia-htop + python script 확장자 없이 사용하기
https://github.com/peci1/nvidia-htop peci1/nvidia-htop A tool for enriching the output of nvidia-smi. Contribute to peci1/nvidia-htop development by creating an account on GitHub. github.com 블로깅할 소스를 제공해준 JMS형에게 감사를 표합니다. 기존에 nvidia-smi가 왼쪽의 그림인데, 아쉽게도 cpu할당량과 memory 할당량 또는 유저 정보를 알 수가 없다. 이러한 점을 개선한 것이 nvidia-htop이다. 중간 코드에 ps가 안먹는 것 같다고 하여 그걸 top을 이용하는 방식으로 수정을 했는데, 그럴 필요가 없어진 거라고 들었다. 아쉬우니 일단..
2020.03.05 -
[ Python ] 현재 Jupyter notebook의 Python Path는?
현재 주피터 노트북의 환경 변수가 먼지 알고 싶을 때 anaconda를 사용할 경우 환경 변수가 여러 개라서 알기가 어렵다. 사소한 것이지만, 찾는데 시간이 걸렸으므로 블로그에 올려놓겠다. 추가적으로 해당 환경 변수에서 파이썬 script를 병렬로 돌리는 코드를 추가하였다. import os import sys files =['uci_creditcard-train-0.2-0.0.csv', 'uci_creditcard-train-0.4-0.0.csv', 'uci_creditcard-train-0.5-0.0.csv', 'uci_creditcard-train-0.1-0.0.csv', 'uci_creditcard-train-0.3-0.0.csv'] scripts = [] for idx , i in enumera..
2020.02.08 -
[ Python ] class에 동적으로 객체 추가하는 방법
python에서 class 내부에 특정 객체 값을 넣고 싶을 때가 있다. class test : def __init__(self,) : pass 넣으려면 저런 식으로. 을 찍고 넣어야 한다. 하지만 저렇게 하면 먼가 새로운 것을 추가해야 할 때마다 다 저런 식으로 해야 한다는 것이다. 그렇지만 동적으로 할당하는 방법에 대해서 필자는 알고 싶었고, 다음과 같은 방법을 사용하면 된다. 2가지 방법을 찾았다. class test : def __init__(self,) : pass def update(self, dict) : self.__dict__.update(dict) 아니면 setattr을 사용하여서 문자형으로 넣어줄 수도 있다. 더 다양한 방법이 많겠지만, 일단 찾은 것은 여기까지이다 ㅎㅎ
2020.02.08