Python 25

머신러닝 13강. 타이타닉 생존자 찾기

같은폴더에 .csv 파일이 있으면 read_csv( )를 통해 바로 읽을 수 있다. df = pd.read_csv("train.csv") df 데이터프레임으로 만들어준다. 1. 컬럼 뽑기 tn = df.loc[:, ['Pclass', 'Sex', 'Age', 'Survived']] tn 2. 정수화 loc를 사용해 Sex 행을 뽑은 다음 replace( )로 male, female 값을 1과 0으로 정수화 시켜주자. 기존데이터에 불변을 유지하지 않고 계속 변경하며 사용할 때 inplace = True를 걸어주면 된다. 디폴트는 불변을 유지하여 False이다. tn.loc[:, "Sex"].replace(['female', 'male'], [0, 1], inplace=True) 3. 결측값 제거 NaN이 ..

Python/머신러닝 2022.05.22

머신러닝 12강. pandas 고급 인덱싱

위와같은 데이터프레임이 있다. Survived = 1인 값이 살아남은 사람들이다. 행에서 살아남은 사람만 찾으려면 어떻게 해야할까? df['Survived'] 불리언 인덱싱을 사용해 Survived 데이터가 0보다 큰 것을 찾아보자. 불리언 인덱싱은 True, False를 리턴해준다. df['Survived'] > 0 행을 걸러줘야하니까 불리언 인덱싱을 사용해 True값만 출력해줄 수 있다. 핵심은 True, False로 마스킹하는 것이다. df.loc[df['Survived'] > 0, ['Survived']]

Python/머신러닝 2022.05.22

머신러닝 11강. pandas 데이터프레임 핵심

1. 데이터 선택하기 selection 이름만 봐도 projection과 같이 컬럼을 찾아내는 것이다. 데이터프레임에서 projection한다는 것은 시리즈를 찾는 것이다. # 1. 데이터 선택하기 (selection) df['A'] 여러개 컬럼도 뽑아낼 수 있다. df[['A', 'B']] 2. 데이터 범위 선택하기 여기서 선택한 범위는 행의 범위를 말한다. df[0:3] 3. 이름을 사용해서 선택하기 loc 행의 데이터를 가지고온다. # 3. loc df.loc[0]​ df.loc[0:2] loc를 쓰면 좋은점이 내가 원하는 행과 열까지 같이 뽑아준다. df.loc[:, ['A', 'B']] df.loc[[0], ['A', 'B']] 4. 위치를 사용해서 선택하기 iloc 해당 데이터를 찾기위해 인덱..

Python/머신러닝 2022.05.22

머신러닝 10강. pandas 데이터프레임 명령어

데이터프레임을 생성할 때는 dict 타입을 넣어준다. dict이 키 : 밸류의 모양으로 테이블과 똑같이 생겼으니까! df = pd.DataFrame({ 'A':1, 'B':pd.Timestamp('20220517'), 'C':pd.Series([1, 2, 3, 4]), 'D':'hello' }) # dict 타입 print(df) print(df.dtypes) 타입을 확인해보니 문자열은 str 타입이 아닌 오브젝트 타입이다. 데이터프레임의 명령어들을 알아보자. 1. head( ) 초반 5개의 데이터를 확인할 수 있다. df.head() df에 5개의 데이터가 없기 때문에 4개의 데이터가 출력되었다. 몇개의 데이터가 보고싶은지 파라미터로 지정도 가능하다. df.head(2) 2. tail( ) head와 ..

Python/머신러닝 2022.05.22

머신러닝 9강. pandas

다항 회귀를 사용하여 학습한 모델이 여전히 과소적합이 나왔다. 이 문제를 해결하려면 제곱보다 더 고차항을 넣어야 할 것 같은데 수동으로 제곱, 세제곱 등등 고차항 데이터를 넣기 힘들다... 어디까지 제곱하여 항을 추가해야 적절한지 판단하기도 어렵다. 선형 회귀는 특성이 많을수록 엄청난 효과를 내기 때문에 사이킷런의 PolynomialFeatures 클래스를 사용하여 여러가지 특성을 추가해보자. 여러개의 특성을 사용한 선형 회귀를 다중 회귀라고 한다. 1개의 특성을 사용했을 때 선형 회귀 모델이 학습하는 것은 직선이다. 2개의 특성을 사용했을 때 학습하는 것은 평면이다. 특성이 2개면 3차원 공간을 형성하는데 특성이 3개일 경우는 어떨까? 특성이 너무 늘어나서 4차원 공간 이상을 그리게 되면 우리가 상상하..

Python/머신러닝 2022.05.20

머신러닝 8강. 다항회귀

선형 회귀를 사용하면 내가 예측한 값과 실제값의 잔차(+, -)가 발생한다. 그 라이브러리가 하는 일은 이 잔차들의 제곱의 총 합을 구해준다. 이게 SSE이다. 제곱 에러의 합! 이 SSE의 평균(= MSE)을 줄여나가는 과정을 최소 제곱법이라고 한다. 이 최소제곱법을 하기 위한 방법을 경사 하강법이라고 했다. 다항 회귀는 항을 늘려 가짜 데이터를 만드는 것이다. 항을 RDB로 치면 컬럼을 말한다. 더 이상 추가할 특성이 없을 때 다항 회귀를 사용한다. 만약 데이터가 [1, 2, 3] 3개 라면 머신러닝이 잘 학습하지 못한다. 데이터 양을 뻥튀기 해주기 위해 각각의 데이터에 제곱한 값을 추가한다. [1, 2, 3, 1, 4, 9] 이렇게 제곱, 세제곱을 하여 데이터를 추가하는 것을 다항 회귀라고 한다. ..

Python/머신러닝 2022.05.20

머신러닝 7강. 선형회귀

길이라는 특성 하나만으로 무게를 예측한다는 게 말이 안 된다는 지난 시간의 문제점을 해결하기 위해 선형 회귀를 사용해볼 것이다. 선형 회귀에서 선과 점의 오차율은 음수가 될 수도 있기 때문에 모든 손실(잔차) 값에는 제곱을 해준 뒤 더해서 MSE(평균 오차 제곱)를 구한다. 구한 mse가 좋은 건지 알 수 없다. 여러 가지 선을 비교를 해보지 않았기 때문이다. 비교하기 위해 사용하는 게 미분이다. 미분으로 기울기를 변경해가며 mse가 최소인 지점을 찾아야 한다. 이 값이 최소가 되는 회귀식을 찾는 것을 최소 제곱법이라고 하고 방법은 경사 하강법(미분)을 사용해야 한다. 이 선형 회귀 알고리즘이 최소 제곱법을 찾아주고 이때 내부적으로 경사 하강법 알고리즘을 사용하는 것이다. from sklearn.line..

Python/머신러닝 2022.05.18

머신러닝 6강. k-최근접 이웃 회귀

지도 학습 알고리즘은 크게 분류와 회귀로 나뉜다. 회귀는 임의의 어떤 숫자를 예측하는 문제이다. 예측하려는 샘플에 가장 가까운 샘플 몇 개를 선택하여 이웃들의 타겟값의 평균이 예측 타겟값이 된다. 우선 농어의 길이만으로 무게를 예측해보자. import numpy as np import matplotlib.pyplot as plt perch_length = np.array([8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0, 21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5, 22.5, 22.7, 23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5, 27.3, 27...

Python/머신러닝 2022.05.17

머신러닝 5강. 결정계수

회귀 전제 조건 : 100% 정답은 없다. 길이가 3일 때 regressor는 무게가 5일 것으로 예측했지만 실제 무게는 6이였다. 이때 발생하는 간극을 오차라고 한다. SSE (Error Some of Squares) y의 평균과 regressor가 예측한 선 사이는 충분히 예측 가능한 범위라 하여 SSR이라고 한다. SSR (Regression Some of Squares) 그리고 SSE와 SSR을 더한 값을 SST라고 한다. SST (Total Some of Squares) 전제적으로 봤을 때 SSE의 평균이 가장 작아지도록 선을 그려야한다. 전체 분산의 평균 최소점 오차율이 작도록 직선의 기울기를 바꾸면서 SSE가 가장 작은 선을 찾는 알고리즘이 regressor이다.

Python/머신러닝 2022.05.17