본문 바로가기
ABC 부트캠프

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

by ejis 2024. 7. 31.

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

 

먼저 파이썬 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'])}")

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

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

 

썸네일