- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我编写了以下 Python 代码,用于在 UCI ML 存储库的 Forest CoverType 数据集上运行 RandomForestClassifier(使用默认参数设置)。然而,结果很差,准确率在 60% 左右,而这种技术应该能够达到 90% 以上(例如使用 Weka)。我已经尝试将 n_estimators 增加到 100,但这并没有带来太大的改善。
有什么想法可以让我在 scikit-learn 中使用这种技术获得更好的结果,或者性能不佳的原因是什么?
from sklearn.datasets import fetch_covtype
from sklearn.ensemble import RandomForestClassifier
from sklearn import cross_validation
covtype = fetch_covtype()
clf = RandomForestClassifier()
scores = cross_validation.cross_val_score(clf, covtype.data, covtype.target)
print scores
[ 0.5483831 0.58210057 0.61055001]
最佳答案
我设法通过使用 GridSearchCV
对您的模型进行了很好的改进
from sklearn.datasets import fetch_covtype
from sklearn.ensemble import RandomForestClassifier
from sklearn import cross_validation
from sklearn import grid_search
import numpy as np
covtype = fetch_covtype()
clf = RandomForestClassifier()
X_train, X_test, y_train, y_test = cross_validation.train_test_split(covtype.data,
covtype.target,
test_size=0.33,
random_state=42)
params = {'n_estimators':[30, 50, 100],
'max_features':['sqrt', 'log2', 10]}
gsv = grid_search.GridSearchCV(clf, params, cv=3,
n_jobs=-1, scoring='f1')
gsv.fit(X_train, y_train)
print metrics.classification_report(y_train, gsv.best_estimator_.predict(X_train))
print metrics.classification_report(y_test, gsv.best_estimator_.predict(X_test))
输出:
precision recall f1-score support
1 1.00 1.00 1.00 141862
2 1.00 1.00 1.00 189778
3 1.00 1.00 1.00 24058
4 1.00 1.00 1.00 1872
5 1.00 1.00 1.00 6268
6 1.00 1.00 1.00 11605
7 1.00 1.00 1.00 13835
avg / total 1.00 1.00 1.00 389278
precision recall f1-score support
1 0.97 0.95 0.96 69978
2 0.95 0.97 0.96 93523
3 0.95 0.96 0.95 11696
4 0.92 0.86 0.89 875
5 0.94 0.78 0.86 3225
6 0.94 0.90 0.92 5762
7 0.97 0.95 0.96 6675
avg / total 0.96 0.96 0.96 191734
这与 Kaggle leaderboard 上的分数相差不远。 (请注意,尽管 Kaggle 竞赛使用了更具挑战性的数据拆分!)
如果您想看到更多改进,那么您将不得不考虑不均匀的类别以及如何最好地选择您的训练数据。
注意
为了节省时间,我使用了比通常情况下更少的估计量,但是该模型在训练集上表现良好,因此您可能不必考虑这一点。
我使用了少量的 max_features
,因为这通常会减少模型训练中的偏差。尽管这并不总是正确的。
我使用 f1
评分,因为我不太了解数据集,而 f1
在分类问题上往往效果很好。
关于python - RandomForestClassifier 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38195766/
由于某种原因,每当我运行 ensemble.RandomForestClassifier() 并使用 .predict_proba() 方法时,它都会返回一个形状为 [n_classes, n_sam
我正在测试这段代码。 df1 = df[['Group', 'Sector', 'Cat2', 'Cat3', 'Cat4', 'Cat5', 'Cat6', 'Industry', 'Market'
我正在使用一个在每次迭代时生成数据的环境。我想保留先前迭代中的模型并将新数据添加到现有模型中。 我想了解模型拟合的工作原理。它将使新数据与现有模型相匹配,还是会使用新数据创建新模型。 调用新数据的拟合
我编写了以下 Python 代码,用于在 UCI ML 存储库的 Forest CoverType 数据集上运行 RandomForestClassifier(使用默认参数设置)。然而,结果很差,准确
from sklearn.ensemble import RandomForestClassifier from sklearn import tree rf = RandomForestClassi
我正在尝试攻击我的随机森林分类器。 clf = RandomForestClassifier(max_features="sqrt", n_estimators=500, n_jobs=-1, ver
在 section 1.9.2.1 中的 scikit-learn 文档中(摘录如下),为什么随机森林的实现与 Breiman 的原始论文不同?据我所知,在聚合分类器的集合时,Breiman 选择了多
我使用以下代码可视化 RandomForestClassifier 的结果: X, y = make_blobs(n_samples=300, centers=4,
我是机器学习新手,我正在尝试使用 scikit RandomForestClassifier 对文本进行分类。我遇到的问题是我的测试数据结果与 sklearn 分类报告不匹配。训练集大约有 25k 个
我一直在使用 sklearn 的随机森林,并且尝试比较几个模型。然后我注意到即使使用相同的种子,随机森林也会给出不同的结果。我尝试了两种方法:random.seed(1234) 以及使用随机森林内置的
这是一个新手问题。 我想使用 sklearn 中的 RandomForestClassifier 训练一个 Random Forest。我有几个变量,但在这些变量中,我希望算法在它训练的每一棵树中确定
在机器学习方面,我是初学者,我无法解释我从第一个程序中获得的一些结果。这是设置: 我有一个书评数据集。这些书可以用大约 1600 本书中的任意数量的限定符来标记。评论这些书的人也可以用这些限定符来标记
我正在尝试用中等大小的 numpy float 组来填充森林 In [3]: data.shape Out[3]: (401125, 5) [...] forest = forest.fit(data
我正在 RandomForestClassifier 上进行网格搜索,我的代码一直在工作,直到我更改了功能,然后代码突然生成以下错误(在 classifier.fit 行) 我没有更改任何代码,只是将
我正在 RandomForestClassifier 上进行网格搜索,我的代码一直在工作,直到我更改了功能,然后代码突然生成以下错误(在 classifier.fit 行) 我没有更改任何代码,只是将
我使用 ml.classification.RandomForestClassifier 构建了随机森林模型。我试图从模型中提取预测概率,但我只看到了预测类而不是概率。根据这个issue link ,
我正在使用 Scikit RandomForestClassifier 对不平衡数据进行分类。目标类数据为“1”或“0”(99% 的值为 0)。 我想分配一个权重。我怎样才能做到这一点。 我在文档中发
如何访问单个树并保存/加载 RandomForestClassifier 对象? 我只想查看每棵树的结构以确定哪个特征是重要的。我想将经过训练的分类器对象保存在文件或数据库中。怎么做? 最佳答案 您基
我正在尝试训练一个决策树模型,保存它,然后在我以后需要时重新加载它。但是,我不断收到以下错误: This DecisionTreeClassifier instance is not fitted y
我一直在运行此 website 上显示的“平均降低精度”度量的实现: 在示例中,作者使用的是随机森林回归器 RandomForestRegressor,但我使用的是随机森林分类器 RandomFore
我是一名优秀的程序员,十分优秀!