ABC 부트캠프

[18일차] ABC 부트캠프 인공지능_1

ejis 2024. 7. 31. 15:00

오늘은 새로운 교수님과 진도를 함께 하였습니다.

 

먼저 파이썬 3.11 버전을 사용하셨고,

"파이참"이라는 프로그램을 사용하셨습니다.

 

파이참 안에서의 라이브러리는

numpy 1.26.4 버전, matplotlib 3.9.1버전, pandas 2.2.2버전, tensorflow 2.17.0, scikit-learn, beautifulsoup4 4.12.3버전을 다운받았습니다.

 

인공지능 파트를 새롭게 나가다 보니 매우 낯설고 어려웠습니다. 

 

하지만 그래도 열심히 해보아요...ㅎ


numpy를 이용하여 배열 형태로 나타내는 방법

 
a:np.ndarray = np.array(object=[1, 2, 3])
print(a)
print(type(a))
b = np.array([1, 2, 3, 4, 5, 6, 7.0, 8, 9, 10])
print(b)
print(type(b))

결과

1 2 3

 

결과

[1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ]

 

파이썬은 컴마로 구분하고, 리스트 연산자, 파이썬 자료형으로 되어있습니다.

넘파이는 띄어쓰기로 구분하는 게 차이입니다.

 


Titanic 생존자 예측

import pandas as pd
import seaborn as sns
titanic = sns.load_dataset(name='titanic')
print(titanic)
print(titanic.shape)

titanic.to_csv(path_or_buf='titanic.csv', index=False) // csv 파일로 저장

 

필요한 데이터만 추출하기 위해 데이터 전처리 (결측갑을 대체)

# 결측치가 있는 각 열의 수를 출력
print(titanic.isnull().sum())

# 'age' 열의 데이터를 출력
print(titanic['age'])

# 'age' 열의 결측치를 해당 열의 중앙값으로 대체
titanic['age'] = titanic['age'].fillna(value=titanic['age'].median())

# 결측치를 대체한 후의 'age' 열 데이터를 출력
print(titanic['age'])

# 'embarked' 열의 각 값의 개수를 세어 출력
print(titanic['embarked'].value_counts())

# 'embarked' 열의 결측치를 'S'로 대체
titanic['embarked'] = titanic['embarked'].fillna(value='S')

# 결측치를 대체한 후의 'embarked' 열 데이터를 출력
print(titanic['embarked'])

# 'embark_town' 열의 데이터를 출력
print(titanic['embark_town'])

# 'embark_town' 열의 각 값의 개수를 세어 출력
print(titanic['embark_town'].value_counts())

# 'embark_town' 열의 결측치를 'Southampton'으로 대체
titanic['embark_town'] = titanic['embark_town'].fillna(value='Southampton')

# 결측치를 대체한 후의 'embark_town' 열 데이터를 출력
print(f"titanic['embark_town'] :\r\n{titanic['embark_town']}")

# 'deck' 열의 각 값의 개수를 세어 출력
titanic['deck'].value_counts()

# 'deck' 열의 데이터를 출력
print(titanic['deck'])

# 'deck' 열의 결측치를 'C'로 대체
titanic['deck'] = titanic['deck'].fillna(value='C')

# 결측치를 대체한 후의 'deck' 열 데이터를 출력
print(titanic['deck'])

# 모든 열의 결측치 수를 다시 출력
print(titanic.isnull().sum())

# 데이터프레임의 정보(열의 데이터 타입, 결측치 수 등)를 출력
print(titanic.info())

 

시각화

import matplotlib.pyplot as plt

# 1행 2열의 서브플롯을 생성하고, 크기를 (10, 5)로 설정
(f, ax) = plt.subplots(nrows=1, ncols=2, figsize=(10, 5))

# 남성 생존자 수를 파이 차트로 시각화
# 'sex'가 'male'인 경우의 'survived' 값의 개수를 세어 파이 차트로 그리기
titanic['survived'][titanic['sex'] == 'male'].value_counts().plot.pie(
    explode=[0, 0.1],  # 첫 번째 조각(0)은 폭발하지 않고, 두 번째 조각(1)은 약간 폭발
    autopct='%1.1f%%',  # 각 조각의 비율을 소수점 첫째 자리까지 표시
    ax=ax[0],  # 첫 번째 서브플롯에 그리기
    shadow=True  # 그림자 효과 추가
)

# 여성 생존자 수를 파이 차트로 시각화
# 'sex'가 'female'인 경우의 'survived' 값의 개수를 세어 파이 차트로 그리기
titanic['survived'][titanic['sex'] == 'female'].value_counts().plot.pie(
    explode=[0, 0.1],  # 첫 번째 조각(0)은 폭발하지 않고, 두 번째 조각(1)은 약간 폭발
    autopct='%1.1f%%>',  # 각 조각의 비율을 소수점 첫째 자리까지 표시
    ax=ax[1],  # 두 번째 서브플롯에 그리기
    shadow=True  # 그림자 효과 추가
)

# 첫 번째 서브플롯의 제목 설정
ax[0].set_title('Survived(Male)')

# 두 번째 서브플롯의 제목 설정
ax[1].set_title('Survived(FeMale)')

# 생성된 파이 차트를 화면에 표시
plt.show()

 

상관계수 구하기

# Titanic 데이터프레임(titanic2)의 상관계수를 피어슨 방법으로 계산
titanic_corr = titanic2.corr(method='pearson')

# 계산된 상관계수 행렬을 출력
print(titanic_corr)

# 상관계수 행렬의 형태(행과 열의 수)를 출력
print(titanic_corr.shape)

# 상관계수 행렬을 CSV 파일로 저장 (엑셀에서 읽을 수 있도록)
titanic_corr.to_csv('Titanic_corr.csv', index=False)

# 성인 남자의 생존률과 'survived' 열 간의 상관계수를 계산하여 출력
# f-string을 사용하여 출력 형식을 지정
print(f"성인남자의 생존률 : {titanic['survived'].corr(titanic['adult_male'])}")

# 뱃값(fare)과 생존률(survived) 간의 상관계수를 계산하여 출력
print(f"뱃값의 생존률 : {titanic['survived'].corr(titanic['fare'])}")

맨 뒷자리에 앉다 보니 교수님의 목소리가 잘 안 들렸다는..

그래도 여러 사람들에게 질문하며 극복하겠습니다...

 

썸네일