Data miner/Development log
-
[python] [pandas] 특정 칼럼 기준으로 값이 개수 구해서 새로운 칼럼에 추가하기 ( = 엑셀의 countif 함수)Data miner/Development log 2021. 1. 20. 16:31
# 적용 전 Color Value Red 100 Red 150 Blue 50 NaN 30 # 적용 후 Color Value Counts Red 100 2 Red 150 2 Blue 50 1 NaN 30 0 Color열 기준으로 같은 값을 가지는 개수를 Counts 열로 추가하고자 한다면, 다음의 코드를 사용한다. df['Counts'] = df.groupby(['Color'])['Value'].transform('count') 다만, 컬럼의 값이 Null(Nan) 비어 있는 경우, 비어 있는 값의 개수들을 따로 카운팅하지 않는다. 이에, NaN 인 컬럼의 값들은 Counts 열에서 0의 값을 가진다.
-
[tf.Keras] Keras.models의 Model과 keras.layers의 LambdaData miner/Development log 2021. 1. 15. 16:57
케라스의 Model 클래스를 사용하고자 할 때, Keras의 Layer의 형식을 따라야 한다. 1) 다른 텐서플로우의 클래스/함수를 이용하여 이 결과값을 활용하는 경우, 2) Keras Model에 일괄적으로 input데이터를 넣는 게 아닌, 데이터를 직접 로드하여 Custom layer을 지정하는 경우 Keras Layer 형식으로 통일시켜주는 Keras.layers의 Lambda 함수를 사용한다. lambda_layer1 = Lambda(lambda x: (외부 데이터를 받아서 변형하거나, 다른 tensorflow의 output을 단순히 넣어주면 된다.)(previous_layer) #사용예시 x = Lambda(lambda x: X[:,t,:])(X) y = Lambda(lambda x: tf.im..
-
Data AugmentationData miner/Development log 2021. 1. 7. 17:30
이미지 분류 작업을 한다고 가정해보자. 모델을 충분하지 않은 데이터로 학습시킬 경우, 학습데이터에 존재하지 않은 분류 클래스별 특징으로 인해, 모델의 정확도가 떨어질 수 있다. 이 경우, 이미지를 단순히 변형시키는 방식으로 Augmentation으로 하여, 모델의 정확도를 향상시킬 수 있다. 아래의 사진을 보자. 왼쪽 고양이의 원본 사진은 고양이의 귀가 위를 향한 사진이었다. 누워 있는 고양이를 식별하기 위해서, 우리는 왼쪽 사진을 오른쪽으로 45도 정도 회전시켜 학습시킬 수 있다. 우리가 기대하는 효과는, 누워있는 고양이의 귀의 특징을 변형된 왼쪽 사진을 활용해 학습시키는 것이다. Data augmentation는 Keras의 preprocessing의 ImageDataGenerator의 클래스를 활용..
-
[python] [pandas] encoding='cp949'로 저장하는데 에러 발생 문제Data miner/Development log 2020. 10. 15. 17:02
한국어가 포함된 dataframe을 cp949로 인코딩하는 과정에서 '\u119e' 때문에 저장에 실패할 경우, UnicodeEncodeError: 'cp949' codec can't encode character '\u119e' in position 189: illegal multibyte sequence dataframe 전체에서(하단의 코드에서는 raw_data) 존재하는 '\u119e'의 값을 지운다(''로 교체) raw_data = raw_data.replace(to_replace ="\u119e", value ="") raw_data.to_csv("test.csv", encoding="cp949")
-
[python] [pandas] index 활용하기Data miner/Development log 2020. 10. 15. 16:42
- Dataframe의 index는 데이터의 로우와 칼럼에 대한 이름 등을 저장하는 객체이다. 보통 특별히 index값을 정하지 않으면, 0부터의 순차적인 정수값을 가진다. 정수값뿐만이 아니라, 문자열의 값도 가질 수 있다. dataframe.index # Index([0,1,2, ... , '날짜', '2020-10-15') Index 가장 일반적인 index 객체, 파이썬의 numpy 배열 형식 MultiIndex 단일 축에 여러 단계의 색인을 표현하는 계층적 색인 객체. 튜플의 배열과 유사 DatetimeIndex 나노초 타임스태프를 저장 PeriodIndex 기간 데이터에 대한 Index - 한번 설정한 색인은 변경할 수 없다. dataframe.index[0] = 'new index value'..
-
[python] [pandas] 컬럼의 값들을 조건에 따라 다른 값으로 변경하기Data miner/Development log 2020. 9. 4. 23:58
실무에서 설문지 데이터를 받아서 문항의 응답값(1,2,3)을 일정한 백분율 값(0.5,0.7) 혹은 응답값에 대응하는 답변값으로 변경하는 코드가 필요했다. 이는 컬럼의 값들을 각각 대응대는 값으로 딕셔너리로 자료를 저장한 다음, 데이터에 replace 함수를 사용하여 변경해주면 되었다. key('변경 전 값') : value('변경 후 값')으로 딕셔너리 형태로 저장 change_value_dict = {1.0: 0.95, 2.0: 0.85, 3.0:0.75, 4.0:0.65, 5.0:0.55, 6.0:0.45, 7.0:0.35, 8:0.25, 9:0.15, 10: 0.05} df = df.replace({'변경하고자 하는 컬럼명': change_value_dict}) df = pd.DataFrame({..
-
[Google colab] 개인이 생성한 모듈을 colab에서 import해서 사용하고자 하는 경우 / (+ 데이터 업로드 하기)Data miner/Development log 2020. 7. 31. 10:58
컴퓨터 자원 문제나, 파이토치나 텐서플로우의 버전 맞추는 번거로움 때문에, colab을 통해서 코드를 돌려보는 경우가 많다. 개인이 만든 모듈을 Colab에서 import해서 사용하고자 하는 경우는 다음의 코드를 사용하면 된다. # 아래의 코드를 돌리면, 파일 선택이라는 버튼이 생성되며 로컬 컴퓨터에서 사전에 만든 모듈을 업로드 하면 된다. from google.colab import files src = list(files.upload().values())[0] # 나의 경우, NGCF 모듈을 업로드 했으며, #import NGCF 했을 때 모듈이 찾아지지 않는다는 에러가 뜨지 않으면 성공한 것이다. 한편으로, 위의 코드는 Colab에서 사용할 데이터를 업로드 하는데도 사용할 수 있다. 하지만, 이 방..