profile-img
The merit of an action lies in finishing it to the end.
slide-image

Typical Data Science Pipeline

Data Munging / Data wrangling

- 데이터를 얻고 분석을 위해 준비/정리하는 것

 

데이터과학에 사용하는 언어

- Python: 라이브러리, 피쳐 등 포함 - regular expressions

* regular expression 예

    - [hc]at : hat or cat

    - .at : .자리에 아무거나 들어갈 수 있음

    - ab*c : b가 0개 이상 있어야 함

    - ab+c : b가 1개 이상 있어야 함

- R: 통계학자들이 주로 사용

- Matlab: 행렬

- Java/C++: 빅데이터 시스템을 위한 언어

- Excel: bread and butter toool

 

노트북 환경

- reproducible, tweakable, documented

- 데이터 파이프라인을 유지하기 쉽다.

 

데이터 수집

- Files (CSV, XML, JSON)

- Databases (SQL server)

- API: Application Programming Interface

- Web Scraping (HTML)

 

데이터 형식

1. CSV (Comma-Separated Values)

2. XML (eXtensible Markup Language)

<student>

    <name> 000 </name>

    <age> 19 </age>

</student>

이런 식으로 <>, </> 로 구분 가능

3. JSON (JavaScript Object Notation)

{

    "a": {

             "name": 000,

             "age": 19

            }

... 이런 식으로, {}와 따옴표 등으로 구분

 

CSV 파일에서 데이터 불러오기 - pandas 이용

import pandas
student_data = pandas.read_csv("student_table.csv")

 

Relational DB에서 데이터 불러오기

import pandas
student_data = pandas.read_sql_query(sql_string, db_uri)
SELECT * FROM student_table --전체 불러오기
SELECT studentid, name FROM student_table WHERE gpa > 3.5
--테이블에서 gpa>3.5인 학생들의 id와 이름 불러오기

SELECT S.name, A.name
FROM student_table S, advisor_table A
WHERE S.advisorid = A.id --학생의 지도교수 아이디가 지도교수 명단 아이디와 동일한 경우에 이름 쌍 출력

SELECT S.advisorid, avg(S.gpa)
FROM student_table S
GROUP BY S.advisorid --지도교수가 같은 학생들의 지도교수 아이디와 학생들 성적 평균 출력

SELECT S.advisorid, avg(S.gpa)
FROM student_table S
WHERE S.birthdate >= 2000/1/1 AND S.birthdate < 2010/1/1
GROUP BY S.advisorid

 

API를 이용하여 데이터 얻기

- REST (Representational State Transfer) API

import json
import requests

url = 'https://...format=json'

data = requests.get(url).text
parsed_data = json.loads(data)

 

Web Scraping

<html>
	<head>
    	<title> ... </title>
    </head>
    <body>
        <h1> hello world! </h1>
        <p> COSE471 data science </p>
    </body>
</html>

 

데이터의 원천

1. Proprietary Data Sources

- 기업이 수집하는 내부 데이터

- API로 제한적으로 공개할 수 있음

- 외부로 데이터 전체를 공개하기 어려운 이유: 비즈니스적 이유(경쟁사를 도와줄 수 있음), 프라이버시 이슈

- 예시: 2006년 AOL search log release

 

2. Government Data Sources

- 시, 국가 등에서 공개하는 오픈 데이터

- Freedom of Information Act: 데이터를 공개해달라고 요청할 수 있음

- 데이터가 공개될 때 프라이버시를 지켜야 함

 

3. Academic Data Sets

- 논문 등에서 발표하는 자료

 

4. Web Search/Scraping

- Scraping: 웹페이지에서 데이터나 텍스트를 추출하는 것

- 이미 API가 존재하는지, 누군가 이미 scraper를 작성해두었는지 확인하고 해야 함

 

5. Available Data Sources

- Bulk Downloads: 위키피디아, IMDB, Million Song Database

- API access: 뉴욕타임스, 트위터 등

 

6. Sensor Data Logging

- 이미지, 비디오 데이터: Flicker 이미지를 이용하여 날씨를 관측

- 휴대폰의 accelerometer를 이용하여 지진 관측

- 택시 GPS를 이용하여 교통 흐름 관측

- logging system 구축: 저장소가 저렴함

 

7. Crowdsourcing

- 위키피디아, Freebase, IMDB 등 여러 저자가 참여한 데이터

- Amazon Turk, CrowdFlower 등의 플랫폼에 돈을 지불하면 다수의 사람이 데이터를 모아올 수 있음

 

8. Sweat Equity

- 역사 자료 등은 종이, 피디에프 등의 형식으로 저장되어있어 변환이 필요함

 

Cleaning Data: Garbage In, Garbage Out

- 데이터 정리 중에 나타날 수 있는 문제

* artifact와 오류를 구별

* Data compatibility, unification

* 결측치 처리

* 미관측값 (0) 추정

* 이상치 탐지

 

Errors vs. Artifacts

- error: 데이터를 수집하는 과정에서 근본적으로 잃어버린 정보

- artifact: 데이터 처리 과정 중에 나타나는 시스템적인 문제

- sniff test: product를 가까이에서 조사하여 잘못되었다는 낌새를 알아차리는 방법

 

연도별 과학자의 첫 논문 발표자 수 관련 데이터

- PubMed를 이용하여 가장 자주 인용되는 과학자 100,000명의 첫 논문 발표 연도를 조사

- 예상 분포: 1960년에 몰려있고, 2023년에 가까워지면 0에 수렴하며, 그 중간은 일정하게 유지되는 그래프

(이유: 1960년부터 데이터를 수집했으므로 그 이전 논문들도 1960년으로 반영될 수 있으며, 최근에 가까워질수록 커리어가 적은 사람이 많아서 순위에 들지 못할 가능성이 높음)

- 실제 분포 (왼쪽)

1965년 이전 데이터는 수작업으로 하여 누락되었을 가능성 있음

2000년 이후 저자 이름 기록 방식이 변화로, 다른 저자지만 같은 저자로 인식할 수 있어 오류 발생

 

Data Compatibility

1. Unit Conversion

- 1999년 나사의 Mars Climate Orbiter가 사라짐

- 이유는 단위 차이 때문

- Z-score를 이용하면 단위가 사라지므로 유용

 

2. Number / Character Representation

- 1996년 Ariane 5 rocket 폭발: 64-bit float을 16-bit integer로 전환했기 때문

- 실제 수치의 integer 근사를 피할 것

- 측정값은 decimal number, count는 integer가 되도록 하자

- fractional quantities는 decimal 값으로 기록하자

 

3. Character Representations

- 텍스트 데이터의 인코딩 방식을 주의하자

- UTF-8: multibyte encoding for all Unicode characters

 

4. Name Unification

- 글 저자 기록 방식이 다 다를 수 있음. ex) Steve, Steven. S. 등등

- 이름을 같게 통일하자. 대소문자 변환, 미들네임 제거 등

- false positive와 negative 사이의 tradeoff

 

5. Time / Date Unification

- 날짜 통일: UTC 등 이용

 

6. Financial Unification

- Currency conversion: 환율을 이용

- 절대값 변화보다 returns / percentage change를 이용하자

- stock price를 올바르게 하자. (split(액면분할), dividends(배당))

- time value of money는 공정한 장기 비교를 위해 인플레이션의 correction을 해야 한다.

 

결측치 다루기

- 모른다고 하여 0으로 설정하는 것은 옳지 않다.

- 결측치 처리: 빈칸으로 두는 것보다 estimation, imputation이 필요하다.

 

Imputation methods

- Heuristic-based imputation: 평균수명을 반영하여 사망일자 예측

- Mean value imputation: 평균으로 대체

- Random value imputation: 난수로 대체 -> 통계적 평가에 imputation의 영향을 줄여줌

- Imputation by nearest neighbor: 가장 가까운 record를 이용하여 대체

- Imputation by interpolation: linear regression을 이용하여 대체 -> record에 빈 필드가 많이 없을 때

 

Outlier Detection

- 최댓값, 최솟값을 잘 확인하기

- Normally distributed data는 큰 outlier를 갖지 않는다. (k sigma from the mean)

- 그냥 삭제하지 말고 이상치가 생긴 이유를 생각하여 고치기

- 시각화를 통해 탐지하기 쉬움 (저차원인 경우만 가능)

- 클러스터링 했을 때 중심으로부터 멀리 떨어져있는 경우

 

Delete Outliers Prior to Fitting?

- 적합 이전에 이상치를 지우는 것은 더 나은 모델을 만들어내기도 한다.

ex) 이상치가 측정 오류로 생긴 것일 때

- 반대로 더 나쁜 모델을 만들어내기도 한다.

ex) 간단한 모델에 의해 설명되지 않는다고 해서 해당하는 점을 모두 지워버릴 경우

'School/COSE471 데이터과학' Related Articles +

Probability
- experiment: 가능성이 있는 결과 한 세트를 만들어내는 과정
- sample space S: experiment의 가능성있는 결과의 세트
- event E: experiment의 특정 한 가지 결과
- p(s): probability of an outcome s
0 <= p(s) <= 1 // p(s)의 합 = 1을 만족하는 숫자 -> 확률
- probability of an event E: experiment의 결과들의 확률의 합
P(E) = p(s)의 합 = 1 - p(E^C)
- random variable V: 확률공간의 결과에 대한 numerical function
- expected value of a random variable V
E[V] = p(s) * V(s)의 합

Probability vs. Statistics
- 확률은 미래 사건에 대한 가능성을 예측하는 것을 다룸
- 통계는 과거 사건의 빈도에 대해 분석, 실제 세계에 대한 관측을 합리화하는 데 사용됨

Compound Events and Independence
- independent (독립): 다음 조건을 만족하는 event 2개


Conditional Probability P(A|B)

- 정의: B사건이 일어났을 때 A사건도 일어날 확률
- A와 B가 독립일 때, P(A|B) = P(A)

Bayes Theorem
- 의존관계의 방향을 바꿀 때 이용
- 사전확률로부터 사후확률을 구할 수 있음

Ex) B: 스팸 이메일인 사건 / A: 이메일인 사건
받은 이메일이 스팸 이메일일 확률을 구할 때 이용
- P(A), P(B)는 각각의 사건의 사전확률이다.
- 사후 확률을 구하기. 어려우므로 approximation ~ naive Bayesian 이용

Distributions of Random Variables
- Random variables: 값과 확률이 같이 등장하는 수치적 함수
- Probability density functions (pdfs): 히스토그램 등으로 RV를 나타냄
- Cumulative density functions (cdfs): running sum of the pdf
- pdf와 cdf는 동일한 정보를 갖고 있다.

- cdf는 성장률에 대한 잘못된 시각을 전달할 수 있다. -> 엄청 빠르게 성장하는 것으로 보이나, pdf로 확인할 경우 개별 연도별 성장률이 그렇게 높지 않을 수 있음.

 

Descriptive Statistics

- Central tendency measures: 중심점 주변에 분포한 데이터를 설명

- Variation or variability measures: 데이터가 퍼져있는 정도를 설명

 

Centrality Measure

(Arithmatic) Mean

- 장점: outlier가 없는 symmetric distribution에서 의미 있게 사용 가능 (ex. 키, 몸무게 등의 정규분포)

 

median: middle value

- skewed distribution

- outlier가 있는 데이터

- 부, 수입 등

 

mode: 가장 자주 나타나는 요소

- 중앙에 가깝지 않을 수 있다.

 

geometric mean: nth root of the product of n values

- geometric mean은 항상 arithmetic mean보다 작거나 같다.

- 0에 가까운 값들에 더 민감하다.

- ratio의 mean을 구할 때 사용

 

Aggregation as Data Reduction

- feature의 개수가 아닌 그냥 데이터의 수를 줄이는 것

- train, test set 나눌 때 유의하지 않으면 편향될 수 있음.

 

Variance Metric: Standard Deviation

- Variance: standard deviation sigma의 제곱

- population SD: n으로 나눔

- sample SD: n-1로 나눔

- n이 아주 커지면 n ~ (n-1) 이므로 큰 문제가 되지 않음

- hat: sample을 의미함

- 평균과 표준편차를 가지고 분포를 특정지을 수 있다.

 

Parameterizing Distributions

- 데이터가 어떻게 분포해있는지와는 상관없이, 최소한 1-1/k^2번째 점은 평균의 k sigma 안쪽에 있어야 한다.

- 최소한 75%는 평균의 2 sigma 안쪽에 있다.

- Power law의 경우에는 큰 의미가 없다. (skewed data)

- signal to noise ratio를 측정하는 것은 어렵다. -> sampling error, measurement error에 의한 정확하지 않은 분산

 

Batting Average - Interpreting Variance

- 3할 타자여도, 2할 7푼 5리 이하의 성적을 보일 가능성이 10%나 되고, 3할 2푼 5리 이상의 성적을 보일 가능성도 10%나 된다.

 

Correlation Analysis

- correlation coefficient r(X, Y): Y가 X의 함수인 정도를 측정한다.

- -1~1사이의 값을 갖는다.

-1: anti-correlated

1: fully-correlated

0: uncorrelated

 

Pearson Correlation Coefficient

- 분자 = covariance

 

r^2

- X에 의해 설명되는 Y의 비율을 나타낸 지표

 

Variance Reduction & r^2

- good linear fit f(x)가 있을 때, 잔차 d = y - f(x)는 y에 비해서 더 낮은 분산을 보일 것이다.

- 1-r^2 = V(d)/V(y)

- ex. r = 0.94일 때, 88.4%의 V(y)를 설명할 수 있다.

 

Significance

- 얼마나 유의하냐~

- sample size, r 모두 중요함

- p value < 0.05 (우연히 보았을 확률이 5% 미만이다)

- 작은 상관관계도 sample size가 충분히 크면 유의해질 수 있음

- permutation test: X를 두고 Y를 섞어서 계산 -> 만번 계산 후 우리가 궁금한 r(X, Y)가 상위 몇 % 안에 있나 확인하는 방법

 

Spearman Rank Correlation

- disordered pair의 수를 세는 방법

- 데이터가 직선에 얼마나 잘 맞는지 확인하는 것이 아님

=> non-linear relationship, outlier에 강점

- 계산 방법

- Pearson correlation rank이므로 범위가 -1~1 사이

 

Correlation vs. Causation

- Correlation이 causation인 것은 아니다.

- causation: 원인->결과인 방향이 있는 정보

 

Autocorrelation and Periodicity

- time-series data 중 종종 cycle을 보이는 데이터

- lag-k autocorrelation 계산은 O(n)이지만, Fast Fourier Transform(FFT)를 이용하면 O(nlogn)에 계산 가능

- shifting을 이용하여 correlation을 파악 = 즉, 주기성 파악

 

Logarithms

- 정의: inverse exponential function

- 컴퓨터의 연산 문제 떄문에 logarithm을 이용하는 것이 더 효율적이다.

- 비율을 그냥 비교하는 것은 엄청난 차이를 보일 수 있으나 비율에 로그를 취해서 비교할 경우 equal displacement를 보인다.

- power law에서 로그를 씌워서 비교하는 이유.

 

Normalizing Skewed Distributions

- logarithm을 이용: power law, ratio 등에 이용하여 정규화 가능

 

'School/COSE471 데이터과학' Related Articles +

데이터과학이란 무엇인가

- 실험적 데이터 분석 & 시각화

- 머신러닝 & 통계학

- scale을 다루는 고성능 계산 (computing) 기술

 

데이터과학에 필요한 스킬

- computer science + domain science + statistics

 

Typical Data Science Pipeline

1. 흥미로운 질문 던지기 : 가장 중요한 부분

2. 데이터 수집

3. 데이터 탐색

4. 데이터 모델링

5. 커뮤니케이션, 시각화

 

컴퓨터과학과 실제 과학의 차이

과학자 컴퓨터과학자
- Data-driven
-복잡한 자연세상을 이해하려고 노력함.
- finding에 집중: 결과가 중요하지 method는 그렇게 관심있지 않음.
- 새로운 것을 발견

- 정확도보다는 meaning이 중요함
- 완전히 true인 것은 없다. (이 현상이 이럴 수도 있지만, 저럴 수도 있다 - ex. 유전법칙에 항상 맞는 것은 없는 것)
- Algorithm-driven
- 자신들의 깨끗한 가상환경을 만듦
- method에 집중
- 새로운 것을 발명

- 정확도가 중요

 

데이터 사이언티스트

데이터 사이언티스트들은 실제 과학자처럼 생각하는 방법을 배워야 한다.

소프트웨어 개발자는 code를 생산하지만 데이터 사이언티스트들은 insight를 창출한다.

좋은 데이터 사이언티스트들은 연구분야에 대한 호기심을 갖고 있다. 늘 세상에 대한 더 넓은 시각을 갖고자 한다.

 

좋은 질문 하기

소프트웨어 개발자와 달리 데이터 사이언티스트들은 질문을 해야한다.

예시)

- 주어진 데이터셋으로부터 배울 수 있을 것은?

- 나 또는 대중들이 알고 싶어하는 것이 무엇인가?

- 이 분야에서 얻을 수 있는 데이터셋은 무엇인가?

Who / What / Where / When / Why 에 입각하여 질문해보자.

 

ex1) 야구 데이터를 갖고 있을 때

- 수비 포지션에 따라 타격 성적이 달라지는가?

(이 질문에 대해서는 2017-2018시즌 모 선수 데이터를 활용해서 한 번 분석해보고 싶다.)

- 루키의 성적이 과연 괜찮을까?

(루키의 경우 자료가 없으므로 예측이 어려울 수 있음. 이때 기존 선수들의 루키 시절 자료 중 비교대상과 비슷한 특성을 갖는 사람을 군집화하여 average를 구하면 예측값으로 사용할 수 있다.)

 

ex2) 인구통계학

- 왼손잡이가 오른손잡이보다 더 짧은 수명을 갖고 있는가?

- 키, 몸무게가 인구 전반적으로 커지고 있는가?

 

ex3) 영화 데이터 (IMDb)

- 영화배우들의 social network에 대해 알아보기

- 영화 흥행 예측하기

 

ex4) NYC Taxi Cab Data - Freedom of Information Act Request (FOA) 에 의해 공개된 자료

- 효율적으로 택시를 배치하는 방안

- 심야버스/일반 버스 노선 정할 때 수요가 많은 지역 탐색

 

Google Ngrams

구글이 책 자료를 이용하여 만든 데이터셋. 단어를 입력하면 그 단어가 발행된 책들 가운데 몇 번 빈도로 나타났는지 수치로 확인할 수 있으며 여러 개 입력도 가능하다.

그 시대의 가치를 파악하거나, 특정 단어 (예: 욕설) 가 어떻게 변화하였는지? 추적하는 수단으로 사용될 수 있다.

 

Google Trends

특정 search-term이 전체 검색량 중 얼만큼의 빈도로 입력되었는지 보여주는 툴. 여러 단어 사이의 상대적인 검색빈도를 비교할 수 있음.

논문 Quantifying Trading Behavior in Financial Markets Using Google Trends 에서 사용되었다. 이 논문에서는 debt라는 단어의 검색 빈도수와 Dow Jones Industrial Average 사이 관계를 시각화해서 보여주었으며, debt의 검색 빈도수 추이에 따라 주식 투자를 했을 때 수익률이 일반 전략 (buy and hold, random...) 보다 더 높은 수익률을 보여주었다고 설명하고 있다. financial times에서 여러 차례 언급된 키워드 여러 개 중 가장 성능이 좋았던 것이 debt이었기 때문에 논문에서 소개하고 있다. 다만 unseen data에 대해서 동일한 성과를 낼 수 있는지는 보장된 바가 없다 (단순히 운이었을 수도 있기는 하다.)

 

데이터의 특성

1. Structured / Unstructured Data 

2. Quantitative / Categorical Data

아래 글 참고

 

[EDA] 데이터 종류별 시각화 방법

데이터의 종류 데이터는 크게 범주형, 수치형 두 가지 분류로 나눌 수 있다. 범주형 데이터는 범주/카테고리를 구분하는 각각의 이름을 갖는 데이터 종류다. ex) 성별 - 여성, 남성 / 학력 - 초졸,

iamnotwhale.tistory.com

 

데이터의 종류

1. Nominal (Categorical) (N) : 구분은 되지만 순위는 나눌 수 없는 데이터 =, != 

2. Ordinal (O) : < 처럼 순위를 구분할 수 있는 데이터 =, !=, >, <

3. Quantitative (Q) : arithmetic을 할 수 있는 데이터 

   3-1. Q - Interval (location of zero arbitrary) : 원점이 고정되어있지 않은 데이터 ex) 날짜 =, !=, >, <, +, -

   3-2. Q - Ratio (zero fixed) : 사칙연산이 모두 가능한 데이터 ex) 길이 =, !=, >, <, +, -, *, /

 

Classification vs Regression

Classification(분류)는 input에 label을 붙이는 것. 서로 다른 세트로 나누는 느낌이다. 반면 Regression(회귀)는 continuous target을 예측하는 것이다. 따라서, 가격이 높아질 것인가 낮아질 것인가? 는 분류, 가격이 얼마가 될 것인가? 는 회귀라고 볼 수 있다.

 

+

이번 학기 데이터과학 수업하시는 교수님 랩실에서 BioBERT를 개발하셨다고 한다. 또 이 랩실은 DreamChallenges라는 bio-medicine분야의 캐글과 같은 대회들에서 상도 많이 타셨다. 진짜 진짜 내가 관심 있는 분야가 이런 분야였는데! 싶고... 심장이 뛰고 (?) ... 아무튼 수업 말고도 교수님 랩실에서 나온 논문 같은 거 도전해보기! 가 2023년 목표

'School/COSE471 데이터과학' Related Articles +

다중공선성이란?

회귀분석을 할 때 다중공선성을 고려해야 한다고 하는데, 과연 다중공선성이란 무엇일까?

다중공선성(Multicollinearity)는 회귀분석 시 독립변수들 간의 강한 상관관계가 나타날 때를 일컫는 용어다. 만약 변수들 간 다중공선성이 높다고 판단되면, 이 변수들은 더이상 독립변수라고 보기 어렵다. 회귀분석의 전제인 독립변수 X들을 통해 Y를 예측한다는 가정이 성립할 수 없게 되므로 다중공선성은 회귀분석의 심각한 문제 중 하나로 손꼽힌다.

 

VIF

Variance Inflation Factor의 약자인 VIF는 한국어로 번역하면 분산 팽창 인수다. 이 값은 독립변수의 다중공선성을 판단하기 위한 지표로 사용되며 계산식은 다음과 같다.

r_i는 i번째 변수를 제외한 회귀식의 R^2값이다.

보통 VIF 값이 10을 초과하면 다중공선성이 유의미하게 높다고 판단하여 제거한다. 왜 하필 10일까?

VIF > 10 식을 위에 나온 수식으로 대체하여 계산할 경우, r_i > 0.9 라는 결과가 나온다. 즉 i번째 변수가 식에서 빠져도 나머지가 Y를 90% 이상 설명할 수 있다는 뜻이다. 즉 제거해서 다른 값들로 대체해도 유의미하게 예측이 달라지지 않는다.

 

VIF in python

파이썬에서 VIF를 구하기 위해 모듈을 이용한다.

from statsmodels.stats.outliers_influence import variance_inflation_factor as vif

특정 데이터프레임에서 독립변수별로 VIF를 구하는 방법은 다음과 같다.

vif_factors = [vif(X.values, i) for i in range(0, X.shape[1])]
vif_report = pd.DataFrame({"variable": X.columns, "VIF Factors": vif_factors})

vif_report는 각 독립변수별 VIF가 저장된 데이터프레임이므로, 이를 확인하면 어떤 독립변수의 VIF가 큰지 작은지 알 수 있다. 그것을 보고 VIF가 10을 초과한다면 값을 제거하면 된다.

 

다른 회귀분석에서도 다중공선성을 고려해야 할까?

이 부분에 대해서 명확한 답을 찾지 못했다. 인터넷 자료를 뒤져봐도 선형회귀를 제외한 다른 회귀분석(예를 들어 로지스틱 회귀)에 다중공선성을 고려해야하는지에 관한 문제에 모두 다른 답을 내놓았기 때문이다.

그렇지만 다중공선성의 본질과 회귀분석의 가정을 생각해본다면, 다중공선성으로 인해 독립변수들 간의 독립성이 보장되지 않을 가능성이 있으므로, 모든 회귀분석에서 다중공선성을 고려해야 할 것이라고 판단하였다.

사실 내 말이 옳지 않을 수도 있다. 이 부분은 논문 같은 자료를 더 찾아볼 필요가 있다.

'CS study/머신러닝' Related Articles +

1. 새 repository 생성

github에 로그인하여 상단 +버튼을 통해 새로운 repository를 생성한다.

README file 추가를 해두면 나중에 repository 설명 추가할 때 요긴하게 사용할 수 있다.

repository의 주소가 있어야 해당 repository에 파일 업로드가 가능하다.

 

2. 원하는 파일 위치에서 git 실행

https://git-scm.com/

 

Git

 

git-scm.com

위 페이지에서 git을 다운로드 받아 설치한다.

업로드를 원하는 파일이 있는 폴더를 열고 빈 공간에 마우스 우클릭을 하여 Git Bash Here를 클릭한다.

 

3. git init

창에 다음과 같이 입력한다.

git init

 

4. git add

git add test.txt

원하는 파일을 git add 다음에 입력해준다.

해당 위치의 모든 파일을 add하려면 . 만 입력하면 된다.

 

5. git commit

git commit -m "메시지 내용"

커밋할 준비를 한다. 적고 싶은 메시지 내용을 따옴표 안에 적는다.

 

6. git remote add origin

git remote add origin 주소

원격 저장소와 연결한다. 연결하고자 하는 내 github repository 주소를 복사해서 붙여넣으면 된다.

단! git 프로그램에서 Ctrl+V는 작동하지 않으니 마우스 우클릭으로 붙여넣자.

 

8. git push

git push origin master

대망의 push 작업! 원격 저장소에 우리가 추가해뒀던 파일들을 업로드하자.

main 부분에 다른 branch 이름을 적으면 그 branch로 업로드가 된다.

중간 오류는 무시 바람

https://github.com/iamnotwhale/testtest

업로드 성공한 것을 확인할 수 있다.

 

GitHub - iamnotwhale/testtest

Contribute to iamnotwhale/testtest development by creating an account on GitHub.

github.com

아직도 git 쓰면서 오류 많이 나오는 나지만 ㅠㅠ 일단 업로드 과정이라도 덜 헷갈리라고 작성해본다.

다음에는 내가 git 사용하면서 만난 오류들에 대해서 포스팅해봐야겠다.

'CS study/기타' Related Articles +
1 2 3 4 5 6