import [라이브러리] as [사용할 이름]
: 데이터 분석을 위해 사용할 파이썬 라이브러리 불러오기 (matplotlib, pandas, numpy)
ex) import numpy as np
(2) 파이썬 파일 불러오기(read_csv)
import pandas as pd
data = pd.read_csv('파일경로/파일이름.csv')
: 데이터가 있는 csv 파일을 불러오기 위해선 pandas 라이브러리 불러와야함
read_csv() 함수로 원하는 파일을 불러옴 -> pandas의 DataFrame 자료형으로 볼러옴
(3) 파이썬 행 열 갯수 관찰하기(shape)
[DataFrame 변수명].shape
멤버 변수 shape : Dataframe의 행과 열 갯수에 대한 정보
실습 : train.shape
test.shape
(4) 파이썬 데이터 확인하기(head())
import pandas as pd
train = pd.read_csv('data/train.csv')
train.head() # train 데이터의 상단 5개 행 출력
head() : 데이터의 상단 부분만 출력하는 함수
tail() : 데이터의 하단 부분만 출력하는 함수
실습: import pandas as pd
train = pd.read_csv('data/train.csv')
test = pd.read_csv('data/test.csv')
train.head(10) #상위 10개 데이터 불러오기
(5) 파이썬 결측치 확인하기(is_null() )
import pandas as pd
import numpy as np
df = pd.DataFrame({
'name' : ['kwon', 'park', 'kim'],
'age' : [30, np.nan, 19],
'class' : [np.nan, np.nan, 1]
}]
df.isnull()
결측치(missing value) : 값이 없는(NULL, NA) 데이터, pandas에서는 NaN
isnull() : DataFrame에서 결측치가 있는 지 없는 지 검사(True, False)
sum() : isnull() 뒤에 sum() 함수 추가하면 각 열 별 결측치의 수 확인 가능
#실습코드
import pandas as pd
train = pd.read_csv('data/train.csv')
test = pd.read_csv('data/test.csv')
print(train.isnull())
print('\n------------------------train.csv 각 열 별 결측치 수------------------------\n')
print(train.isnull().sum())
2. 전처리
(1) 파이썬 데이터 기본 정보 확인하기(info())
df.info()
info() : 피쳐들의 기본 정보(결측치와 데이터 타입) 확인 가능
-> 결측치 있을 시 모델링 전에 처리 해야 함.
실습 코드
: test.info()
train.info()
(2) 파이썬 결측치 삭제, 대체(dropna, fillna)
DataFrame.dropna()
DataFrame.fillna()
dropna() : 결측치를 갖는 행을 Dataframe 에서 삭제
fillna() : 모든 결측 치를 인자 값으로 대체 가능
#실습 코드
import pandas as pd
train = pd.read_csv('data/train.csv')
test = pd.read_csv('data/test.csv')
train = train.dropna()
test = test.fillna(0)
3. 모델링
(1) 파이썬 scikit-learn
import sklearn
from sklearn.tree import DecisionTreeClassifier
:scikit-learn 라이브러리 불러오기
(2) 파이썬 모델 개념(의사결정나무)
의사 결정 나무 : 결정 트리는 의사 결정 규칙과 그 결과들을 트리 구조로 도식화 한 의사 결정 지원 도구의 일종
각 행 마다 하나의 피쳐를 정해서 해당 피쳐의 값에 대해 특정한 하나의 값을
정한다면 모든 행들을 두 개의 노드로 이진 분류(Binary decision rule) 가능
* 특정 값을 정하는 의사 결정 나무 -> 한쪽 방향으로 쏠리게 하는 특정 값 찾기 (불순도 계산을 통해 찾음)
import sklearn
from sklearn.tree import DecisionTreeClassifier
(3) 파이썬 모델선언(의사결정나무)
from [라이브러리] import [모듈]
model = 모듈명()
[실습 코드]
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
(4) 파이썬 모델 훈련(의사결정 나무)
fit(X, Y) : 모델을 훈련 시키는 함수 (X: 예측에 사용되는 변수, Y:예측결과 변수)
X_train = train.drop(['제외할컬럼명'], axis=1)
Y_train = train['예측할컬럼명']
model = DecisionRegressior()
model.fit(X_train, Y_train)
#실습코드
X_train = train.drop(['count'], axis=1) #'count' 피쳐를 가진 열을 제외한 데이터
Y_train = train['count'] #'count' 피쳐의 데이터
model = DecisionTreeRegressor()
model.fit(X_train, Y_train)
(5) 파이썬 테스트예측
[할당할 array] = mode.predict(test)
predict() : 훈련된 모델에서 predict() 메서드에 예측하고자 하는 data를 인자로 넣어 결과 array 할당
[실습코드]
predict = model.predict(test)
predict[:5] #상위 5개만 출력
(6) 파이썬 to_csv() (제출파일생성)
#submission.csv 파일 df 파일로 불러오기
submission = pd.read_csv('data/submission.csv')
#submission df 파일의 count 피쳐에 예측결과 할당하기
submission['count']= pred
#제출파일 생성하기
submission.to_csv('sub.csv', index=False)
Lv1. 복습 코드
import pandas as pd
train = pd.read_csv('data/train.csv')
test = pd.read_csv('data/test.csv')
train.head()
test.head()
train.shape
test.shape
train.info()
test.info()
train = train.dropna()
test = test.fillna(0)
print(train.isnull().sum())
X_train = train.drop(['count'], axis=1)
Y_train = train['count']
model = DecisionTreeRegressor()
model.fit(X_train, Y_train)
pred = model.predict(test)
submission = pd.read_csv('data/submission.csv')
submission['count'] = pred
submission.to_csv('sub.csv',index=False)