-
머신러닝 5/ 코드카타 / pandas[스파르타코딩클럽]데이터분석 과정/TIL,WIL 2024. 2. 2. 20:24
머신러닝 과제
- 문제 1 라이브러리를 통해 데이터 불러오기
ucimlrepo 패키지 : 스크립트 및 노트북으로 데이터 세트를 쉽게 가져올 수 있는 패키지
fetch_ucirepo : 데이터 프레임 및 메타데이터 정보를 포함하여 UCI ML 리포지토리에서 데이터 세트 로드
df 지정해주기
df = pd.concat([X,y],axis= 1)
csv파일 만들기
(bank 파일 들어갔는데 없어서 뭐지 했는데 만드는 문제였음ㅎ)df.to_csv('./bank_marketing.csv', index = False)
- 문제 2 : Y 변수 인코딩 적용하기
x가 no일 경우 0, 그렇지 않을 경우 1 반환
범주형 데이터 사용하는 강의를 참고해서 풀었음if x == 'no': return 0 else: return 1
데이터 인코딩 코드
- apply 사용 : df['컬럼'].apply(함수명)
- y_train
y_train['y'] = y_train['y'].apply(get_binary)
- y_test
y_test['y'] = y_test['y'].apply(get_binary)
- 문제 3 : 간단한 모델링 & 평가함수 생성하기
평가 지표 : accuracy_score, f1_score -> metrics
모델링 : LogistricRegression -> linear_model
from sklearn.metrics import accuracy_score, f1_score from sklearn.linear_model import LogisticRegression
학습하기 : fit
model_lor = LogisticRegression() model_lor.fit(X_train,y_train)
결과 저장 : y_pred_train, y_pred_test
예측 : predict
y_pred_train = model_lor.predict(X_train) y_pred_test = model_lor.predict(X_test)
- 문제 4 : 모델링 수행하기
StandardScaler, MinMaxScaler 사용 -> preprocessing
각각 sd_sc mm_sc
from sklearn.preprocessing import MinMaxScaler, StandardScaler mm_sc = MinMaxScaler() sd_sc = StandardScaler()
sc 적용
(처음에는 [['sc_col']] 했는데 오류 나서 하나씩 지워봤다)X_train[sc_col] = sd_sc.fit_transform(X_train[sc_col]) X_test[sc_col] = sd_sc.fit_transform(X_test[sc_col])
mm 적용
(자꾸 오류나서 위에랑 다르게 적용하는건가? 싶었는데 cool이라고 했었다 ㅎ)X_train[mm_col] = mm_sc.fit_transform(X_train[mm_col]) X_test[mm_col] = mm_sc.fit_transform(X_test[mm_col])
SQL 코드카타
진료과별 총 예약 횟수 출력하기
진료과 코드, 5월예약건수를 출력하고
진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고
예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순으로 정렬- 예약건수 : count
- 5월 : where apnt_ymd like '2022-05%'
- 진료과별 : group by
- 정렬 : 5월 예약 건수 asc, MCDP_CD asc
SELECT MCDP_CD AS '진료과 코드', COUNT(APNT_YMD) AS 5월예약건수 FROM APPOINTMENT WHERE APNT_YMD LIKE '2022-05%' GROUP BY MCDP_CD ORDER BY 5월예약건수 ASC, MCDP_CD ASC;
Find Followers Count
각 user와 follower의 수를 구하고 user_id를 오름차순으로 정렬- follower의 수 : count(follower_id)
- 각 user : group by
- 정렬 : order by user_id asc;
SELECT user_id, COUNT(follower_id) as followers_count FROM Followers GROUP BY user_id ORDER BY user_id asc;
Revisig Aggregation - Averages
district가 california인 도시의 평균 인구를 구하기- 평균 : AVG
- district가 california인 : district = 'california'
SELECT AVG(POPULATION) FROM CITY WHERE DISTRICT = 'California';
파이썬 코드카타
모의고
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers
가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수- 학생 3명 : one, two, three로 각각 만들어줌
- 정답 확인 : for문
- 만약 정답 i랑 같다면 : if문 사용
- i랑 학생이 고른 답 몇 개가 같은지 : 학생[i % len(학생)]
- 가장 많이 정답 맞춘 사람 : max
def solution(answers): one = [1,2,3,4,5] two = [2,1,2,3,2,4,2,5] three = [3,3,1,1,2,2,4,4,5,5] #정답 체크 ans = [0, 0, 0] for i in range(len(answers)): if answers[i] == one[i % len(one)]: ans[0] += 1 if answers[i] == two[i % len(two)]: ans[1] += 1 if answers[i] == three[i % len(three)]: ans[2] += 1 #가장 많이 정답 맞춘 사람 answer = [] for i in range(len(ans)): if ans[i] == max(ans): answer.append(i+1) return answer
Pandas
- 연결 : concat
- 2개 이상의 DataFrame을 행 혹은 열 방향으로 연결
- 행 방향
axis = 0이 기본값
index가 맞지 않아도 무시하고 연결 가능, 일부 컬럼 누락 및 순서 바뀌어도 알아서 같은 컬럼으로 연결됨- 열 방향
axis = 1 기본값
- 병합 : merge
- 2개의 DataFrame을 특정 key를 기준으로 병합할 때 사용하는 메서드
- 서로 다른 구성이더라도 공통된 key가 있다면 병합 가능 (join과 유사)
how : inner, left, right, outer로 병합 방법 정할 수 있음
병합하는 컬럼의 이름이 다른 경우에는 left_on, right_on을 지정하면 drop되지 않음'[스파르타코딩클럽]데이터분석 과정 > TIL,WIL' 카테고리의 다른 글
코드카타 / 파이썬 / pandas (0) 2024.02.05 KDT 실무형 데이터 분석가 양성과정 7주차 (0) 2024.02.02 머신러닝 4/ 코드카타 / 판다스 (0) 2024.02.01 머신러닝 3 / 코드카타 / 판다스 (1) 2024.01.31 머신러닝 2 / 코드카타 / 판다스 (1) 2024.01.30