树分类器的极高准确性指标

我正在进行一个项目,将总统辩论的推文分类为每个候选人的中性、积极和消极类别。(不是当前的辩论数据集)。我使用决策树决策树集成AdaBoost进行训练。问题是我得到了100%的准确率,这非常奇怪且不可能。

我使用的是词袋模型形式的数据。词汇表中的每个词根据是否出现在每条推文中,用0/1表示。我在问题末尾附上了统计数据。df_obama是一个包含所有关于奥巴马的推文的数据框架。

df_Obama = pd.DataFrame.from_csv("../data/Obama_BagOfWords.csv")df_Obama = df_Obama.reindex(np.random.permutation(df_Obama.index)).reset_index()dataFeatures = df_Obama[allAttribs_Obama]targetVar = list(df_Obama['Class'])splitRatio = 0.9splitPoint = int(splitRatio*len(dataFeatures))dataFeatures_train = dataFeatures[:splitPoint]dataFeatures_test = dataFeatures[splitPoint:]targetVar_train = targetVar[:splitPoint]targetVar_test = targetVar[splitPoint:]clfObj = tree.DecisionTreeClassifier()clfObj.fit(dataFeatures_train,targetVar_train)preds = list(clfObj.predict(dataFeatures_test))accScore = accuracy_score(targetVar_test,preds)labels = [1,-1,0]precision = precision_score(targetVar_test,preds,average=None,labels=labels)recall = recall_score(targetVar_test,preds,average=None,labels=labels)f1Score = f1_score(targetVar_test,preds,average=None,labels=labels)print("Overall Acurracy",accScore)print("precision",precision)print("recall",recall)print("f1Score",f1Score)Overall Acurracy 1.0precision [ 1.  1.  1.]recall [ 1.  1.  1.]f1Score [ 1.  1.  1.]

我实在无法理解为什么会这样?为什么这些指标如此之高? 我还尝试了不同的训练-测试分割比例,结果似乎没有变化。

注意:这是数据信息:

df_Obama.info()<class 'pandas.core.frame.DataFrame'>RangeIndex: 5465 entries, 0 to 5464Columns: 13078 entries, level_0 to zzzzzzzzzzdtypes: int64(13078)memory usage: 545.3 MBdf_Obama.head(3)0023Washington  08hayabusa  09Its   .... 09what 1000000th   0               1           0            1       01               0           0            0       00               0           0            0       0

回答:

分类器是否能看到目标值?df_Obama['Class']是否包含在特征数组中?这一点不清楚,因为你没有展示allAttribs_Obama的值。

另外,请查看scikit-learn关于决策树的文档,特别是:

“决策树在特征数量大的数据上容易过拟合。”

你可能需要尝试减少特征空间(查看scikit-learn的特征选择文档)。

顺便提一下,你可以使用sklearn.model_selection.train_test_split来创建训练和测试集。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注