학교 수업

데이터 과학 기초 - 중간

바보1 2022. 10. 24. 05:49
  • Data Science is study of data
    • about
      • extracting
      • analyzing
      • visualizing
      • managine / storing
      • to create insight
    • insight help
      • Companies to make powerful data-driven decisions
    • Requires
      • Unstructured data
      • structured data
    • Multidisciplinary filed
      • CS, Math and Statistics, Domain and Business
    • What Learning about?
      • Exploration
        • Identifying patterns in data
        • Uses visualizations
      • Inference
        • Using data to draw reliable conclusions about the world
        • Uses statistics
      • Prediction
        • Make infored guesses about unobserved data
        • Uses Machine Learning
    • Pros
      • 수요가 많다.
      • 일자리가 풍부하다
      • 고수익
      • 전망이 좋음
      • Versatile (다재다능하다)
    • Cons
      • 정의가 모호
      • DS 마스터는 불가능
      • 도메인 지식 많이 필요
      • 모호한 데이터는 예상치 못한 결과를 내놓음
      • 프라이버시 문제
    • need skill
      • 통계, ML, 최적화 -> CS 프로그래밍 -> 시각화 -> 도메인 지식 -> 빅 데이터, 클라우드 컴퓨팅 -> 소통 능력
    • DK (Domain Knowledge)
      • source problem + 전문지식 + 노하우
    • Data Science Process
      1. 문제 구성 - 명확하고, 확고한 문제 정의
      2. 데이터 습득 - 온라인에서 얻던가 CRM (고객 관계 관리)
      3. 데이터 전처리 - EDA(Exploratory data analysis)를 이용한 데이터 변형
        • 수집한 데이터가 들어왔을 때, 이를 다양한 각도에서 관찰하고 이해하는 과정입니다. 한마디로 데이터를 분석하기 전에 그래프나 통계적인 방법으로 자료를 직관적으로 바라보는 과정입니다.
      4. 모델 계획 - 회귀, 분류 등으로 모델을 계획
      5. 모델 구현 - 학습, 테스트 셋으로 성능 측정
      6. 시각화 및 소통 - Hidden Patterns, Insight
      7. 배포 및 유지 - 배포, 새로운 데이터로 재학습 등
    • DS Lifestyle
      • 시작 (아래 네 개가 상호작용)
      • 비즈니스 이해
      • 모델링 (Feature Enginnering, Model Training, Model Evaluation)
      • 데이터 취득 및 이해 (Data Source, Pipeline, Environment, Wrangling, Exploratioin)
      • 배포 (Scoring, Performance, monitoring)
    • Data Scientist Job
      • 데이터 과학자는 various tool, techniques, methodologies, algorithm을 사용하여 강력한 비즈니스 비전을 제시하기 위해 방대한 양의 데이터를 관리하는 전문가
      • R, SAS, Python, SQL, Hive, Matlab ...
    • 직업 분류
      • Data Engineer
        • 많은 데이터를 처리하기 위해 대용량 아키텍처 개발 및 유지보수 
      • Data Analyst
        • 데이터 마이닝, 관계, 패턴, 트렌드를 찾음, 결정을 내리기 위한 분석 등
      • Statistician (통계 전문가)
        • 정성 정량적 데이터 수집, 분석, 이해
      • Data Administrator (데이터 관리자)
        • 연관된 사람이 접근하게 해야한다. 올바르게 작동해야 하고, 해킹 방지
      • Business Analyst (비즈니스 분석가)
        • 비즈니스 분석, 개선
    • Data Scientist 한테 필요한거
      • 깊은 ML, 통계, 도메인 지식
      • 얕은 sw engineering, 비즈니스 감각, 분산 컴퓨팅, 소통
    • DS와 BI 차이
Parameter Business Intelligence Data Science
Perception Looking Backward Looking Forward
Data Sources Structured Data Structured / Unstructured Data
Approach Statistics & Visualization Statistics, ML, Graph
Emphasis Past & Present Analysis & Neuro linguistic Programming
Tools R, TensorFlow
  • Python
    • IPython
      • 목표
        • 파이썬 shell과 상호작용 향상
        • two process communication model - 여러 클라이언트가 접속, web 기반은 주피터
        • 대화형 병렬 컴퓨팅을 위한 아키텍쳐
      • ipython은 read-eval-print loop terminal, kernel with the fromtend interfaces
      • 주피터는 ipython + 코드 실행, 노트, 멀티미디어, 대화식 이용
      • 코랩은 주피터 + 협업, 추가 하드웨어, 클라우드 기반
    • 주피터와 코랩 차이
      • 주피터
        • local 하드웨어, 외부 gpu, tpu 안 됨, 라이브러리 설치해야함, 다운로드 말고는 공유 안 됨, 런타임 시스템 메모리에 의존, 컴퓨터에 아나콘다나 파이썬을 통해 설치되어야 함, 하드 드라이브 말고는 접근 안 됨, 하지만 자유다.
      • 코랩
        • 구글 서버에서 실행, gpu, tpu 제공, 라이브러리가 사전 설치됨, 다은로드 없이 공유 가능, 런타임은 구글에 의존, 아무것도 설치 안 해도 됨, 어디서든 접근 가능, 부분 공짜
    • Table
      • labeled column의 집합
      • 각 행은 구분
      • 열은 특성, 특성 이름은 Label이라고 함 String임, 그리고 열은 같은 길이인 array임
      • 아무튼 그래서 relabeld(index, 'name') 이런 것도 있음, 새로은 테이블 형성
    • 파이썬 타입은 int, float, str, Table, builtin_function_or_method
    • Table에서 t.column(index or name)하면 array로 나옴
    • array.item(index)하면 value 나옴
    • 혹은 거기서 numpy 함수 사용 가능
    • select(index or name), where(index or name), sort(index or name, descending = True (내림차순)), drop(index or name), take(row index)는 새로운 table 생성
    • t.num_rows, t.num_columns는 개수 return
    • numerical - 각 값이 숫자, 기온 같은거, 다른게 의미 있음
    • categorical - 각 값이 음... 맑음 흐림 같은거, 다르거나 같거나
    • plot은 선, scatter은 점
    • 그리고 그래프 그릴 때, 데코레이션 적게, 색깔은 신중하게, 다른 색깔은 최소화 해야한다.
    • 만약 데이터가 numerical이라면 값과 거리의 연관성을 보존해야한다. (과장하면 안 됨)
    • 데이터는 분산을 가지고 있다. (다 다른 값이니까..)
    • 근데 투표할 때 중복 투표하면 안 됨.
    • bar도 있음. 각 카테고리로 보여준다. 
    • bar(x, y)하면 x는 세로 카테고리로, y는 가로의 범위
    • hist는 numerical 변수의 분산을 보여준다.
    • 아 그리고 bins = array로 구간 설정도 가능
    • 구간은 퍼센트임, 이때 모든 구간의 합은 100이 되어야 한다.
    • 높이 계산법 : 퍼센트 / bin 길이
    • bar의 넓이 : 퍼센트 = 높이 * bin 길이
    • 결론
      • Line Graph (t.plot(x, y)) : sequential data (over time, ...)
      • Scatter Plot (t.scatter(x, y)) : relation between two numerical var, 무조건 numerical..
      • Bar chart(t.bar(x,y)) : 하나의 카테고리 분산 혹은 카테고리와 수의 관계
      • Histogram(t.hist(x : numerical value)) : 분산 표시, 무조건 numerical value 만 가능..
    • 함수는 이름과 argument, body, return expression으로 구성
    • t.apply(function name, column name)
    • t.group('column name', collect =  how to combine values), 기본 값은 길이
    • 그 group에 column 여러 개 넣고 싶으면 ['column 1', 'column 2'] 이렇게 해야함
    • t.pivot(x, y)하면 x는 column, y는 row로 감
    • pivot에도 values = , collect = 가 있음
    • values는 모르겠음
    • 아무튼 하나의 카테고리 변수의 분산을 보고 싶으면 group
    • 두 개 이상의 카테고리 변수는 row마다 group을 하고 싶으면 group
    • 한 개는 수직, 다른 건 수평으로 하고 싶으면 pivot
    • t.join('a', t2, 'b') -> t의 a colum과 t2의 b column을 기준으로 합친다.
    • 물론 앞에 있는 t가 앞 column에 나옴
    • 그리고 joined column은 자동 정렬된다!!!!!! -> 즉 'a', 'b'가 정렬됨!!!
    • 그리고 column 이름은 'a'로 된다 !!
    •  

  • t.random.choice(array, size), size 안 주면 한 개만 뽑음, size가 array len보다 길면 중복으로 뽑음
  • array로 반환함
  • array append 하려면 np.append(array, value or array)
  • 보니까 array는 무조건 같은 타입으로 변환되는 것 같음
  • 그래서 np.append도 같은 타입으로 해야함. 다른거 넣어도 약간 확장성 있게 붙임
  • array.sample(size), t.sample(size) 가능
  • sample_proportions(size, array)) 사이즈만큼 샘플해서 비율 반환