기타/통계, 머신러닝

250627_기초 통계학(다양한 상관계수, 가설검정 시 주의점), 파이썬(map, split, strip 내장함수)

baektree 2025. 6. 28. 10:36

요약/나만의 인사이트

  • map은 반복가능한(차례차례 순회가능한) 자료형을 하나씩 꺼내 함수를 적용시킬 수 있는 내장함수이다.
  • 함수를 적용시키면 객체에 반환한다. 다만 미리 반환해 두는 게 아니라 호출 시 반환하는 형태이다.
  • .strip()은 문자열 앞뒤 공백을 삭제해주는 내장함수이다. “ ab “ → “ab”
  • .split()은 문자열을 공백으로 나눠 리스트에 반환해주는 내장함수이다. “a, b” → [’a’, ‘b’]
  • 다양한 상관계수가 있고 선형, 비선형 관계를 나타낼 때 사용한다.
  • 가설검정 시 다양한 주의점들이 있는데 재현 가능성의 보장, 선택적 보고 지양, 원하는 결과가 나올 때까지 자료수집하는 것을 지양 등이 있다.

새롭게 알게 된 것

  • 상관계수
    • 피어슨 상관계수
      • x와 y의 선형 관계를 보여줌.
      • -1에서 1사의 값을 가지며, -1, 1은 완전한 선형 관계를 의미.
      • 0은 선형 관계가 없음을 의미
      • 히트맵을 시각화를 활용해볼 수 있음.
    • 비모수 상관계수
      • 데이터가 정규분포를 따르지 않을 때 사용하는 상관계수
      • 변수들이 순서형 데이터일 때 사용하는 상관계수
      • 대표적으로 스피어만 상관계수와 켄달의 타우 상관계수가 있음.
    • 상호정보 상관계수
      • 두 변수가 범주형 변수일 때
      • 비선형적이고 복잡한 관계를 탐지하고 싶을 때 사용
  • 가설검정의 다양한 주의점
    1. 재현 가능성
      우연히 결과가 나오는 것이 아닌, 항상 일관된 결과가 나오는가?
    2. p-해킹을 조심한다.
      p-해킹이란 데이터 분석을 반복해서 p-값을 인위적으로 낮추는 행위를 말한다.
      p-해킹은 데이터 분석 결과의 신뢰성을 저하시킨다.
    3. 선택적 보고를 하지 않아야 한다.
      유의미한 결과만 공개하거나 결과를 보면서 가설을 새로 설정했는데 처음부터 설정한 가설이라고 얘기하지 말아야 한다.
    4. 원하는 결과가 나올 때까지 자료를 수집하는 것을 조심해야 한다.
    5. 탐색과 검증을 분리하면 좋다.
      탐색과정에서 발생한 데이터 패턴이 검증 데이터에서도 유효한지 확인 가능하다.

특히 어려웠던 것

  • 파이썬 문제 map, strip, split
    • 문제
      • 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
    • 틀린이유
      • 각종 주요 함수에 대해 제대로 숙지하지 못했다.
      • 따라서 아래 정리한 주요 함수에 대한 예제를 풀어보았다.
    • 주요 함수
      • input()
        • 사용자로부터 입력 받기
        • 문자열로 저장됨
        text = input()
        text # 위에서 안녕이라고 입력할 시 안녕이 출력
        
      • .strip()
        • 문자열 양 끝의 공백이나 지정된 문제 제거
        text = "     Hello, world!    "
        stripped_text = text.strip() #Hello, world!
        
      • .split()
        • 문자열을 공백()기준으로 나눠서 나눠 리스트로 반환
        text = "Hello world"
        splited_text = text.split() # ['Hello', 'world']
        
      • map(적용할 함수, 반복 가능한 자료형)
        • 하나씩 꺼내서 함수에 넣는다.
        • 즉 반복 가능한 자료형에 함수 적용
        a, b = map(int, ['214', '5345'])
        # int('214'), int('5345')를 단번에 시행하여 a,b에 할당
        print(a) #214
        print(b) #5345
        
        • (더 이해하기) 리스트와 맵 객체(=이터레이터)
          • list = [1, 2, 3]
            • 이미 모든 값이 메모리에 저장되어 있음.
          • map()
            • 리스트와 다르게 즉시 모든 결과를 계산해서 저장하지 않는다.
            • 필요할 때 그때그때 하나씩 변환해서 내보내는 객체를 반환한다.
            • 이것을 이터레이터라고 한다.
            #m은 리스트가 아니라 map 객체이다.
            m = map(int, ['3', '5', '7'])
            
            #지금 당장 결과를 계산하지 않고, 반복문을 돌리거나 요소를 꺼낼 때 "필요한 순간"에 int()를 적용해 변환해준다.
            m = map(int, ['3', '5', '7'])
            print(list(m)) # [3, 5, 7]
            for x in m: 
            	print(x) 
            	#3
            	 5
            	 7 
            
            
        • (더 이해하기) iterable
          • 하나씩 순서대로 꺼낼 수 있는 객체
            • 리스트
            • 문자열
            • 튜플
            • 딕셔너리
            • 집합
            • range 객체
            • map, filter
          • 반복가능한 객체라고도 한다.
          • 따라서 for문에 모두 쓸 수 있다.
      • for _ in
        • 파이썬에서 자주 쓰이는 패턴으로, 반복은 하지만 반복 변수는 사용하지 않을 때 씀.
        for _ in range(b):
        	print('*' * a)
        
        # 총 b번 반복 
        # 반복 변수는 사용하지 않아 _로 생략
        
    • 풀이
    a. b = map(int, input().strip().split())
    for _ in range(b):
    	print(a * '*')
    
    '''
    1) input() 
    사용자료부터 숫자를 입력 받아 문자열로 저장 
    ' 5 3'
    
    2) .strip() 
    앞뒤 공백은 제거하기
    '5 3'
    
    3) .split() 
    공백을 기준으로 리스트로 반환
    ['5, '3']
    
    4) a, b = map(int, ...) 
    이터러블한 자료형 요소를 각각 int함수 적용 
    int('3'), int('5')하여 a,b에 각각 담는다.
    
    5) for _ in range(b)
    b만큼 반복
    반복해서 담을 변수는 없음 ( _ 로 표시)
    
    ''' 
    

다음에 적용해 볼 것

  • [x] 파이썬 새롭게 배운 함수 관련 예제 풀어보기