在sklearn中使用随机森林分类器进行装袋

时间:2015-01-29 14:20:12

标签: random-forest

我建了一个随机的森林,我想找到袋子得分。但我的袋子得分是1.0,但它应该小于1.我的样本大小由20000个元素组成。这是python代码。请告诉我们要做的更改。这里X是一个数据集的numpy数组,Z包含真正的标签。

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

2 个答案:

答案 0 :(得分:0)

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html 在分数中,您发送测试数据及其实际标签,在这里您传递的预测标签本身与您的预测相匹配 获得1.0分。

答案 1 :(得分:0)

我在这里看到了几件事。

你正在做clf.score(X,a) 但你应该做clf.score(X,Z) 其中Z是X

的真正标签

得分参数定义为clf.score(X,true_labels_for_X) 你改为将你预测的值作为y_true放置,这是没有意义的。因为Sklearn已经在X上运行预测,所以你不需要通过。

另外,你可以通过这样做找到oobscore print clf.oob_score _