2015-01-29 2 views
0

나는 임의의 포레스트를 만들었고 나는 가방 점수를 찾고 싶다.하지만 bag out of 나의 점수는 1.0이 나오고 있지만 그것은 1보다 작아야한다. 나의 샘플 크기 20000 요소로 구성되어 있습니다. 여기에 파이썬 코드입니다. 변경 사항을 알려주십시오. 여기 X는 데이터 집합의 수가 적고 Z는 참 레이블을 포함합니다.sklearn의 랜덤 포레스트 분류기를 사용하여 bagging하기

import csv 

import numpy as np 

from sklearn import preprocessing 

from sklearn import cross_validation 

from sklearn.ensemble import RandomForestClassifier 

with open('C:\Users\Harsh Bhandari\Desktop\letter.csv') as f: 

reader = csv.reader(f, delimiter='\t') 

    data = [(col1, int(col2), int(col3), int(col4),int(col5),int(col6),int(col7),int(col8),int(col9),int(col10),int(col11),int(col12),int(col13),int(col14),int(col15),int(col16),int(col17)) 

       for col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15,col16,col17 in reader] 

X=[] 

Y=[] 

i=0 

while i<20000: 

     t=data[i][1:] 

     X.append(t) 

     t=data[i][0] 

     Y.append(t) 

     i=1+i 

X=np.asarray(X) 

Y=np.asarray(Y) 

le = preprocessing.LabelEncoder() 

Z=le.fit_transform(Y) 

clf = RandomForestClassifier(n_estimators=100,oob_score=True) 

clf=clf.fit(X,Z) 

a=clf.predict(X) 

scores=clf.score(X,a) 

print scores 

답변

0

여기에 몇 가지 항목이 있습니다. Z는 점수 매개 변수가 같은 CLF로 정의 X

에 대한 진정한 레이블

당신이 clf.score을하고있다 (X, A) 하지만 clf.score을 수행해야한다 (X, Z) .score (X, true_labels_for_X) 대신에 y_true로 예측 한 값을 넣으면 의미가 없습니다. Sklearn이 이미 X에서 예측을 실행할 것이기 때문에 a를 통과 할 필요가 없습니다.

또한 을 통해 oobscore를 찾을 수 있습니다. clf.oob_score_