首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >偏移随机森林分类器scikit学习

偏移随机森林分类器scikit学习
EN

Stack Overflow用户
提问于 2016-08-18 06:46:39
回答 1查看 311关注 0票数 0

我用python编写了一个程序,使用机器学习算法对数据进行预测。我使用Scikit学习中的函数RandomForestClassifier来创建一个随机森林来进行预测。

该程序的目的是预测未知的天体物理源是脉冲星还是agn;因此它在已知数据上训练森林,然后对未知数据进行预测,但它不起作用。该程序预测未知数据都是脉冲星或全agn,它很少预测不同的结果,但并不正确。

下面我将描述我的程序的段落。

它创建了一个包含所有源数据的数据框: all_df它由十列组成,其中九列用作预测,一列用作目标:

代码语言:javascript
复制
predictors=all_df[['spec_index','variab_index','flux_density','unc_ene_flux100','sign_curve','h_ratio_12','h_ratio_23','h_ratio_34','h_ratio_45']]
targets=all_df['type']

type列包含每个震源的标签“pulsar”或“agn”。

在程序中连续使用预测器和目标值来训练森林。

该程序使用Scikit Learn中的函数train_test_split将预测因子和目标划分为两组,训练和测试分别占总数的70%和30%:

代码语言:javascript
复制
pred_train, pred_test, tar_train, tar_test=train_test_split(predictors, targets, test_size=0.3)

这些集合中的数据是混合的,因此程序会对这些集合的索引进行排序,而不会更改数据位置:

代码语言:javascript
复制
pred_train=pred_train.reset_index(drop=True)
pred_test=pred_test.reset_index(drop=True)
tar_train=tar_train.reset_index(drop=True)
tar_test=tar_test.reset_index(drop=True)

在此之后,程序创建并训练随机森林:

代码语言:javascript
复制
clf=RandomForestClassifier(n_estimators=1000,oob_score=True,max_features=None,max_depth=None,criterion='gini')#,random_state=1)
clf=clf.fit(pred_train,tar_train)

现在,程序对测试集进行预测:

代码语言:javascript
复制
predictions=clf.predict(pred_test)    

在这一点上,程序似乎起作用了。

现在,它将另一个包含未知数据的数据帧传递给上面创建的森林,我得到了前面描述的坏结果。你能帮帮我吗?这个问题可能是随机森林分类器中的偏移量,但我没有得到修改随机森林分类器选项的有意义的结果。如果你需要,我可以给你进一步的解释。提前谢谢。

再见,法比奥

PS:我也尝试了交叉验证:我将训练集分为训练集和测试集,以相同的比例(0.7和0.3)再次创建、训练和测试森林,然后在初始测试集上进行测试,修改随机森林分类器选项以获得更好的结果,但我没有任何改进。

EN

回答 1

Stack Overflow用户

发布于 2016-08-22 01:29:24

谢谢你们的回复,伙计们。

正如所建议的那样,我在“测试”数据和“未知”数据中绘制了预测因子的曲线图;分布通常是相似的,但我更喜欢用直方图来表示。所以我试着做直方图,但我不能同时针对测试和未知数据,使用:

代码语言:javascript
复制
pylab.hist(unid_df.spec_index,bins=30)

我获得了: TypeError: len() of unsized

我还没有找到解决方案,我不知道这个错误是否会对预测产生负面影响。

补充信息:各种预测因子的范围不同。测试和未知数据的相应预测器的范围是相同的,但在少数情况下,测试数据范围比未知数据的相应预测器具有更大的数量级。这是由于某些点的值比集合中的大多数其他点大得多。

再次感谢。再见,法比奥

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39007386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档