two list -> dict keys, values = [], [] keys.append('a') keys.append('b') keys.append('c') values.append(1) values.append(2) values.append(3) mydic = dict(zip(keys, values)) data science/python 2024.02.27
문자열 리스트 조작 my_list = [ 'I', 'am', 'a', 'boy' ] 스페이스를 넣어 붙이기 my_list_str = ' '.join(my_list) -> 'I am a boy' 인덱스로 뽑아내기 # list 에 있어서 범위밖의 인덱스를 지정하면 예외 발생 my_str = my_list[10] (x) # 레인지지정시 범위밖이라도 예외는 발생하지 않는다. my_str = my_list[6: ] -> 공백 my_list = [1, 2, 3, 4, 5] 숫자 리스트를 문자열로 변환 my_lst_str = ''.join(map(str, my_lst)) -> 12345 data science/python 2024.02.02
오버랩핑된 문자열 잇기 openai 의 whisper 를 이용하여 음성을 문자변환시에 한번에 변환할 수 있는 용량이 25MB 이기 때문에 이보다 큰 음성파일의 경우는 pypub 라이브러리를 이용하여 작게 분리를 해서 처리를 해야 한다. 이때 강제적으로 사이즈만큼 분리를 하면 대화중의 음성이 끊어지게 되므로 앞뒤를 약간 오버랩핑하게 하여 각각 변환을 하면 똑같은 대화 문자열이 각 음성파일의 맨 뒤와 맨 처음 오버랩핑되어 출력된다. 이 오버랩핑된 문자열을 자연스럽게 한 문장으로 만드는 방법은 아래와 같다. ( 음성파일을 분석하여 무음인 상태를 발견하여 분리하는 방법도 시도해 봤지만, 노이즈가 섞여있기 때문에 어렵다. ) string1 = 'Hello how are you' string2 = 'are you doing now?' i.. data science/python 2024.02.02
tuple 변경하기 tuple 은 읽기만 가능하고 변경할 수 없지만 아래와 같이 트릭을 쓰면 변경이 가능하다. mytuple = ("I", "am", "korean") mylist = list(mytuple) mylist[2] = "american" mytuple = tuple(mylist) print(mytuple) -> ('I', 'am', 'american') data science/python 2024.01.28
바이너리 분류 모델에 있어서 평가 항목 Confusion Matrix 샘플 결과 TP 1 FN 29 FP 0 TN 970 Accuracy (정확도) 전체 결과에 대한 True 의 비율 Accuracy = (TP + TN) / (TP + FN + FP + TN) = 971 / 1000 = 0.971 Precision (정밀도) (모델의 관점) True(=1) 이라고 예측한 것 중에 실제 True의 비율 Precision = TP / (TP + FP) = 1.0 Recall (재현율) (True 입력 데이터의 관점) True 입력데이터중에 True라고 예측한 비율 Recall = TP / (TP + FN) = 1 / 30 = 0.033 F1 Score Precision과 Recall의 밸랜스도를 나타낸다. 어느 한쪽이 극단적으로 낮으면 F1 도 .. data science/machine learning 2024.01.16
일반 데이터 학습용/테스트용 분리 지난번에는 이미지 데이터가 대상인 Data Augmentation의 ImageDataGenerator 를 이용하여 학습데이터를 분리하였다. 이번에는 단순히 pandas 로 읽어들인 숫자 문자등의 데이터를 분리해 보겠다. 1. numpy 를 이용하는 방법 import numpy as np def shuffle_and_split_data(data, test_ratio): np.random.seed(42) # np.random.permutation(length) : 랜덤으로 일련번호의 순서를 바꿈 shuffled_indices = np.random.permutation(len(data)) # 테스트 사이즈를 계산 test_set_size = int(len(data) * test_ratio) # 초반 test_.. data science/machine learning 2024.01.14
pydub.AudioSegment Install Package pip install pydub # 내부적으로 ffmpeg 라이브러리를 사용하기에 OS에 맞게 ffmpeg 설치 필요 불러오기 from pydub import AudioSegment wav_audio = AudioSegment.from_wav("input.wav") mp3_audio = AudioSegment.from_mp3("input.mp3") 정보 # 프레임레이트 print(wav_audio.frame_rate) # 채널수 (스테레오=2, 모노=1) print(wav_audio.channels) # 재생시간 print(wav_audio.duration_seconds) frame rate 변경 sound = audio.set_frame_rate(16000) 저장 wav_a.. data science/signal processing 2024.01.14
numpy 조건에 맞는 값들만 뽑아내기 b > 3 를 만족하는 인덱스를 a 에서 뽑아내기 a = np.array([1,1,1,2,2,2]) b = np.array([4,6,1,8,2,1]) 방법-1 new_a = a[ b > 3 ] 방법-2 new_a = a[ np.where(b>3)[0] ] data science/python 2024.01.07
list ( [ , ], [ , ] ... ) 최대, 최소값 구하기 리스트안에 또 다른 리스트나 tuple 이 있을 경우, 어느 한쪽 값의 최대 최소 값을 구하고자 할 때 lambda 를 사용 lists = [ [1, 'A' ], [9, 'B' ], [7, 'C' ], [2, 'D' ] ] # 앞의 숫자의 최소값을 가지는 알파벳 구하기 min_value = min( lists , key=lambda n: n[0])[1] data science/python 2024.01.07
2중 in 을 사용하여 리스트 만들기 0 - 10 까지 짝수일 경우 1, 아닐경우 0 의 리스트 생성 import numpy as np ten_list = np.arange(0, 11).tolist() evens = [0, 2, 4, 6, 8, 10] even_list = [1 if x in evens else 0 for x in ten_list] data science/python 2024.01.06