200328 TIL

|


Today, what I did

데이터 불러오기

  • 경로설정 - 이미지 리스트 생성(img_path, label) - 클래스별 이미지 개수 보기
# 경로 설정 
data_dir = Path("../input/chest_xray/chest_xray")
train_dir = data_dir/'train'
val_dir = data_dir/'val'
test_dir = data_dir/'test'

def load_train():
    normal_cases_dir = train_dir/'NORMAL'
    pneumonia_cases_dir = train_dir / 'PNEUMONIA'
    
    # 모든 이미지에 대한 리스트 생성
    normal_cases = normal_cases_dir.glob('*.jpeg')
    pneumonia_cases = pneumonia_cases_dir.glob('*.jpeg')

    # An empty list. We will insert the data into this list in (img_path, label) format
    train_data = []
    # Go through all the normal cases. The label for these cases will be 0
    for img in normal_cases:
        train_data.append((img,0))

    for img in pneumonia_cases:
        train_data.append((img,1))
        
    # Get a pandas dataframe from the data we have in our list 
    train_data = pd.DataFrame(train_data, columns=['image', 'label'],index=None)
    
    # Shuffle the data 
    train_data = train_data.sample(frac=1.).reset_index(drop=True)
    
    return train_data

train_data=load_train()
train_data.head()

# Get the counts for each class 
cases_count = train_data['label'].value_counts()
print(cases_count)

#plot the results
plt.figure(figsize=(5,5))
sns.barplot(x=cases_count.index, y=cases_count.values)
plt.title('Number of cases', fontsize=14)
plt.xlabel('Case type', fontsize=10)
plt.ylabel('Count', fontsize=1)
plt.xticks(range(len(cases_count.index)), ['Nomal(0)','Pneumonia(1)'])
plt.show()

</br>

matplotlib 기본

사용자 입장에서는 Artist 객체를 다룬다고 생각하면 됩니다. Artist는 primitives와 containers라는 두가지 유형으로 구분할 수 있습니다.

  • Primitives: Line2D, Rectangle, Text, AxesImage, Patch 등과 같이 캔버스에 그려지는 표준 그래픽 객체 //틀

  • Containers: Axis, Axes, Figure 등과 같이 이들 primitives가 위치하게 될 대상 //실제 객체

커맨드 방식이 아닌 객체지향 방식으로 그림을 그리는 표준적인 방법은 Figure 객체를 생성하고, 이를 이용해 하나 이상의 Axes 객체를 만들고, Axes 객체의 헬퍼함수로 primitives를 만들어 내는 것입니다.


# Method 1 : Pyplot API(커맨드 방식)를 이용하는 방식

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,1,50)
y1 = np.cos(4*np.pi*x)
y2 = np.cos(4*np.pi*x)*np.exp(-2*x)

plt.plot(x,y1,'r-*',lw=1)
plt.plot(x,y2,'b--',lw=1)  

# Method 2 :객체지향 API를 이용하는 방식

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,1,50)
y1 = np.cos(4*np.pi*x)
y2 = np.cos(4*np.pi*x)*np.exp(-2*x)

fig = plt.figure()   # 직접 Figure 객체를 생성
ax = fig.subplots()   # 직접 axes를 생성
ax.plot(x,y1,'r-*',lw=1)   # 생성된 axes에 대한 plot() 멤버 직접 호출
ax.plot(x,y2,'b--',lw=1)

# Method 3 :이 둘을 조합하여 Figure와 Axes를 plt.subpolots()라는 편의 함수를 사용한 방식

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,1,50)
y1 = np.cos(4*np.pi*x)
y2 = np.cos(4*np.pi*x)*np.exp(-2*x)

fig,ax = plt.subplots()  # plt.subplots() 편의 함수는 Figure 객체를 생성하고 Figure.subplots()를 호출하여 리턴
ax.plot(x,y1,'r-*',lw=1)
ax.plot(x,y2,'b--',lw=1)


Today, what I realized

  • 먼 미래를 걱정하기 보다, 현재에 최선을 다하는 하루를 살자


Tommorow’s work

  • 랩미팅
  • 운영체제 과제