임의 숲의 sklearn

'' ' 
    컬렉션 알고리즘 : 
        1. 전방 여기 
        2. 자기 중합 시간 : 매트릭스에서 임의로 결정 트리의 샘플을 선택 여분의 샘플링 방법으로 전체 샘플에 따라서 여러 결정 트리가 다른 트레이닝 샘플들을 포함 형성 
                    모델 예측의 일부 강력한 샘플의 영향을 약화 모델의 일반화 특성을 향상시킬 수 있습니다. 
        3. 임의의 숲 :자가 중합을 바탕으로, 때마다 당신은 의사 결정 트리 모델, 샘플의 일부뿐만 아니라 무작위 선택을 구축 할뿐만 아니라 무작위로 같은 알고리즘의 수집과 특성의 일부를 선택 
                    뿐만 아니라 예측 결과의 강한 샘플의 영향을 방지하고,하기 또한 더 일반화 모델의 예측 능력의 강력한 기능의 영향을 약화. (절도 -> 진정한 가치) 
            랜덤 포레스트 관련 API : 
                SE의 AS sklearn.ensemble 가져 오기 
                # 임의 숲 회귀 모델 (알고리즘의 집합에 속하는) 
                의사 결정 나무 (10)의 최대 깊이 : #의 MAX_DEPTH 
                # n_estimators : 1000 의사 결정 트리 건물, 교육 모델 
                #의 min_samples_split이 숫자 샘플들의 최소 수보다 작은 경우, 서브, 더 이상 아래로 분할되지 
                모델 = se.RandomForestRegressor (MAX_DEPTH = 10 n_estimators = 1000 min_samples_split = 2)

    케이스 : 공유 자전거는 자전거 배달을 공유하는 방법을 결정하기 위해 분석을 필요로한다. 
        1. 데이터 읽기 bike_day.csv 
        2. 데이터 정렬 설정 입력 및 출력 훈련 집합으로 설정하고 테스트 설정 
        3. 모델 ---- 임의의 숲, 교육 모델 
        4. R2는 출력의 테스트 세트를 사용하여 점수 
        , 5. 출력 특성의 중요성을 및 이미지를 렌더링 
'' 
오기 NP AS NumPy와
 임포트 MP AS matplotlib.pyplot
 오기 SM AS sklearn.metrics
 오기 SE AS sklearn.ensemble   #의 컬렉션 알고리즘 모듈 
오기 sklearn.utils SU의 AS   #가 데이터 중단 

'' ===== ============================ 분석 bike_day.csv ================== ============= '' 
# 데이터 판독 방법. 1 
# 데이터 = [] 
#: 오픈 ( './ ml_data / bike_day.csv', 'R')와 같이 F 
#      f.readlines ()의 라인 : 
#의          - : data.append (.split ( '') 라인 [1]) 
# 인쇄 (데이터) 
#의 데이터 = np.array (데이터) 

# 读取数据2 개方法 
데이터 = np.loadtxt ( ' ./ml_data/bike_day.csv ' , 풀고 = 거짓, DTYPE = ' U20 ' , 구분 = ' , ' )
 인쇄 (data.shape) 
day_headers 용 = 데이터 [0 2:13 ]
 인쇄 (day_headers) 
X = np.array (데이터 [1 :, 2시 13분] DTYPE = " F8 ") Np.array = (데이터 [1 :. -1] DTYPE은 = " F8 " ) 

# 트레이닝 세트 및 테스트 세트 분할 
X를, Y는 = su.shuffle. (X, Y, random_state = 7)   # 파쇄 샘플 
train_size = INT (LEN (X 축) * 0.9 ) 
train_x, test_x, train_y, test_y = 상기 Y- 상기 X- : [train_size] train_size 같이, X- [: train_size 같이, Y- [train_size :] 

#의 훈련 모델 
모델 = se.RandomForestRegressor (MAX_DEPTH = 10, n_estimators = 1000 = min_samples_split 3. ) 
model.fit (train_x, train_y) 

#의 모델 테스트 
pred_test_y = model.predict (test_x) 

#의 모델 평가 
인쇄 ( ' r2_score 점수의 bike_day : ', Sm.r2_score (test_y, pred_test_y)) 

#의 출력 모델의 기능 중요도 
day_fi = model.feature_importances_ 

'' ' ========================== ======= =============================== 분석 bike_hour.csv '' ' 
#은 데이터 읽기 
데이터를 = [] 
열기 (함께 ' ./ml_data/bike_hour.csv ' , ' R & LT ' ) F AS :
      광고 f.readlines () 
        data.append (라인 [: -1] .split ( " , " )) 

데이터 = np.array (데이터) 
hour_headers = 데이터 [0, 2시 14분 ]
 프린트(hour_headers) 
X = np.array (데이터 [1 :., 2시 14분] DTYPE은 = " F8 " ) 
Y = np.array (데이터 [1 :. -1] DTYPE은 = " F8 " ) 

#의 분할 테스트 세트 상기 트레이닝 세트의 
X, Y = su.shuffle (X, Y, random_state = 7).   #는 샘플 파쇄 
train_size = INT (LEN (X) * 0.9 ) 
train_x, test_x, train_y, test_y =의 X [: train_size, X가 [ train_size :], Y [: train_size], Y [train_size :] 

#의 훈련 모델 
모델 = se.RandomForestRegressor (. MAX_DEPTH = 10 n_estimators = 1000, = min_samples_split 3 ) 
model.fit (train_x, train_y) 

# 용 모델 테스트 
pred_test_y =model.predict (test_x) 

#의 모델 평가 
인쇄 ( ' r2_score 점수의 bike_hour : ' , sm.r2_score (test_y, pred_test_y)) 

#의 출력 모델 기능의 중요성 
hour_fi = model.feature_importances_ 

#은 이미지의 중요성이 bike_day 기능 표시 
MP를. 도 ( " 피쳐 중요도 ' , facecolor = '를 LightGray ' ) 
mp.rcParams [ ' font.sans serif- ' = ' SimHei ' 
mp.subplot ( 211 ) 
mp.title ( ' Bike_day Fi를 ' ) 
mp.ylabel ( '중요성 기능 ' ) 
mp.grid (을 lineStyle = " : " ) 
sorted_indexes = day_fi.argsort () [:: - 1.]   # 표준 순서가 하강에서, 
X = np.arange (day_headers.size) 
mp.bar ( X, day_fi [sorted_indexes, 0.7, 컬러 = ' DodgerBlue ' 라벨 = ' BDFI ' ) 
mp.xticks (X, day_headers [sorted_indexes])   #의 집합 X 좌표 
mp.tight_layout () 
mp.legend () 

#에 무승부 화상의 중요성 bike_hour 특징 
mp.subplot (212 ) 
mp.title ( ' bike_hour FI를 ' )
mp.ylabel ( ' 피쳐 중요성 ' ) 
mp.grid (을 lineStyle = " : " ) 
sorted_indexes = hour_fi.argsort (). :: - 1]   #의 내림차순으로 정렬 첨자 
X = np.arange (hour_headers.size ) 
mp.bar (X, hour_fi [sorted_indexes, 0.7, 색상 = ' OrangeRed에 ' 라벨 = ' BHFI ' ) 
mp.xticks (X, hour_headers [sorted_indexes])   #의 집합 X 좌표 
mp.tight_layout () 
mp.legend을 () 

mp.show () 




출력 : 
( 732, 16 ) 
[ ' 계절'  ' 년을 '  ' mnth '  ' 휴일 '  ' 요일 '  ' 의 workingday '  ' weathersit '  ' 임시 ' 
 ' atemp '  ' 허밍 '  ' 풍속을 ' ] 
bike_day的r2_score得分: 0.8929064136199945 
[ ' 시즌 '  ' '  ' mnth '  ' 시간 '  '휴일 '  ' 주중 ' ' 의 workingday '  ' weathersit ' 
 ' 온도 '  ' atemp '  ' 잡음 '  ' 풍속을 ' ] 
bike_hour的r2_score得分: 0.9185230199218621

  

추천

출처www.cnblogs.com/yuxiangyang/p/11184890.html