ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 머신러닝 1 / 코드카타 / 판다스
    [스파르타코딩클럽]데이터분석 과정/TIL,WIL 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

     

     

Designed by Tistory.