파이썬으로 기계 학습의 기본 흐름 요약
데이터 전처리
기계 학습에서는 먼저 데이터를 읽거나 어떤 분포를 하고 있는지를 알아야 합니다. 그 절차에 대해 씁니다.
데이터 로드
데이터를 실제로 읽으려면 이전에 읽은 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에서 실시하고 싶을 때도 기본적인 흐름은 같습니다
Reference
이 문제에 관하여(파이썬으로 기계 학습의 기본 흐름 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/carta5/items/b2b963eb33cdc446e2d2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#ライブラリの読み込み
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のデータを確認)
#相関係数の算出
df.corr()
#相関係数をグラフで確認
sns.pairplot(df)
#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에서 실시하고 싶을 때도 기본적인 흐름은 같습니다
Reference
이 문제에 관하여(파이썬으로 기계 학습의 기본 흐름 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/carta5/items/b2b963eb33cdc446e2d2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)