2015-01-29 2 views
0

Я построил случайный лес, и я хочу найти сумку из сумки. Но мой счет из сумки составляет 1,0, но он должен быть меньше 1.My размер выборки состоит из 20000 элементов. Вот код python. Пожалуйста, сообщите, какие изменения должны быть сделаны. Здесь X - массив с множеством наборов данных, а Z содержит истинные метки.Багаж с использованием случайного классификатора леса в sklearn

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

Я вижу здесь пару вещей.

вы делаете clf.score (X, а) , но вы должны делать clf.score (X, Z), где Z истинной метка для X

параметр оценки определяются как такие CLF .score (X, true_labels_for_X) вы вместо этого ставите значения, которые вы предсказали как y_true, которые не имеют смысла. так как Sklearn уже выполнит предсказание на X, вам не нужно передавать a.

Кроме того, вы можете найти oobscore of print clf.oob_score_

Смежные вопросы