(기계학습 50점)

데이터는 캐글 데이터에서 일부 정제한 데이터가 사용됨. 해당 데이터에서 InvoiceNo, StockCode, Quantity, InvoiceDate, UnitPrice, CustomerID, Country 컬럼만 사용하면서 StockCode는 int값만 있는 데이터만 추출. 약 35,000건의 데이터였음

  1. 온라인 물품구매 데이터 [전처리, 군집분석]

    • 1-1 결측치를 삭제하지 않고 처리하는 방안을 설명하고, 진행하라(5점).

      # 결측치는 Quantity에만 19개 존재한 상태였음
      # KNNImputer 사용함
      
    • 1-2 이상치를 처리하는 방법을 설명하고, 해당 방법을 수행한 후에 이상치가 제거된 것을 보여라(5점).

      # Key값이 되는 컬럼들을 제외한 UnitPrice, Quantity에 대한 Boxplot을 그린 후 IQR 외의 이상치를 제거함
      
    • 1-3 군집분석 기법의 특징(KMeans, DBSCAN 등)을 기술하고, 1-2까지 전처리한 데이터를 바탕으로 고객 군집분석을 수행하라(10점).

      # KMeans 사용
      
  2. 1번에서 이어짐

    • 2-1 1-3에서 생성한 군집모델의 성능을 평가하고, 각 군집별 특성을 기술하라(10점).

      # ㅇㅇ
      
    • 2-2 각 군집별 고객에세 추천할 수 있는 상품 리스트를 정리하라(10점).

      # ㅇㅇ
      
    • 2-3 군집 특성을 활용할 수 있는 KNN모델을 구현하고, CustomerID14513인 고객에게 알맞는 상품을 추천하라(10점).

      # ㅇㅇ
      

(통계분석 50점)

  1. 철강제품의 불량률을 조사하고자 한다. 이 때, 불량률의 90%, 추정오차한계가 5% 이내가 되기 위하여 적절한 표본의 크기 중 최소값은 얼마인가?(5점)

     # CODE
    
  2. 다음은 1월부터 9월까지의 은의 가격이다.

      1월 2월 3월 4월 5월 6월 7월 8월 9월
    가격(USD/oz) 22.3               40.2
    • 4-1 은의 가격 및 이동평균값 3이 설정된 시계열 그래프를 그려라(5점).
     # CODE
    
    • 4-2 1월 대비 9월의 은의 가격은 몇 % 올랐는가? 소수점 두번째 자리에서 반올림(5점).
    f'{round((40.2/22.3-1)*100, 2)}%'
    
  3. 선거
    • 5-1. 연구가설과 귀무가설 설정하라(5점).
     # H0 귀무가설: 선거구별로 A후보의 지지율의 차이는 없다. 
     # H1 연구가설: 선거구별로 A후보의 지지율은 유의미한 차이가 있다.
    
    • 5-2. 통계량을 구하고, 연구가설 채택 여부를 기술하라(5점).
    import pandas as pd
    from scipy import stats 
    
    table = pd.DataFrame({'1선거구':[172, 45], '2선거구':[124,58], '3선거구':[157,65]},
                         index=['지지함', '지지하지 않음'])
       
    f, p, _, _ = stats.chi2_contingency(observed=table)
    
    # 검정통계량값은 f이며, p-value가 p로 유의수준 95%하에서 귀무가설을 기각한다.
    # 즉 선거구별로 A후보의 지지율은 유의미한 차이가 있다고 할 수 있다.
    
  4. A초등학교 남학생 16명과 여학생 9명의 혈압을 측정한 pressure.csv파일을 가지고 남녀학생의 평균 혈압에 차이가 없는지 분석하라. 단, 남학생과 여학생의 혈압 데이터는 정규분포를 따르며 등분산임을 가정한다.
    • 6-1. 연구가설과 귀무가설 설정하라(5점).
     # H0 귀무가설: 남학생과 여학생의 평균 혈압의 차이는 없다. 
     # H1 연구가설: 남학생과 여학생의 평균 혈압은 유의미한 차이가 있다.
    
    • 6-2. 통계량을 구하고, 연구가설 채택 여부를 기술하라(5점).
     import pandas as pd
     from scipy import stats
        
     pressure = pd.read_csv('./datasets/pressure.csv')
     stats.ttest_ind(pressure['남학생'], pressure['여학생'].dropna(), equal_var=True)
        
     # 통계량은 XX이고, p-value가 0.05보다 큰 값이므로 귀무가설을 기각하지 못하므로 남학생과 여학생의 평균 혈압의 차이는 없다.
    
    • 6-3. 6-2에서 구한 검정통계량 값을 바탕으로 신뢰구간을 구하라(5점)
    # 건들지도못함
    
  5. height(키), weight(몸무게), waist(허리둘레) 컬럼을 가진 weight.csv파일을 가지고 다음을 분석하라.
    • 7-1 키와 몸무게를 독립변수로 받아 허리둘레를 추정하는 베이지안 모델을 제시하라. burn-in1,000, MCMC10,000으로 넣고, …(5점).
    # 제시조건을 보면 특정 함수가 있을 것 같은데 베이지안 모델 아는거라곤 GaussianNB밖에 없어서 그냥 그걸로 풀었다.
    
    • 7-2 7-1에서 만든 모델을 바탕으로 키 180cm, 허리둘레 85cm인 남성의 몸무게를 추정하라(5점).
    #