파이썬으로 기계 학습의 기본 흐름 요약

최근 기계 학습에 대해 공부했으므로 Python에서 구현할 때 어떤 단계로 수행하는지에 대해 요약했습니다.

데이터 전처리



기계 학습에서는 먼저 데이터를 읽거나 어떤 분포를 하고 있는지를 알아야 합니다. 그 절차에 대해 씁니다.

데이터 로드



데이터를 실제로 읽으려면 이전에 읽은 pandas의 read_csv라는 메소드를 사용하여 csv 파일을 읽습니다.
#ライブラリの読み込み
import pandas as pd
import numpy as np

#直下にあるhoge.csvを読み込む
df = pd.read_csv("./hoge.csv") 
#上から5行のみを取り出す
df.head() 

읽은 데이터 확인



기계 학습이라고 하면, 데이터를 돌진하면 어떻게든 해 준다고 하는 이미지가 있습니다만 실제로는 데이터를 확실히 볼 필요가 있습니다
예를 들어, 누락 값이 없거나 편차가 너무 크지 않거나 상관 관계가 있습니까?

기본 통계량



다음 코드를 입력하면 데이터 수, 평균값, 표준 편차, 최소값, 최대값 등을 단번에 알 수 있습니다.
#統計量の算出
df.describe() 

이런 식으로 기본 통계량을 일람으로 알 수 있습니다.


분포 확인



그렇다고 해도 표준 편차나 평균값이라고 하는 숫자를 보는 것만으로는 알기 어려우므로, 그래프로 하는 편이 인간에게 있어서는 알기 쉽습니다. 그 때문에 분포를 나타냅니다
%matplotlib inline
#seabornというグラフを表示するライブラリの読み込み
import seaborn as sns

#分布の確認
sns.distplot(df["x1"]) #先にデータを確認する(ここでは列x1のデータを確認)

이것은 데이터가 정규 분포를 따르는 것 같기 때문에 좋은 느낌의 데이터입니다.


상관 계수 확인



만약 전혀 상관관계가 없는 데이터라면, 학습시킨 곳에서 의미가 없기 때문에 상관관계수를 확인합니다. 그건 그렇고, 상관 계수는 -1에서 +1 사이이며, 높을수록 높을수록 상관 관계가 있습니다.
#相関係数の算出 
df.corr()
#相関係数をグラフで確認
sns.pairplot(df)

입력 변수와 출력 변수 분리



실제로는 $ y = w0x0 + w1x1 + w2x2 +...+$ 같은 것을 만드는 것이므로 데이터의 내용을 출력 변수인 y와 입력 변수인 x로 나눌 필요가 있습니다.
그 때 사용하는 것이 pandas의 iloc이라는 메소드입니다.
#df.iloc[行,列]とすることでその行と列のデータを取り出せる
 example = df.iloc[1,3]
結果 100
#最後の列-1まですべての行を取り出す(入力変数X)
 X = df.iloc[:,:-1]
#こう書いてもいいが汎用性は低い
 X = df.iloc[:,:最後の列番号]

#yを取り出す
 y = df.iloc[:,-1]

전처리된 데이터를 사용하여 기계 학습



위의 작업을 통해 기계 학습을 실제로 수행 할 준비가되었습니다. 다음부터 실제로 학습을 실시해 갑니다. 여기에서는 기계 학습 라이브러리의 scikit-learn을 사용합니다.

훈련 데이터와 검증 데이터로 나누기



기계 학습을 실시하는 목적은 데이터를 학습시키고, 미지의 데이터를 넣었을 때 예측하는 것이었습니다. 즉, 학습에 사용한 데이터는 사용하지 않는다는 것입니다.
당연합니다만, 학습에 이용한 데이터를 넣어 예측을 실시하면, 그 데이터로 학습했기 때문에, 정확한 대답이 나오지요? 라는 것입니다.

따라서 학습을 하기 전에 훈련 데이터(train)와 검증 데이터(test)로 나누어야 합니다.
from sklearn.model_selection import train_test_split

#訓練データと検証データの分割
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.4,random_state=1)

testsize는 훈련 데이터와 검증 데이터의 비율을 지정하고 있으며, 여기에서는 학습:훈련=6:4로 하고 있습니다.또 random_state는 고정으로 하는 것으로 재현성을 유지하고 있습니다

모델 구축 및 검증



scikit-learn을 사용하면 다음 코드만으로 모델 구축부터 검증까지 할 수 있습니다
이번 학습에 사용하는 모델은 중회귀 분석
#ライブラリのインポート
from sklearn.linear_model import  LinearRegression

#モデルの宣言(LinearRegressionは重回帰分析という意味)
model = LinearRegression()

#モデルの学習(パラメータの調整をする)
model.fit(X,y)

#パラメータの確認
model.coef_

#決定係数(予測の精度)0~1の間で高いほどいい
model.score(X,y)

#予測値の計算
x = X.iloc[0,:] #Xの一行目を取り出し
y_pred = model.predict([x])

모델 저장 및 불러오기



모델의 보존은 이하의 코드로 할 수 있습니다
#インポート
from sklearn.externals import joblib

#モデルの保存(hoge.pklという名前で保存
joblib.dump(model,"hoge.pkl")

모델 로드는 다음 코드로 수행합니다.
#hoge.pklの読み込み
model_new = joblib.load("hoge.pkl") 

#読み込んだモデルの予測値を表示
model_new.predict([x])[0]

이상이 기계 학습의 기본적인 흐름이 되고 있습니다 이번은 모델을 중회귀 분석으로 실시했습니다만, 예를 들어 로지스틱 회귀로 실시하고 싶다든가 SVM에서 실시하고 싶을 때도 기본적인 흐름은 같습니다

좋은 웹페이지 즐겨찾기