我建了一个随机的森林,我想找到袋子得分。但我的袋子得分是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
答案 0 :(得分:0)
http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html 在分数中,您发送测试数据及其实际标签,在这里您传递的预测标签本身与您的预测相匹配 获得1.0分。
答案 1 :(得分:0)
得分参数定义为clf.score(X,true_labels_for_X) 你改为将你预测的值作为y_true放置,这是没有意义的。因为Sklearn已经在X上运行预测,所以你不需要通过。
另外,你可以通过这样做找到oobscore print clf.oob_score _