기타/Python

250711_파이썬(순열과 조합), 데이터분석의 흐름

baektree 2025. 7. 11. 20:46

요약/나만의 인사이트

  • 지도학습(선형회귀) : 몸무게를 통해 키 예측하기 (숫자예측)
  • 회귀분석의 평가지표 : MSE(실제값과 예측값의 차이를 제곱해 데이터 개수로 나눈것), RMSE(MSE에 루트 씌운것), R2 square(결정계수, 회귀모델이 데이터를 얼마나 잘 설명하고 있는가. EX 0.8이다 => X변수로 Y를 80% 예측할 수 있다.)
  • 선형회귀의 가정
    • 선형성
    • 등분산성(오차(=잔차)의 크기가 일정하다.)
    • 정규성(오차항은 정규분포를 따른다.)
    • 독립성(X변수는 서로 독립적이어야 한다.)
  • 다중공선성 : 상관관계가 높은 변수들로 인해 예측이나 해석력이 떨어지는 문제가 발생하는 것
    • 해결하는 방법
      • 서로 상관관계가 높은 변수 중 하나만 선택
      • 차원축소
  • 로지스틱회귀(분류) 시그모이드함수를 이용해 확률값을 알아내어 분류하는 것

새롭게 알게 된 것

  • 파이썬 순열과 조합
    • 순열: 서로 다른 n개의 값에서 r개를 뽑아 일렬로 나열 (중복: X / 순서: O)
    • 조합: 서로 다른 n개 중에서 r개를 뽑되, 순서를 고려하지 않음 (중복: X / 순서:X)
    from itertools import permutations, combinations
    
    my_list = [1, 2, 3]
    
    p = list(permutations(my_list, 2)) # [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
    c = list(combinations(my_list, 2)) # [(1, 2), (1, 3), (2, 3)]
    
  • Scikit-learn
    • 정의
      • 다양한 머신러닝 모델과 데이터 처리 기능을 제공하는 파이썬 라이브러리
      • 여러가지 머신러닝 모듈(데이터 전처리, 모델링, 성능 평가)로 구성
    • 주요 모듈
    • #사이킷런에서 제공하는 데이터셋 로드
      from sklearn.datasets import load_iris
      
      #데이터를 훈련용과 테스트용으로 분할, 교차검증, 하이퍼파라미터 튜닝을 위한 도구
      from sklearn.model_selection import train_test_split
      
      #데이터 전처리(스케일링, 정규화, 인토딩 등)
      from sklearn.preprocessing import StandardScaler, MinMaxScaler, LabelEncoder(), OneHotEncoder()
      # StandardScaler : 평균0, 표준편차1로 스케일링
      # MinMaxScaler : 최소 0, 최대 1로 스케일링
      # LabelEncoder : 순서가 있는 범주형 데이터를 정수로 인코딩
      # OneHotEncoder : 순서가 없는 범주형 데이터를 원-핫 인코딩
      
      #모델 성능 평가
      from sklearn.metrics import accuracy_score, mean_squared_error, confusion_matrix
      # accuracy_score() :정확도
      # precision_score() : 정밀도
      # recall_score(): 재현율
      # F1-score : 정밀도와 재현율의 조화 평균 2 * (Precision * Recall) / (Precision + Recall)
      # mean_squared_error() : 평균제곱오자(MSE)
      # root_mean_squared_error() : 평균제곱오차 제곱근(RMSE)
      # root_mean_squared_error 없을 시 np.sqrt(mean_squared_error(...))로 대신 가능
      # r2_score() : 결정계수(설명력)
      
      #선형 모델
      from sklearn.linear_model import LinearRegression, LogisticRegression, Ridge, Lasso
      #LinearRegression(): 선형회귀모델
      #LogisticRegression(): 로스트틱 회귀 모델(분류)
      #Ridge(), Lasso(): 정규화된 회귀 모델
      
      #서포트 벡터 머신
      from sklearn.svm import SVC, SVR
      #SVC(): 서포트 벡터 분류기
      #SVR(): 서포트 벡터 회귀
      
      #앙상블 모델
      from sklearn.ensemble import RandomForestClassifier
      #RandomForestClassifier(), RandomForestRegressor(): 랜덤 포레스트 분류 및 회귀
      #GradientBoostingClassifier(), GradientBoostingRegressor(): 그레디언트 부스팅 분류 및 회귀
      
      #의사결정트리
      from sklearn.tree import DecisionTreeClassifier
      #DecisionTreeClassifier(): 분류용 의사결정 트리.
      #DecisionTreeRegressor(): 회귀용 의사결정 트리
      
      #클러스터링
      from sklearn.cluster import KMeans, DBSCAN
      # KMeans(): k-평균 클러스터링
      # DBSCAN(): 밀도 기반 클러스터링
      ​
  • Visual Studio Code
    • Microsoft가 제공하는 소스 코드 에디터. 파이썬, R, Java등 프로그래밍 언어를 제공
    • 로컬컴퓨터 자원을 사용
    • pip은 Python 프로그래밍 언어를 위한 표준 패키지 관리자
      • 구글 코랩 :
        • 구글이 만든 주피터 노트북 환경. 무료로 GPU 등 고사양의 환경을 이용할 수 있음.
        • 구글 코랩 단축키
          • 셀 선택모드
            • A: 현재 셀에서 위쪽에 새로운 셀을 추가한다.
            • B: 현재 셀에서 아래쪽에 새로운 셀을 추가한다.
            • DD: 현재 셀을 삭제한다.
            • M: 현재 셀을 코드에서 마크다운으로 변경한다.
            • Y: 현재 셀을 마크다운에서 코드로 변경한다.
            • C,V,X: 복사, 붙여넣기, 잘라내기
      • Anaconda
        • 데이터 과학 및 머신러닝 분야에 적합한 파이썬과 R의 패키지/의존성 및 배포를 편리하게 해주는 오픈 소스 패키지
      • 데이터 프로젝트를 앞두고 메타인지 향상( 프로젝트를 대하는 자세/ 데이터분석의 과정/ API가 뭐지? )
        • 프로젝트를 대하는 자세
          • 없으면 안돼!를 먼저하기
          • 처음부터 완벽한 결과를 기대하지 않는다. 바뀔수 있다.
          • 일을 작게 만들기
          • 기술은 수단
          • 비즈니스 목적을 뾰족하게
          • 배움에 초점을 맞춰서 학습한다.
          • 1주일만의 프로젝트가 포토폴리오에 쓸만큼 안착되는 경우 희귀, 추후 따로 정리가 필요
          • 역할분장 명확히, 맡은 역할 성실히
          • 전처리 80, 분석은 20
          • 비즈니스애널리틱스 - 오너의 마인드 - 오너 옆에 있는 분석가 - 짧게 빠르게 하는 분석 - 관점이 중요 (나는… 아니겠다.)

데이터분석의 과정

        • 0. 데이터 확인 (데이터 구성 파악, 각 변수의 이름과 의미, 데이터 타입 확인, 결측치 확인, 기초통계 확인, 기초 시각화 , 업무/비즈니스 맥략에 맞는 변수 수정, 도메인 이해)
          1. 이 데이터로 답할 수 있는 질문은 무엇인가?
          2. 분석 불가능한 영역은 무엇인가?
          3. 추가 데이터가 필요한가?
          4. 어떤 식으로 전처리해야 의미 있는 분석이 가능할까?
      •  

        1. 문제정의
          • 무엇을 알고 싶은가?
          • 분석 결과를 통해 어떤 의사결정을 내릴 것인가?
        2. 데이터수집
        3. 데이터전처리
          • 결측치 제거, 이상치 확인, 형식통일, 인코딩
        4. 탐색적 데이터분석
          • 기술통계
          • 시각화
          • 상관관계 파악
        5. 모델링
          • 예측 분류 모델
        6. 결과해석 및 시각화
          • 어떤 의미있는 결론이 나왔는가?
        7. 보고 및 의사결정 지원
    •  
    •  
      • AIP는 뭐지??
        • 데이터를 API 형태로 받는다.
        • API란 스마트폰에서 카카오서버에 요청할 때, 이 요청이 서버에 잘 전달되어 처리될 수 있도록 하는 것이 바로 API이다.
        • Application Programming Interface(애플리케이션 프로그래밍 인터페이스) : 스마트폰이 카카오 서버와 인터페이싱하는(요청과 응답을 주고 받는) 체계
        • 공공, 민간 기업에서 자사가 제공하는 다양한 기능들(지도앱, 검색, 로그인) API 형태로 오픈해 두었음.
        • 앱과 앱이 서로 대화해주게 하는 통로
        • 요청(Request) → API → 응답(Response)
        • [ 앱 또는 웹사이트 ]
                 |
                 |  "데이터 주세요" (API 요청)
                 v
          ┌────────────────────┐
          │     API 서버       │ ← 데이터 처리, 계산, DB 조회 등
          └────────────────────┘
                 |
                 |  "여기 있어요!" (API 응답 - JSON, XML 등)
                 v
          [ 앱 또는 웹사이트 ]
          
          

 

  • 데이터분석 프로세스(by 튜터님 파일)
    1. 실제 데이터 수집
    2. 탐색적 데이터 분석(EDA) - 시각화, 기술통계, 탐구, 이해 ⇒ 데이터 정보, 적절한 모델링 정보 취득
    3. 데이터 전처리
      • 전체 분석의 90% 차지
      • 이상치 - ESD(평균에서 3시그마 이상 떨어지면 이상치로 분류), IQR(Inter Quantile Range)
      • 결측치 - 대치(평균값, 중앙값, 최빈값)
      • 범주형 데이터 - 인코딩(레이블인코딩, 원핫인코딩)
      • 수치형 데이터 - 스케일링(MinMax, Standard)
    4. 데이터분리(과적합 방지)
      1. 교차검증 Cross Validation
        • 데이터셋을 여러개의 하위집단으로 나누어 돌아가면서 검증 데이터로 사용하는 방법
        • K-Fold Validation : Train Data를 K개의 하위 집합으로 나누어 모델을 학습시키고 모델을 최적화 하는 방법
      2. GridSearchV
        • 사람이 입력할 수 있는 하이퍼파라미터를 자동화해주는 알고리즘
      3.  
    1.