gpt4 book ai didi

python - 解决 scikit learn 中随机森林分类器的问题

转载 作者:太空宇宙 更新时间:2023-11-03 18:33:38 25 4
gpt4 key购买 nike

我正在尝试运行 sci-kit learn 中的随机森林分类器,并得到可疑的错误输出 - 不到 1% 的预测是正确的。该模型的表现比机会差得多。我对 Python、ML 和 sci-kit learn 相对较新(三重打击),我担心的是我缺少一些基本的东西,而不是需要微调参数。我希望有更多经验丰富的人来查看代码并查看设置是否有问题。

我试图根据单词出现次数来预测电子表格中行的类别 - 因此每行的输入是一个数组,表示每个单词出现的次数,例如[1 0 0 2 0 ... 1]。我使用 sci-kit learn 的 CountVectorizer 来进行此处理 - 我向它提供包含每行中单词的字符串,然后它输出单词出现数组。如果此输入由于某种原因不适合,则可能是问题出问题的地方,但我在网上或文档中没有找到任何表明这种情况的信息。

目前,森林的回答正确率约为 0.5%。使用完全相同的输入与 SGD 分类器产生接近 80% 的结果,这表明我正在做的预处理和矢量化很好 - 这是 RF 分类器特有的东西。我的第一 react 是寻找过度拟合,但即使我在训练数据上运行模型,它仍然几乎一切错误。

我已经尝试过树木的数量和训练数据的数量,但这对我来说似乎没有太大改变。我试图只显示相关代码,但如果有帮助的话可以发布更多内容。第一篇 SO 帖子,感谢所有想法和反馈。

#pull in package to create word occurence vectors for each line
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(min_df=1,charset_error='ignore')
X_train = vectorizer.fit_transform(train_file)
#convert to dense array, the required input type for random forest classifier
X_train = X_train.todense()

#pull in random forest classifier and train on data
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators = 100, compute_importances=True)
clf = clf.fit(X_train, train_targets)

#transform the test data into the vector format
testdata = vectorizer.transform(test_file)
testdata = testdata.todense()


#export
with open('output.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile)
for item in clf.predict(testdata):
spamwriter.writerow([item])

最佳答案

如果使用随机森林 (RF),您在训练集 X_train 上的表现非常糟糕,那么肯定有问题,因为您应该得到一个巨大的百分比,高于 90%。尝试以下操作(首先是代码片段):

print "K-means" 
clf = KMeans(n_clusters=len(train_targets), n_init=1000, n_jobs=2)

print "Gaussian Mixtures: full covariance"
covar_type = 'full' # 'spherical', 'diag', 'tied', 'full'
clf = GMM(n_components=len(train_targets), covariance_type=covar_type, init_params='wc', n_iter=10000)

print "VBGMM: full covariance"
covar_type = 'full' # 'spherical', 'diag', 'tied', 'full'
clf = VBGMM(n_components=len(train_targets), covariance_type=covar_type, alpha=1.0, random_state=None, thresh=0.01, verbose=False, min_covar=None, n_iter=1000000, params='wc', init_params='wc')

print "Random Forest"
clf = RandomForestClassifier(n_estimators=400, criterion='entropy', n_jobs=2)

print "MultiNomial Logistic Regression"
clf = LogisticRegression(penalty='l2', dual=False, C=1.0, fit_intercept=True, intercept_scaling=1, tol=0.0001)

print "SVM: Gaussian Kernel, infty iterations"
clf = SVC(C=1.0, kernel='rbf', degree=3, gamma=3.0, coef0=1.0, shrinking=True,
probability=False, tol=0.001, cache_size=200, class_weight=None,
verbose=False, max_iter=-1, random_state=None)
  1. 不同的分类器,sci-kit learn 中的界面基本上总是相同的,看看它们的表现如何(也许 RF 并不是真正最好的)。参见上面的代码
  2. 尝试创建一些随机生成的数据集以提供给 RF 分类器,我强烈怀疑生成 vectorizer 对象的映射过程中出现问题。因此,开始创建您的 X_train 并查看。

希望有帮助

关于python - 解决 scikit learn 中随机森林分类器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21963486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com