IT/Data 분석

[차원 이동] 분석 12회차[독립변수 파악3]

송시 2023. 5. 13. 17:46
728x90

2023.04.27 - [IT/Data 분석] - [차원 이동] 분석 11회차[독립변수 파악2]

 

[차원 이동] 분석 11회차[독립변수 파악2]

2023.04.27 - [IT/Data 분석] - [차원 이동] 분석 10 회차[독립변수 파악] [차원 이동] 분석 10 회차[독립변수 파악] 2023.04.15 - [IT/Data 분석] - [우주선 생존] 분석 9회차 [우주선 생존] 분석 9회차 2023.04.11 - [IT

songsiaix.tistory.com

앞선 회차에서 Cabin 을 활용해 볼 수 있을 것이라는 생각으로 진행해보았다.

 

cabins=['Cabin1','Cabin2','Cabin3']
for i in cabins:
    print(f'{i} : {train_df[i].nunique()} \n{i} : {train_df[i].unique()}')

Cabin1 : 8 
Cabin1 : ['B' 'F' 'A' 'G' 'E' 'D' 'C' 'T']
Cabin2 : 1817 
Cabin2 : ['0' '1' '2' ... '1892' '1893' '1894']
Cabin3 : 2 
Cabin3 : ['P' 'S']

Cabin1, Cabin3 은 카테고리 범주형 변수로써 사용이 가능해보인다.

 

물론 Cabin2 도 연관성이 있을 수 있겠지만 현재 내 데이터 분석 능력에서는 크게 분석이 안된다.

 

그래도 Cabin2에 대해서 상관계수를 한번 파악해볼까?

 

train_df['Cabin2']=train_df['Cabin2'].astype('int64')
train_df[['Cabin2','Transported']].corr()

 

Cabin2TransportedCabin2Transported

  Cabin2 Transported
Cabin2 1.000000 -0.047249
Transported -0.047249 1.000000

상관계수는 1~0~-1 사이에서 1 또는 -1 에 가까울 수록 강한 상관관계를 갖고 있다고 말한다.

 

0.01 이하는 거의 상관 관계가 없다고 생각해 볼 수 있다.

 

산점도 분석에서도 그리 맞지 않을 것 이다.

plt.scatter(train_df.Cabin2,train_df.Transported)

Transported 가 0,1 에 대해서만 보여주기 때문에 극단적인 산점도 그래프가 나올테니깐 말이다.

[이럴땐 어떤 그래프 분석이 맞을까? 나중에 공부해보자.] 

 

Cabin1 의 경우 카테고리 인데 순서가 있는 카테고리 인지 파악이 필요해보인다.

 

순서에 의한 카테고리라면 숫자의 높낮이 등으로 처리해야할 필요가 있을 것이고,

 

순서가 상관없다면 원 핫 인코딩으로 처리해서 보는게 보다 맞다.

 

Cabin3 의 경우도 마찬가지 일 것 같다.

 

어쨌든

 

Cabin2 는 현재로서는 큰 상관관계가 없다고 판단하고 제외 할 생각이다.

 

train_df1 = train_df[['PassengerId','RoomService','FoodCourt','Transported','ShoppingMall','Spa','Name']]
train_df1.corr()

  RoomService FoodCourt Transported ShoppingMall Spa
RoomService 1.000000 -0.016172 -0.241271 0.051853 0.010330
FoodCourt -0.016172 1.000000 0.046016 -0.014892 0.215444
Transported -0.241271 0.046016 1.000000 0.010163 -0.217188
ShoppingMall 0.051853 -0.014892 0.010163 1.000000 0.013021
Spa 0.010330 0.215444 -0.217188 0.013021 1.000000

숫자가 아닌 Name 과 PassengerId 를 제외하고 나머지의 상관계수는 음의 상관관계이긴 하지만 RoomService 와 Spa 가 -0.24, -0.27 로 아주 조금의 상관 관계가 있다고 한다.

 

Cabin1,3,RoomService, FoodCourt, Transported, ShoppingMall,Spa 를 사용하도록 하고 6회차에서 발견한 CryoSleep 도 포함해본다.

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

 

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

2023.04.02 - [IT/Data 분석] - [우주선 생존] 분석 5회차 [우주선 생존] 분석 5회차 2023.03.28 - [IT/Data 분석] - [우주선 생존] 분석 4회차 [우주선 생존] 분석 4회차 2023.03.26 - [IT/Data 분석] - [우주선 생존] 분

songsiaix.tistory.com

Homeplanet 과 destination 의 상관계수 또는 머신러닝에 학습하기 위해서는 앞서서 했던 것 처럼

숫자로 변경을 해야 하며 현재로서는 원 핫 인코딩이 적합할 것으로 예상된다.

 

물론 label encoding 이 있긴 한데 앞서 잠깐 이야기 한 것 처럼 순서가 있는 카테고리(학점: A, B, C,D )가 아닌 상태에서 label encoding 을 하게 되면 숫자 간의 관계로 인해 학습에 영향을 줄 수 있다.

 

두 독립변수는 이러한 이유로 one hot encoding 이 적합해보인다.

 

train_df2 = pd.get_dummies(train_df[['HomePlanet','Destination']])
train_df2['Transported'] = train_df['Transported']
sns.heatmap(train_df2.corr(),annot=True)

-0.17, 0.18, 0.11 이라서 미미 하지만 아주 조금의 상관관계가 있는 것으로 보여진다.

 

가장 확실한 것은 6회차에서 알게 되었지만 냉동수면 상태와 차원 이동간의 상관 관계가 매우 높다는 점이다.

 

이런 고민에 빠진다.

 

상관계수가 높은 한개의 독립변수로만 훈련을 시키는 것과

 

아에 없는 게 아니라면 독립변수를 여러개를 포함하여 훈련시키는 것

 

어떠한 차이가 있을까?

 

문득 떠오르는 것은 머신러닝 모델에 따라 다르지 않을까? 또는 

 

각 도메인에 따라 다르지 않을까? 하는 생각이다.

 

추가로 상관계수가 어느정도 있다고 해서 무조건 맹신해서는 안된다고 하더라, 산점도나 분포도를 통해서 여러 방면으로 고민을 해야 한다고 한다.

 

그래 꽤 오랜 시간 독립변수(feature)를 알아보는데 쏟았다.

 

그리고 매번 어려움을 느낀다.

 

지속적으로 잊고, 지속적으로 손에 익지 않고, 사실 이해하는 것 자체가 어렵다.

 

그래도 조금씩 나아가는 내 모습을 보며 1년 후의 나는 머신러닝에 어떠한 위치에 있을지 기대가 된다.

 

다음에는 베이스라인 모델을 적용해보며 또 다른 어리둥절을 펼쳐보려 한다.

728x90