ML/도서

핸즈온 머신러닝 2장

열심히해요 2021. 4. 2. 19:48

 

파일 불러오기

모듈명 설명
os  
shutil 고수준 파일 연산.
파일과 파일 모음에 대한 여러가지 고수준(?) 연산을 제공.
파일 복사, 삭제 등
tarfile gzip, bz2, lzma압축을 사용할 수 있음. tar를 읽고 쓸 수 있음.
urllib url 처리 모듈모듈

모듈명 설명
os 
shutil 고수준 파일 연산.
파일과 파일 모음에 대한 여러가지 고수준(?) 연산을 제공.
파일 복사, 삭제 등
tarfile gzip, bz2, lzma압축을 사용할 수 있음. tar를 읽고 쓸 수 있음.
urllib url 처리 모듈

os.mkdir : 폴더 생성

os.makedirs : 폴더를 재귀적(?)으로 생성.(exist_ok 설정시 해당 파일 있어도 오류 안뜸)

이게 무슨말이냐? 

mkdir로 폴더를 생성할때, 지정한 경로에 폴더가 없으면 FileNotFoundError가 뜸.

mkdirs는 지정한 경로에 맞는 폴더가 없으면 직접 생성해 나감으로써 최종적으로 지정한 경로에 폴터가 생성 되도록 함.

import os


path = './new_dir/temp'		# 작업공간 상에 new_dir이 없는 경우.

os.mkdir(path)			# FileNotFoundError 발생
os.mkdirs(path, exist_ok=True)	# new_dir 생성 -> temp 생성(Error 미발생)

urllib.request.urlretrieve(url, path/savename) : 파일 저장

tarf = tarfile.open(tar_path/filename) : tar 파일 열기

tarf.extractall(save_path) : 압축 풀기

tarf.close() : tar 파일 닫기

 


데이터프레임 다루기

sklearn  
train_test_split from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=42, stratify=y)
train, test set을 y비율을 유지하며 분리함.
데이터프레임을 원하는 만큼 넣을 수 있고 친절하게 다 분리해줌. W,X,Y,Z ...
StratifiedShuffleSplit 데이터를 Stratified Sampling 할 때 사용.
분할한 데이터를 반환해주는 것이 아니라, 인덱스를 반환해줌
CV에 사용됨
sss = StratifiedSuffleSplit(n_split, test_size, random_state)
for train_idx, test_idx in sss.split(df, df['stratified columns']):
    train, test = df.loc[train_idx], df.loc[test_idx]
n_split : 분할 횟수
SimpleImputer from sklearn.impute import SimpleImputer
SimpleImputer(strategy='median')
결측치 채워줌
joblib.dump 큰 넘파이 배열을 저장하는데 아주 효율적인 패키지.
사이킷런 모델을 저장할 수 있음
import joblib
joblib.dump(model, "model.pkl")
model_loaded = joblib.load("my_model.pkl")
   
df.info() 컬럼별로 자료형, 결측치 제외 총 count알 수 있음
df.describe() 컬럼별로 기초통계량 확인 가능(범주형 제외)
df['col'].value_counts() 각 범주별 count
df.plot

strat_train.plot(kind="scatter", x="longitude", y="latitude", alpha=0.2,
s=strat_train['population']/100, label='population',figsize=(14,10),
c='median_house_value',cmap=plt.get_cmap('BuPu'), colorbar=True, sharex=False)

s : 버블의 크기, c : 버블의 색깔, cmap :버블 색매칭

   
pd.cut binning 해주는 함수
pd.cut(df['col'], bins=[0,1,2,3,np.inf], labels=[0,1,2,3])
   
numpy  
np.arange(start, stop, step) start부터 stop-1 까지 step간격을 갖는 수열생성
start = 0, step=1을 default 값으로  가짐
np.random.permutation() 인자로 하나의 값이나 seq를 받아서 array를 랜덤으로 섞어줌.
한개의 값을 받는 경우 -> 0~값(간격은 1)을 갖는 array로 변환 후 섞어줌
seq를 받는 경우 그대로 섞어줌
np.random.suffle() 인자로 array만 받을 수 있음.
permutation의 경우 본래의 array는 변경되지 않지만,
suffle의 경우 본래의 array를 변경시킴.