빅데이터분석기사 26

[작업형2] 중고 자동차 가격 예측하기(회귀)

// 퇴근후딴짓 님의 강의를 참고하였습니다. // Dataset : 문제) 중고 자동차 가격을 예측하여 다음과 같은 형식으로 제출하시오. 자동차 가격을 예측해주세요! 예측할 값(y): price 평가: RMSE (Root Mean Squared Error) data: train.csv, test.csv 1. EDA # 데이터 불러오기 import pandas as pd train = pd.read_csv("train.csv") test = pd.read_csv("test.csv") train.info() 실행 결과 : RangeIndex: 3759 entries, 0 to 3758 Data columns (total 9 columns): # Column Non-Null Count Dtype --- ---..

[작업형2] 자동차 시장 세분화(분류)

// 퇴근후딴짓 님의 강의를 참고하였습니다. // Dataset : 문제) 신규 고객이 어떤 분류에 속할지 예측하여 다음과 같은 형식으로 제출하시오. 자동차 회사는 새로운 전략을 수립하기 위해 4개의 시장으로 세분화했습니다. 기존 고객 분류 자료를 바탕으로 신규 고객이 어떤 분류에 속할지 예측해주세요! 예측할 값(y): "Segmentation" (1,2,3,4) 평가: Macro f1-score data: train.csv, test.csv 문제1-1) 수치형 변수만 사용 (초급자) 1. EDA # 라이브러리 불러오기 import pandas as pd train = pd.read_csv("train.csv") test = pd.read_csv("test.csv") print(train.shape, t..

[작업형1] 조건 / 평균 / bmi / 절대값 / 내림차순 구하기

// 퇴근후딴짓 님의 강의를 참고하였습니다. // Dataset : 문제1) 종량제 봉투 종류가 '규격봉투'이고, 종량제 봉투 용도가 '음식물쓰레기'인 2L가격 평균을 출력하시오. (단, 가격0 제외, 반올림 후 정수 출력) import pandas as pd df = pd.read_csv("5-1price.csv") df cond1 = df['2ℓ가격'] != 0 cond2 = df['종량제봉투종류'] == "규격봉투" cond3 = df['종량제봉투용도'] == "음식물쓰레기" df = df[cond1 & cond2 & cond3] print(round(df['2ℓ가격'].mean())) 실행 결과 : 118 → '2L가격'이 '0원'이 아닌 조건1 / '종량제봉투종류'가 '규격봉투'인 조건2 / '..

[작업형1] 사분위수 / 절대값 / 조건 / datetime 변환 구하기

// 퇴근후딴짓 님의 강의를 참고하였습니다. // Dataset : 문제1) age 컬럼의 3사분위수와 1사분위수의 차를 절대값으로 구하고, 소수점 버려서, 정수로 출력하시오. import pandas as pd df = pd.read_csv("basic1.csv") df result = abs(df['age'].quantile(0.25) - df['age'].quantile(0.75)) print(int(result)) 실행 결과 : 50 → quantile() 함수를 사용해 3분위수와 1분위수를 구한 후 abs() 함수를 사용해 절대값을 씌워준다. → 정수로 출력하기 위해 int() 함수를 사용해 출력하면 50이 나온다. 문제2) (loves반응+wows반응)/(reactions반응) 비율이 0.4보..

[작업형3] 회귀모형

// 퇴근후딴짓 님의 강의를 참고하였습니다. // 1. 상관계수 - 두 변수 사이의 관계 (1에 가까울 수록 강한 양의 상관관계, -1에 가까울 수록 강한 음의 상관관계) 문제1) iris에서 Sepal Length와 Sepal Width의 상관계수 계산하고 반올림 후 소수 둘째자리까지 출력하고, 양의 상관관계인지 음의 상관관계인지 출력하시오. import pandas as pd from sklearn.datasets import load_iris # iris 데이터셋 로드 iris = load_iris() df = pd.DataFrame(iris.data, columns=iris.feature_names) df # Sepal Length와 Sepal Width의 상관계수 계산 correlation = ..

[작업형3] 일원배치법

// 퇴근후딴짓 님의 강의를 참고하였습니다. // 1. 일원배치법 - 관측치가 3개 이상일 때 활용 그룹 간의 평균 차이를 비교하기 위해 사용되는 통계적 검정 한개의 변수(그룹)에 따라 평균의 차이가 통계적으로 유의미한지 검정 양측 검정만 있음 (방향이 없음) 문제) 빅데이터 분석기사 실기를 세 가지 다른 교육 방법(A, B, C)을 도입하여 수험생들의 실기시험 성적을 비교하고자 합니다. 40명의 학생들을 무작위로 12명씩 세 그룹으로 나누어 교육을 시행한 후, 시험을 실시하였습니다. 다음은 각 그룹의 수험생들의 실기시험 성적 데이터입니다. (단, 각 그룹의 데이터는 정규성을 만족하고 그룹간의 등분산성은 동일하다.) - 귀무가설(H0) : 세 그룹 간의 평균 실기시험 성적 차이가 없다. (모평균의 차이가..

[작업형3] 독립성 검정(카이제곱)

// 퇴근후딴짓 님의 강의를 참고하였습니다. // 1. 독립성 검정 - 두 범주형 변수의 관련성 문제) A공장과 B공장 임직원 간의 근무기간 비율에 차이가 있는가? - 귀무가설(H0) : '근무지'와 '근무기간'은 독립이다. - 대립가설(H1) : '근무지'와 '근무기간'은 독립이 아니다. 문제1) 위의 가설에 대한 독립성 검정(카이제곱)의 검정통계량 값은? import pandas as pd from scipy.stats import chi2_contingency # 데이터 df = pd.DataFrame([[50, 60],[25, 40]]) → 문제와 같이 데이터프레임을 만들어준다. # 독립성 검정 stat, p, dof, expected_freq = chi2_contingency(df) 실행 결과 ..

[작업형3] 대응(쌍체)표본 t-test (paired t-test)

// 퇴근후딴짓 님의 강의를 참고하였습니다. // [배경] 동일한 대상에게 "첫번째 관측 -> (개입) -> 두번째 관측" 예1) 어떤 사람의 수학 점수가 "1타 강사" 수업을 들은 전후 비교 예2) 오른쪽과 왼쪽 눈 크기 비교 문제1) 귀무가설과 대립가설1 귀무가설(H0): μ = 0 대립가설(H1): μ < 0 μ = (수업을 듣기 전 - 수업을 들은 후) 점수 평균 유의수준: 0.05 import pandas as pd from scipy import stats # 정규분포를 따른 다는 가정 df = pd.DataFrame({ "pre":[80,69,78,88,100,85,83,81,80,91,95,59,59,49,69,39,49,59,90,90,91,93,79,78,68,58,78,88,88], ..

[작업형3] 독립표본 t-test (two-sample/independent t-test)

// 퇴근후딴짓 님의 강의를 참고하였습니다. // [배경] 빅데이터 분석기사 실기시험을 공부하면서 강사가(또는 도서에서) 제공한 코드를 복사-붙여넣기 하며 학습하는 사람들(A 집단)과 직접 코딩하면서 에러를 마주하는 사람들(B 집단)의 평균 점수는 다르다고 할 수 있을까요? 문제1) 귀무가설과 대립가설1 귀무가설(H0): μ1 = μ2, A집단과 B집단 시험 평균 점수는 같다. 대립가설(H1): μ1 μ2, A집단이 B집단 보다 평균 점수가 크다. stats.ttest_ind(df['Agroup'], df['Bgroup'], alternative="greater", equal_var=False) 실행 결과 : Ttest_indResult(statistic=-1.8619610028956959, pvalue..

[작업형3] 단일표본 t-test (one-sample t-test)

// 퇴근후딴짓 님의 강의를 참고하였습니다. // [배경] 하루에 커피 몇 잔 마시는지 가설검정 문제1) 귀무가설과 대립가설1 귀무가설(H0): 하루 평균 두 잔 (μ = 2) 대립가설(H1): 하루 평균 두 잔 보다 더 많이 마신다 (μ > 2) 유의수준: 0.05 import pandas as pd from scipy import stats df = pd.DataFrame({ "하루 커피 몇 잔":[3,2,1,3,2,3,4,1,1,1,2,3,4,4,3,3,3,2,2,2] }) df.head(3) → 임의적으로 커피 몇 잔 마셨는지 데이터프레임을 만들어준다. result = stats.ttest_1samp(df["하루 커피 몇 잔"], 2, alternative="greater") result 실행 결..