[스파르타코딩클럽]데이터분석 과정/TIL,WIL

머신러닝 1 / 코드카타 / 판다스

설득이 2024. 1. 29. 20:08

머신러닝

머신러닝 ?

기술 통계 등을 통하여 집계된 정보로 의사결정을 했던 과거와 달리 데이터 수집과 처리 기술의 발전으로 대용량 데이터의 패턴을 인식하고 이를 바탕으로 예측, 분류하는 방법론

 

머신러닝 종류

지도학습 : 문제와 정답을 모두 알려주고 공부시키는 방법
비지도 학습 : 답을 가르쳐주지 않고 공부시키는 방법
강화 학습 : 보상을 통해, 상을 최대화, 벌을 최소화하는 방향으로 행위를 강화하는 학습

 

선형회귀

알려진 다른 관련 데이터 값을 사용하여 알 수 없는 데이터의 값을 예측하는 데이터 분석 기법
통계학에서 사용하는 선형회귀 식
머신러닝/딥러닝에서 사용하는 선형회귀 식


 

회귀분석 평가 지표

에러 정의 방법
1. 에러 = 실제 데이터 - 예측 데이터
2. 에러를 제곱하여 모두 양수로 만들기, 다 합치기
3. 데이터만큼 나누기 (MSE)

 

선형회귀만의 평가 지표

R Square : 전체 모형에서 회귀선으로 설명할 수 있는 정도

SQL 코드카타

중성화 여부 파악
보호소의 동물이 중성화되었는지 아닌지 파악
sex_upon_intake 컬럼에 neutered 또는 spayed
아이디 순으로 조회
중성화가 되어있다면 O 아니라면 X
  • ~면 : case when
  • neutered 또는 spayed : like '%netuered%' or '%spayed%'
  • 아이디 순으로 조회 : order by animal_id
SELECT ANIMAL_ID, NAME,
       CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%'
            THEN 'O'
            ELSE 'X'
       END AS 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

 

Number of Unique Subjects Taught by Each Teacher
각 교사가 가르치고 있는 고유한 과목의 수를 계산하시오
  • 각 교사 : distinct teacher_id
  • 고유한 과목의 수 : distinct subject_id
  • 수 계산 -> count
select distinct teacher_id, count(distinct subject_id) cnt
from teacher
group by 1;

 

The PADS
이름(직업 첫 글자)
There are a total of [직업 수] [ 직업 ]s. 형태로 추출
  • 이름(직업 첫 글자) : concat
  • 직업 첫 글자 : left(직업, 1)
  • There are a total of : concat 사용
  • 직업 수 : count(직업)
  • 소문자로 직업 : lower
select CONCAT(Name,'(',LEFT(Occupation,1),')')
from OCCUPATIONS
order by Name asc;

SELECT CONCAT('There are a total of ', COUNT(Occupation), ' ', LOWER(Occupation), 's.')
FROM OCCUPATIONS
GROUP BY Occupation
ORDER BY COUNT(Occupation) ASC;

 


파이썬 코드카타

두 개 뽑아서 더하
정수 배열 numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있도록 모든 수를 배열에 오름차순으로 담아 return
  • 서로 다른 인덱스에 있는 두 개의 수 : for i / for j
  • 더해서 만들기 : append
  • 배열 : sorted
def solution(numbers):
    answer = []
    #서로 다른 인덱스에 있는 두 개의 수
    for i in range(len(numbers)):
        for j in range(i+1,len(numbers)):
            #더해서 .append
            answer.append(numbers[i]+numbers[j]) 
            #배열 sorted
    return sorted(list(set(answer)))

 

가장 가까운 같은 글자
문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같으 글자가 어디 있는지 알고 싶을 때, 수행하는 함수 solution 완성
  • 문자열 위치 : s[i]
  • 문자열 위치에 따른 앞에 있는 글자 : s[0:i]
  • 뒤에서부터 문자의 위치를 찾기 : rindex()
def solution(s):
    answer = []
    for i in range(len(s)):
        if s[i] in s[0:i]:
            answer.append(i - s[0:i].rindex(s[i]))
        else:
            answer.append(-1)
    return answer

 

 


판다스

  • describe()

수치형

count : 데이터 개수

mean : 평균

std : 표준편차 = 분산 (var)의 제곱근 (sqrt)

min : 최솟값

max : 최대값

 

문자형

count : 데이터 개수

unique : 고유 데이터 값 

nunique : 고유 데이터 의 개수

top : 가장 많이 출현한 데이터의 개수

freq : 가장 많이 출현한 데이터의 빈도 수 

  • 조건별 평균
condition = (df['adult_male']==True)
df.loc[condition,'age'].mean()
  • skipna

기술 통계 함수

skipna = True 기본

skipna = False -> NaN값이 있는 열은 NaN값으로 출력

  • 누적
df['age'].cumsum()

누적합 : cumsum

df['age'].cumprod()

누적곱 : cumprod