개발자로 후회없는 삶 살기
데이터 청년 캠퍼스 PART.4일차 통계 기반 분석 본문
서론
통계 기반 데이터 분석 이론 학습 및 실습을 진행합니다.
본론
실습
- 통계적 가설 검정
->통계적 마인드로 타이타닉의 생존자와 사망자의 차이를 알아보자 = 불확실한 가설을 수학으로 검증해보자/
※ 통계
p가 0.05보다 크면 귀무가설이다, 작으면 대립가설이다 -> 그러니 검정마다 귀무가설이 뭔지를 알아야한다/
- 귀무가설
1) 정규성 검정 : 데이터셋이 정규분포를 따른다.
2) 등분산 검정 : 두 집단의 모양이 비슷하다(모분산이 일치한다)
3) 독립 t검정 : 이 속성으로는 두 집단의 차이를 확인할수없다(이 집단의 차이가 없다)
-> 따라서 등분산이랑, 독립 t는 집단을 두개로 만들어야하고 대립가설(두 집단의 차이를 볼 수 있는)이 되는 요소를 찾아야함/
4) 이원 카이 검정 : 두 변수 사이에 상관계수가 낮다 = 두 변수 사이에 관계가 없다/
1. 정규성 검정
차피로를 통해서 할 거다/
-> 사망자와 생존자의 속성에서 정규성을 만족하는 애들이 어떤게 잇는지 보기 가능/
-> 문제는 이 데이터가 정규화를 했을 때 정규성을 따라야 정규성 검정을 한다 이 데이터가 정규성을 가져야만 차피로 test를 하는게 정상이다/
=> 용어
1) 귀무가설 : 버려야하는 가설이므로 정규분포를 따르지 않는다 근데 여기서는 정규분포를 따른다가 귀무가설 -> 반대 대립가설/
2) pvalue : 0.05보다 클 경우 귀무가설을 따른다고 판단 -> 샤피로 테스트 결과(검정통계치, p)/
-> 파이썬으로 차피로테스트 해보자
생존자와 사망자의 차이를 알아보는 것이므로 데이터를 생존, 비생존으로 분할한다/
> 원하는 독립변수만 넣어서 테스트를 하면 얘가 독립변수 안에 들어있는 값을 자동으로 분석해서 p값을 알려줌
age를 넣어봄 : 0.0008로 0.05보다 작아서 귀무가설을 따르지 않아서 정규분포가 아니다 > for문으로 생존자와 사망자의 샤피로를 한번에 구해보자 -> "정규성을 만족하지 않으면 정규성을 만족하게 하기 위해 데이터를 바꿔줘야하는 케이스다"를 생각해야한다 > 그래서 나머지 값들도 0.05보다 작으니 정규성을 만족하기 위해 데이터를 바꿔줘야한다/
> 대부분이 정규화가 필요하니 scaler를 하여 정규화를 진행한다/
2. 등분산 검정(이 모든건 이 데이터의 정규성이 확인이 됐다는 가정하)
두 집단의 분산[평균으로부터 떨어진 정도]의 동일성을 검정/ p가 0.05보다 크면 등분산이다/
-> 리븐 검증으로 함
두 집단 사이에 하는 검증이므로 하나의 함수에 두 집단을 둘 다 쓰고 같은 속성을 바라보도록 코드를 짜야한다/ ★ 내가 kt에서 하던 거랑 통계 기반 분석이랑 가장 큰 차이점은 집단을 둘로 나누고 결과를 본다는 거야!!!/
-> 실행 결과
p가 0.3이니 정규분포를 따르고 귀무가설이다 > 귀무가설은 등분산이다 > age는 등분산이다 -> 결론 그냥 0.05보다 크면 두 집단의 그 속성은 등분산이다 > 등분산이면 결론 좋다 근데 이분산인 pclass는 두 집단이 다른 분산을 가지고 있다 = 확실히 pclass로 봤을때 생존자와 사망자는 모양이 달라서 구분하기 좋을 것이다/
+ age는 pair를 보니 첨도만 조금 다르다 뿐이지 분산은 대체적으로 아주 비슷하죠? 실제로 등분산이더라~ pair로 눈으로 애매모호 보이는 부분을 통계로 확인 -> ★ 결론 : mean, median처럼 수치로만 표현하던 걸 그림으로 표현 > 그림으로 애매한 걸 통계적 분석으로 확인/
+ 근데 이분산, 등분산을 알았을 때 한가지 더 확인할 부분은 항상 관측치가 충분한 지/
3. 독립 t검정
두 집단의 평균의 차이가 없는지/ -> pair를 봤을 때 pclass는 평균의 차이가 확실히 있다 > 왜? pair 좌측 상단을 봤을때 걍 누가봐도 평균의 차가 크다 > age는 누가 봐도 없다 > 독립 t로 실제 그렇게 나오나 보자(증명)/
=> 독립 t 검정은 등분산인지 아닌지에 따라 ttest지가 달라진다 따라서 등분산 검정 > t검정 순으로 해야한다 = 보고서의 같은 항목에 왜 이렇게 분석했는지의 같은 이유로 쓰면 되겠어/
-> t-test 파이썬
p가 0.05보다 작으면 분산의 차이가 있다 > age를 보면 0.05보다 커서 평균 차이가 없다 > pclass는 두 집단의 차이가 명확하게 존재한다 > 차이가 없으면 영향이 없다/
+ 정리
① 0.05보다 작으면 차이가 있다 = 영향이 있다 (pclass, Fare 등등)
② 크면 차이가 없다 = 영향 없다age, 등등/
=> 쓰는 이유 정립 : pair로 본게 내 상식으로 그림을 본건데 그게 맞나 확인 ex) 부모와 자녀의 탑승 유무는 생존에 상관없지 않을까? pair를 봤을 때 두 분포가 비슷해 보이는데? > 라고 생각을 했는데 분석 결과는 p가 작으므로 차이가 명확하다 = 영향이 있다/
+ pclass는 그림에서 차이가 있다고 생각했는데 자녀의 탑승 유무도 영향이 있네?를 보기 가능/
4. 이원카이 제곱 교차 검정
두 변수들 사이에 ★ 독립변수, 종속변수의 차이가 있는지 없는지로 확인 가능 > 빈도수에 영향을 받음(와 상관관계는 피봇에서 본 것처럼 빈도수로 보는 거구나!!!!) > 판다스의 crosstab으로 가능/
=> 실행결과
사망자면 1등급 객실이 몇 명인지, 생존은 몇 명인지 빈도수를 체크해줌 > 이원은 크로스탭을 먼저 진행한 데이터를 가지고 하는 거다 이말 > pclass결과 1에 탔으면 살수있는 사람이 더 많았다 > 반대로 3이면 사망자 수가 더 많았다가 보임(눈에 너무 잘보이네?? 이 데이터 특성이겠지??)/
-> 카이 제곱의 반환값
계수값, pvalue, 자유도 ,ex 총 네개/
1번) pclass와 survive는 p가 작으므로 대립가설인 두 변수 사이는 관계가 있다/
2번) sur과 성별는 관계가 있다 -> 먼저 crosstab 결과를 봐도 빈도수에 차이가 있어서 여성이 더 많이 살았다 > 근데 이원 결과 pvalue가 작아서 관계가 엄청나게 있다/
3번) 나이는 아까 t검정에서 상관없다고 했는데 p가 커서 상관없다/
★ 항상 정규성을 먼저 하고 검정을 해야하는데 뒤에서 정규성이나 standarzation을 배울거니 나중 엔 정규성 체크 먼저하라/
5. anova(분산 분석)
ttest가 집단이 두개인데 이건 3개 이상의 집단이다 -> 결론 : 멀티 클래스일 경우 하는 ttest이다 = ttest가
여러번 반복되는 문제를 막기 위함/
=> 데이터 소개
노트북을 고를 때 남자와 여자의 차이를 좋아하는 정도를 1~5로 잡아서 평가된 데이터이다/ 80명의 남자의 (4 종류의 색)어떤 색을 얼마나 좋아하는지 색깔마다 20개의 평가 결과, 여성도 동일/
-> 독립변수 : 색, 성별/ 매력도 : 좋아하는 정도/
-> 데이터를 받자마자 해야할 일
색은 숫자지만 정성 데이터라서 평균으로 보면 안되는 부분이긴 한데 describe에 나오니깐 걍 보면 최대가 4, 최소가 1일거고 평균은 2.5로 골고루 잘 섞어있네, but 매력도는 무조건 정량이니 잘 봐야하고 1~5의 범주인데 최소는 2부터로 1점을 평가한 사람이 없다 그러니 클래스가 5개지만 나오는 건 4가지라는 것/
=> 통계적 분석 전에 pair확인
우측 하단을 보면 치우쳐짐 없이 잘 분포하는 데이터가 3으로 있고 치우쳐진 게 2와 4로 있고 5는 잘 나타나지 않는다/ but iris와는 다르게 어떨 것 같다는 명확한 시선이 보이지 않는다(iris는 petal이 이상할 것이다 라는 모습이 보였음/
6. 일원 분산 분석
ttest이니 귀무는 각 집단이 동일하다, ★ 단, 각 그룹이 독립성, 정규성, 등분산성을 만족하는 것을 만족하는 경우 해야한다/(지금은 그렇다고 가정.....)/
※ 주의점
종속변수가 3개 이상인 경우 해야지 아니면 걍 ttest/
=> 데이터 집단 나누기(이건 모든 검정에서 다 하는 과정으로 내가 하던 것과 차이점)
1) 성별을 종속으로 봐보자
-> 그러면 남은 독립변수에 대한 일원 분산 분석 결과를 돌려서 리스트로 돌려줌 >
결과 : color와 매력도가 종속 변수 성별에 미치는 영향이 성별별로 차이가 있는지를 보여줌
(ttest와 차이점 : 3개 이상의 클래스에 적용 가능[그래서 ttest에는 생존자와 비생존자만 보기 가능하다는 거다
+ 이원은 종속을 색깔로도 하고 그렇다], 한번에 독립변수 여러개의 분석 결과를 보여줌[이렇게 나오는 이유가 계산하는 분산분석 함수에 나눈 집단을 여러게 넣을 수 있다]
-> ttest는 두 그룹에 age라는 속성을 주고 이 속성이 두 그룹을 잘 분류하나를 본다 vs 그리고 아예 해석 결과가 다르다
-> 기본 ttest vs 이원 분산 분석
기본 ttest : 주는 속성이 그룹을 잘 나누나를 보는 것
이원 분산 분석 : "종속변수"는 독립변수의 값 [빨강, 파랑, 노랑, 초록 등등]일 때 차이가 없다)
+ ex) 색깔(독립변수 중 하나)은 남자일 때 와 여자일 때(종속변수 클래스 중 하나) 차이가 없다.
> 목적은 둘 다 이 속성이 독립변수를 나누는데 구분을 확실히 하냐 이건데 해석하는 방식에 차이가 좀 있는 거다/
-> 분석 결과
1) color는 1로 0.05보다 크니 성별은 색깔이 빨일 때와 초등등일 때 차이가 없고 같을 것이다, 매력도도 동일 = 별로 학습에 도움이 안 될 것/
2) 색을 종속으로 보자
색이 네 종류로 집단을 4종류로 분할 > 성별은 차이가 없다, 속성은 차이가 있다/
3) 좋아하는 정도로 보자
역시 성별은 차이가 없다, "색깔따라 느끼는 매력도가 차이가 있다"(이런 해석이 좋다)/
-> 단점 : p를 계산하는 과정에 그룹이 많으니 다 쪼개는게 귀찮다 > 동일한 기능을 statsmodel을 써서 해보자(ols 사용)/
+ statsmodel
-> 수식, 코드가 단순해짐 att ~ gen을 for문으로 채워주면 그룹을 나누는게 훨씬 수월해짐 + ~앞이 종속이고 뒤가 독립이래 이때 독립변수가 카테고리면 C(color)라고 해야한대/
-> 결과
① 성별이 종속 : 크다크다로 차이가 없다없다/
② 색상이 종속 : 크다 작다로 역시 성별은 차이가 없고, 매력도는 있다/
③ 매력도가 종속 : 크다 작다로 역시 성별은 차이가 없고, 색상은 있다/ 결론 : p값이 one way와 아예 똑같이 나오지는 않지만 분석 결과는 동일하고 p와 f외에 더 많은 분석 산출값이 나온다/
7. 투웨이 이원 분산 분석
-> 지금까지 한 것
1. 속성 하나가 클래스가 2개인 종속변수에 차이가 있나
2. 속성 하나가 클래스가 3개 이상인 종속변수에 차이가 있나(근데 해석하는 방법에 차이가 있음)
> 이번엔 속성 여러개의 상호작용이 클래스가 3개 이상인 종속변수에 차이가 있나 = 독립변수가 두개인 경우/
'+' 연산을 하면 그냥 속성 하나 각각이 클래스가 3개 이상인 종속변수에 하는 원웨이랑 똑같은 결과가 나온다 -> 두 독립변수가 상호작용이 없는 경우 > 값이 아예 원웨이랑 같지는 않네?? 맞다 그렇다고 하신다. 근데 상호작용을 한 건 아니다/
* 두 변수의 상호작용을 봐야한다 ex) 타이타닉의 fare나 pclass 같이 상호작용이 있을 거 같은 경우에 stats의 아노바의 *를 하면된다 > 그러면 ★성별과 색깔에 따라 느끼는 매력도는 성별에 차이가 없다는 결론(종속변수에 차이가 있나) -> 피봇 테이블에서 행에 여러개 넣으면 *와 같은 변수간 상호작용이 가능/
8. 상관분석
=> 데이터 소개
성별을 str에서 int형으로 변환을 하여 pair값에 나오도록 해보니 성별에 따라서 여성이 생존이 더 많은 것을 확인 가능 -> ★ 결론 : pair를 보는 순간 차이가 확 느껴지는 부분이 있는 지를 봐야하고 따라서 시본의 hue로 보는게 중요하다 > 그리고 그걸 통계적 분석으로 증명하라/
-> 이제 시각화를 통계로 보자
피어슨 상관분석은 corr로 바로 보기 가능 > 결과를 보면 pclass가 음의 상관을 보인다는 것은 생존이 1이었으니 0>1로 가는 숫자가 커지는 경우 pclass는 숫자가 작아지더라 > 성별도 생존으로 가면 여성이 0이라서 반대 부호를 가진다 + 수치가 커서 결정력을 가지는 것 같다 > ★ heatmap을 보면 바로 왼쪽 행의 target의 가로 행의 상관을 보는 거다/
<4, 5일차로 배운 것 : 데이터를 통계와 시각화로 분석하고 데이터를 정량과 정성으로 조작하여 모델이 학습이 잘 되게 하라 + 이런 걸 내가 다 함수로 만들어두면 가져다 쓰기만 하면 되겠는 걸??>
=> 상관도 분석
생존자, 사망자로 나누고 상관분석을 할거고, 생존과 사망의 불균형 데이터라 랜덤 샘플링으로 개수를 맞춘다/
-> 상관 분석을 하는 경우(딥러닝에서만 함)
특정 상황에만 영향력을 발휘하는 속성이 있을 수 있다?? 보자 -> ex) 생존자에서는 상관계수가 거의 없는 속성이 있는데 사망자에서는 있는 속성이 있다면 특정 상황에만 영향을 주는 속성이라서 구분이 확실해짐/
+ 그니깐 내가 원래 하던 상관 분석과 같은 거다 근데 생존자 따로 사망자 따로 보자가 되는 거지/
=> 결과(근데 중요한 건 집단을 나눠서 해도 결국은 상관분석은 두 요소의 관계라는 것)
1. 지금은 다른 속성들과 요금의 관계(상관도, pvalue)
성별과 요금을 보면 생존자는 상관도도 음의 상관을 가지고 pvalue도 0.05보다 작아서 상관이 있는데 비생존은 상관이 전혀 없네?? -> 생존자에 대해서는 성별과 요금이 결정적으로 발휘하지만 비생존자에는 발휘를 안 하는 것을 보아 이 두가지 요소는 생존과 비생존을 구분하는 요소이니 꼭 데이터에 포함해야겠다는 생각하라/
2. 나이와 요금도 동일 -> 신기한게 나는 상관계수 히트맵하면 걍 타겟 변수 열만 봤는데 이렇게 보면 타겟별로 집단을 나눈 거기 때문에 다른 독립변수 두개의 관계를 따지면 되게 된다/
3. 상관이 둘 다 있는 경우는 뺴고 쓰는 것도 고려해야한다/
9. 회귀 분석
※ 로버스트 : 강인한 거 알지? 오차에 강한 선형 회귀래/
=> 분석 성능 지표
rsquare : 이 모델이 주어진 데이터를 얼마나 잘 설명하는지 -> 이걸 바탕으로 이 모델이 어느 정도의 예측도를 가지더라!!를 또 분석해야한다/
pvalue : 이 모델을 직접 믿고 써도 되는지(통계적으로)/
=> 데이터 소개
당뇨데이터
-> 당뇨에 관련있는 수치에 대해서 어떤 변수들이 선형의 관계를 가지나를 보자/
=> 1. 단순성형 회귀
stats의 ols로 선형회귀 분석을 한다/
-> 단순이라서 독립변수 하나에 대한 종속 변수 하나를 보게 하는 모델 만들기이다 > 그래서 종속에 하나 ~ 독립에 하나 > fit하면 저장되고 summary로 보기 가능 = ols의 table 기능/
-> 해석
① r : r square
② p : p value
③ cond : 값이 너무 크면 오차를 많이 발생하는 거다 -> scale로 값을 줄여 오차를 줄여야한다/
+ 밑에 p : 상관도로 작아야 종속변수와 영향이 있다 크면 아 별로 쓸데없는 거구나/
+ 시각화 : 이 모델이 얼마나 재현을 잘하는지 예측한 선과 비교해 보는 예제/
-> 원래 데이터는 파란색, ols로 만든 회귀선은 빨간선이 나온다.
실제 50개의 데이터로 재현한 빨간선 > 잘 한 것처럼 보이지만 멀리 있는 값은 잘 못 한거잖아 그러니 r값이 낮게 나온거다 > 하지만 선형 회귀는 직선 모델이라서 어쩔 수 없는 부분이고(보면 실제 데이터는 파란색인데 예측을 선형이라 어쩔 수 없이 주황색으로 하니 r값이 당연히 낮다 but 어쩔수없다)
+ 결론 : 선형회귀 분석은 모델을 만들고 그 모델을 바탕으로 특정 새로운 독립변수가 들어왔을떄 종속변수를 예측한다 = 걍 하나의 독립변수를 통해서 학습하고 얼마나 잘 예측했나를 보는 거네/
=> 2. 다중회귀
독립변수를 여러개 써서 하나의 종속변수를 예측하도록/
-> 보면 간단하게 독립변수들을 여러개 추가하는데 연속형 변수에 scale을 써서 다중공선성을 해결하는 게 가능하고 cond no도 낮아질 것이다 + 변수들이 여러개이면 항상 변수들의 상호작용을 고려하는게 필요하다 * 로 가능/ -> 근데 보면 단순회귀랑 똑같고 독립변수를 여러개 넣어주는 부분만 달라서 편하게 쓸 수 있다 + anova에서 stats 쓴거랑 똑같다/
-> 해석
r도 0.5면 좋고 = 데이터가 모델을 잘 설명한다
p도 작아서 좋다 = 통계적으로 믿고 쓸만 하다/
+ 단순 선형 회귀에서는 intercept 밑에 bmi 하나였는데 여기부터는 여러개 인게 보인다!! + R이 0.518이라고 정확도가 51.8은 아니다 정확도를 측정하는 방법은 따로 있다/
ex2) 이번엔 4개의 요소만 독립변수로 쓰고 C로 범주형인걸 알려주는게 좋고, scale을 안 한 경우 cond이 엄청 커짐/
ex3) ★ scale을 연속형에 해주면 con이 엄청 낮아짐 -> 이게 정확도는 아니라서 또 분석을 해줘야 하지만 데이터프레임에서 scaling을 했으면 데이터를 나누고 combine하는 작업이 필요한데 stats를 쓰면 코드로 쉽게 스케일이 가능하다 but 정확도는 아님 끝/
ex4) bmi, bp, s1의 동시에 종속변수랑 나타내는 상관도가 나오고 상호작용을 고려한 단순회귀 모델이 손쉽게 만들어진다 -> 밑에 warning은 cond이 너무 크니 scale을 해라는 소리고 scale하면 됨/
- 그럼 모델은 만들었어 정확도는?? 이게 필요한 건데?? r로는 아무의미가 없다는데??
∴ 따라서 따로 정확도 검증이 필요/
ex1) 단순회귀
바로 결과확인 하면 r은 뭐 어쩔수 없다., p값 나이스, 나머지 p값도 나이스, scale했으니 con도 잘 나왔네 > 근데 단순선형회귀는 오차에 제곱으로 오차를 구하자나 그러니 오차가 큰 애들을 제거해보자 > 그러면 잔차를 봐야겠네 > 잔차를 보는 법 걍 타겟 - 예측값 > 시각화로 보면 선이 잔차이다 빨간색 선이 초반에는 오차가 크다가 나중에 점점 맞춰지는 걸 볼 수 있다 > bmi 417을 가지는 행이 제일 오차를 많이 발생하는 구나
> 이 10개를 지워보자(결과를 보니 개선이 확실히 됐네~~ 오케이 이런 생각도 가능하구나) > 정확도는 mse, mae 평가 지표로 보는 거네 -> 나 또 아니 왜 데이터 프레임으로 evaluate안하지??라고 생각했는데 역시 난 교육만 받았다 보면 mse가 사이킷런에서 가져온 애로 내가 아는 거랑 같은거다 또 반드시/
=> 3. 로버스틱 회귀
선형회귀는 오차에 민감하게 반응한다 1~3이 들어오다가 갑자기 관측치가 1000이 들어오면 값이 이상해져서 그때 선형회귀 모델을 이상치에 강하게 바꾼것/
10. 다변량 분석
딥러닝에 굉장히 도움이 된다 -> 빅데이터는 속성이 많아서 속성을 다 쓰기에는 문제가 되고 무의미한 속성도 너무 많은데 그러니 설명력이 높은 애들만 최소화해서 모델 학습을 시켜야한다 > pca와 lda를 통해서 데이터를 가공을 하면 차원 축소가 된다 >
> 설명력이 최대한 높은 애들로 차원이 축소가 되어서 4개였는데 2개가 되어도 그 2개로 오리지널 데이터를 95% 정도 설명한다 그렇다면 2개를 쓰는게 훨씬 좋다 속도, 용량/
=> PCA
분산을 최대한 잘 표현할 수 있는 선을 찾고 그 선을 기준으로 projection시켜서 하나의 값으로 바꿔줌 > 관계만 대충알면 빠르게 축을 줄인다 > 시간은 빠르지만 lda보다는 잘 못나눔/
=> LDA
서로 다른 그룹의 분산이 최대화가 되는 임의의 직선을 계속 찾아가면서 이렇게 그리면 몇 %비율로 잘 나눠지네? 저렇게 그리면 저러네? 대각선으로 그리면 45% 정도로 분산을 나눠준다 이런식으로 기준이 되는 클래스를 확실하게 나누는 선을 머신러닝처럼 계속 찾아본다 -> 최적으로 잘 나누는게 가능하지만 시간이 오래걸림/
-> 결론
1. 둘 다 하나의 직선을 찾고 projection 하나? 그니깐 직선을 찾는 방법의 차이지 영사는 같은 거 같다./
2. 따라서 드라1을 보면 x, y 두개의 요소를 가진 공간에 있던 것을 하나의 요소를 가지도록 축소하는 개념이다/
3. 시간이 많으면 LDA를 써서 정확하게 하고 데이터의 오리지널한 값을 유지하려면 pca가 적합 > 내 생각 : lda는 최대로 적합하게 차원을 축소시키니만큼 오리지널 데이터를 많이 날리나봐 > 상황마다 다르지만 lda가 더 성능이 좋음/
-> 코드
둘 다 정규화를 해줘야한다 > x축은 100인데 y축은 0.01단위면 안된다 >
질문 : 검정은 정규성을 만족해야한다고 했는데 정규성을 만족해야하는 걸 어캐 확인함?
2. 다변량 분석은 그럼 전체 데이터를 normalization하고 함수에 넣어??/
① PCA
pca 모델에 주성분을 몇개로 할지 파라미터로 넣어주고 > fit_trans을 하면 주성분을 찾아준다 > fit_transform은 넘파이로 나와서 pd로 만들어줌 > 진짜 줄었는데 좋게 줄었나?? 그러면 지금이 준게 오리지널 데이터를 얼마나 설명할수있나를 보면 된다 >
> pca.explained_variance_ratio_ : 차원을 두개만 가지고서 기존 데이터의 분산을 얼마만큼 보여줄 수 있나를 수치화하는 부분 > 처음에 pc1을 가지고서 기존의 분산을 73퍼, 나머지 표현을 못하던 분산을 두번째 차원으로 23퍼 설명 가능해져서 네개의 차원을 두개의 차원으로 줄여서 95퍼로 설명가능하다/
=> 시각화
73퍼가 경계선에 없던 데이터의 설명이고 22가 나머지 경계선에 있는 데이터이다/
=> 결론
딥러닝에서 쓰면 차원도 축소가 되어서 좋고 근데 예측도 잘해서 더 좋다/
② LDA
똑같은데 모델이 LDA이고 컴퍼 파라미터로 차원의 수를 지정 > 다른 점 pca는 그냥 데이터 자체를 축소하는 거고 얘는 클래스별로 최대한 그룹이 멀어지게 만들어야 하니 fit에 정답지도 넣어줘야한다 fit(iris_features, iris_targets) 이렇게 그리고 transform하면 lda로 차원축소가 된다 > 생성되는 값은 속성을 그냥 열을 뺀 개념은 아님 그래서 알 수 없는 값임 > 그래서 누적 설명 분산량을 봄 > 말도 안되게 차원을 하나로만 줄여도 pca보다 더 잘 설명한다/
-> 시각화 결과 = 잘 나눠준다
'[대외활동] > [데이터 청년 캠퍼스]' 카테고리의 다른 글
데이터 청년 캠퍼스 PART.9, 13일차 텍스트 분석 (0) | 2022.11.18 |
---|---|
데이터 청년 캠퍼스 PART.8, 17일차 시공간 분석 (0) | 2022.11.18 |
데이터 청년 캠퍼스 PART.6, 7일차 머신러닝 기반 분석 실습 (0) | 2022.11.18 |
데이터 청년 캠퍼스 PART.5일차 머신러닝 기반 분석 (0) | 2022.11.18 |
데이터 청년 캠퍼스 PART.교육 1, 2일차 start! (0) | 2022.11.09 |