IT/Data 분석

[우주선 생존] 분석 9회차

송시 2023. 4. 15. 00:03
728x90

2023.04.11 - [IT/Data 분석] - [우주선 생존] 분석 8회차

 

[우주선 생존] 분석 8회차

2023.04.10 - [IT/Data 분석] - [우주선 생존] 분석 7회차 [우주선 생존] 분석 7회차 2023.04.04 - [IT/Data 분석] - [우주선 생존] 분석 6회차 [우주선 생존] 분석 6회차 2023.04.02 - [IT/Data 분석] - [우주선 생존] 분

songsiaix.tistory.com

9회차가 되어서야 무엇인가 잘못되었다는 생각에 빠진다.

 

분석하는건 좋은데 이 분석의 목적대로 내가 잘 따라가고 있는 것일까? 하는 고민에 빠진다.

 

1. 분석의 목적을 제대로 인지하고 확인했나?

2. 각 독립변수(features)를 잘 이해하고 있나?

3. 목적을 달성하기 위해 필요한 분석 방법론이 있는가?

 

현재 내 수준에서는 3번에 대해서는 더 공부가 필요해보인다.

 

물론 우주선 생존은 말해 이동했냐? 안했냐? 를 구분하는 분류 모델을 선택하면 되겠지만 그것을 풀어 쓰기에는 아직 내 지식이 많이 부족하다.

 

위에는 3번 까지만 적었으나 더 자세하게 들여다 보며 점검해야하는 부분이 있겠으나, 현재 내 수준에서는 그 이상은 보여지지 않는다.

 

어쨌든 1번 즉 분석의 목적을 제대로 인지하고 확인했는가에 대해서 다시 돌아와야 한다는 판단이 들었다.

 

우주선 생존 이라는 제목을 붙이긴했지만 우주선에 타고 있었던 우주인들의 다른 차원으로 이동된 인원에 대한 특징을 찾아보고 그 특징에 의해 예측하는 것이다.

 

그래서 종속변수의 이름이 Transported 이고 그 값이 True / False 인 이동 했나? 우주선에 남았나? 하는 것을 알아보는 것이다.

 

캐글의 우주선 생존에는 훈련용(train) 데이터와 검증(test)을 데이터가 있고 평가의 결과가 어떻게 나와야하는지에 대해서도 알 수 있다.

 

df = pd.read_csv('/kaggle/input/spaceship-titanic/train.csv')
test = pd.read_csv('/kaggle/input/spaceship-titanic/test.csv')

print(test.shape, df.shape)
print(test.columns, df.columns)

(4277, 13) (8693, 14)
Index(['PassengerId', 'HomePlanet', 'CryoSleep', 'Cabin', 'Destination', 'Age',
       'VIP', 'RoomService', 'FoodCourt', 'ShoppingMall', 'Spa', 'VRDeck',
       'Name'],
      dtype='object') Index(['PassengerId', 'HomePlanet', 'CryoSleep', 'Cabin', 'Destination', 'Age',
       'VIP', 'RoomService', 'FoodCourt', 'ShoppingMall', 'Spa', 'VRDeck',
       'Name', 'Transported'],
      dtype='object')

훈련용 데이터에서는 Transported 라는 정답 label이 있고 검증용 데이터에는 정답 레이블이 없다.

 

그 정답은 캐글의 submission csv 파일에서 확인할 수 있다.

sub = pd.read_csv('/kaggle/input/spaceship-titanic/sample_submission.csv')

sub.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4277 entries, 0 to 4276
Data columns (total 2 columns):
 #   Column       Non-Null Count  Dtype 
---  ------       --------------  ----- 
 0   PassengerId  4277 non-null   object
 1   Transported  4277 non-null   bool  
dtypes: bool(1), object(1)
memory usage: 37.7+ KB

독립변수 13개를 분석하여 정답을 분류해야한다.

 

sub.head()

PassengerId Transported
0013_01 False
0018_01 False
0019_01 False
0021_01 False
0023_01 False

13개의 독립변수 중에는 종속변수에 영향을 주지 않는 녀석들이 분명 있을 것이다.

 

데이터 분석의 효율성을 높이기 위해 다음 회차에는 독립변수의 데이터를 음미해보며, 불필요한 데이터를 제거하여 의미있는 데이터를 통해 분류 성능을 높이는데 노력해보려한다.

728x90