[기계 학습 수기] 랜 덤 숲 과 디지털 인식
소개 및 데이터 주소:https://www.kaggle.com/c/digit-recognizer
해법: python. sklearn 의 랜 덤 숲 방법
... 뿐만 아니 라
# -*- coding: utf-8 -*-
"""
Created on Wed Nov 25 20:39:46 2015
@author: Ning LI
"""
import numpy as np;
import pandas as pd;
import sklearn as sk;
from sklearn.ensemble import RandomForestClassifier as rf_clf
from sklearn import metrics
#
df_train=pd.read_csv('train.csv')
df_test=pd.read_csv('test.csv')
X_train=df_train.iloc[:,1:]
y_train=df_train.iloc[:,0]
X_test=df_test.iloc[:]
#
clf_initial=rf_clf(n_estimators=33)
# KFold , X_train 5 , 4 , 。
clf_validated=KFold_cv(X_train.values, y_train.values, clf_initial)
# , , X_test
y_pred=clf_validated.predict(X_test)
# , ImageId Label , csv
ImageId=[i+1 for i in range(y_pred.shape[0])]
pred_packdata=np.vstack((ImageId,y_pred)).transpose()
df_pred=pd.DataFrame(pred_packdata, columns=['ImageId','Label'])
df_pred.to_csv('pred.csv')
#
from scipy.stats import sem
import sklearn.cross_validation as cross_valid
def KFold_cv(X_train,y_train, clf):
# leave one out: train 4: test 1
# LeaveOneOut
num=X_train[:].shape[0]
kf=cross_valid.KFold(num,5)
for train_index, test_index in kf:
# to train
X_train_cv = X_train[train_index]
print ("out of train_index{0.3f}"),format(train_index)
y_train_cv = y_train[train_index]
# to validate
X_test_cv = X_train[test_index]
y_test_cv = y_train[test_index]
clf=clf.fit(X_train_cv,y_train_cv)
y_test_pred=clf.predict(X_test_cv)
accuracy=metrics.accuracy_score(y_test_cv,y_test_pred)
print ("Mean score: {0:.3f} (+/-{1:.3f})").format(np.mean(accuracy),sem(accuracy))
return clf
교차 검증 시 정 답 률 은 95.6 - 95.8 로 의합 문제 가 없 었 다.
테스트 집의 정 답 률 은 95.614 이다.두 개의 차 이 는 매우 작다.
특히 랜 덤 숲 은 적합 하지 않 기 때문에 걱정 할 필요 가 없다 는 자료 (참고 자료 참조) 를 봤 다.
두 개의 랜 덤 성 때문에
하 나 는 모든 나무의 훈련 샘플 로 부츠 를 뽑 는 법 boottstrap 으로 나 온 것 이기 때문에 서로 다른 나무 간 의 훈련 샘플 의 차이 가 비교적 크기 때문에 훈련 샘플 에 있어 서로 다른 나무의 예측 방향 이 다 르 기 때문에 전체 삼림 이 훈련 샘플 에 대한 항 용 력 이 매우 강하 다.
또 하 나 는 모든 나무 가 훈련 하 는 과정 에서 훈련 에 사용 되 는 특징 도 무 작위 로 선택 되 어 모든 나무 가 모든 특징 에 대한 예측 능력 이 고 르 게 된다 는 것 이다.
상기 두 개의 랜 덤 숲 은 오 버 피 팅 에 동의 하지 않 는 다 는 것 을 결정 했다.
참고 자료
1 scikit - learn KFold 교차 검증 방법
http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.KFold.html
2. 랜 덤 숲 은 오 버 피 팅 이 쉽 지 않 습 니 다.
http://www.cnblogs.com/maybe2030/p/4585705.html
3. Learning Scikit-Learn. Garreta. et al
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.