【问题标题】:Facing Issue with the decision tree classifier implementation in scikit learnscikit learn 中决策树分类器实现面临的问题
【发布时间】:2017-12-21 04:42:20
【问题描述】:

尝试在 sci-kit learn 中生成决策树。我有一个 CSV 文件,作为我的 sci-kit 程序的输入。当我打印数据集长度为502时,数据集形状为(502, 1)。只有一个数组。

我如何适应决策树并获得结果,不确定我是否正确执行,下面是我的代码。

    import numpy as np
    import pandas as pd
    from sklearn import tree
    from sklearn.cross_validation import train_test_split
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.metrics import accuracy_score

    input_file = "output.csv"

    # for tab delimited use:

     df = pd.read_csv(input_file, header = 0, delimiter = "\t")

   # printing the original column values in a python list

     print(df.values)

     print("DataSet Length :",len(df))

     print("DataSet Shape :",df.shape)

    # Assigning values to an array  
     X=df.values[:,0]

   # test train the the data
     X_train,X_test=train_test_split(X,test_size=0.3,random_state=100)

   # Passing to the Decision Tree Classifier, with entropy criterion

    clf_entropy = DecisionTreeClassifier(criterion = "entropy", rando  
    m_state = 100,max_depth=3, min_samples_leaf=5)

    # Fitting the data  to the classifier
    clf_entropy.fit(X_train)

CSV 文件位于以下链接

https://drive.google.com/file/d/0B3XlF206d5UrVnh6QS1LRW0xT0U/view?usp=sharing

下载并使用excel打开。参考以下 sci-kit 文档供参考。

http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier

【问题讨论】:

  • 你知道502,1的形状是什么意思吗?这对你的任务有意义吗(可能不是)? (查看链接似乎有道理;但在这种情况下,线性 regressor 可能看起来更自然;是的,您需要考虑分类与回归,对我来说它看起来像后者)
  • 如果我是正确的,这意味着 502 行和一列。
  • 是的,502 个维度为 1 的样本。再说一遍:分类还是回归? 2. 为什么选择决策树? 3. 究竟是什么问题? Fitted 允许调用 clf_entropy.predict()。
  • @sascha ,实际上这是一个分类问题,让我解释一下整个案例,我有 1000 封垃圾邮件和一封非垃圾邮件,我已经生成了一些关于所有文件的统计信息,并存储了关于每个文件在一个csv文件中,通过scikit学习我想对信息进行分类,你可以查看csv,下载并在excel或文本编辑器中查看。
  • 不,不只使用这些数据。没有 0 和 1 类。仅 1 个输入和 1 个输出,或 2 个输入,随您喜欢。所以也许这个文件是你转换后的输入,但是任何类信息都丢失了,嗯......如何学习呢?

标签: python scikit-learn


【解决方案1】:

为了适合决策树分类器,您的训练和测试数据需要有标签。使用这些标签,您可以适应树。以下是来自sklearn website 的示例:

from sklearn import tree
X = [[0, 0], [1, 1]]
Y = [0, 1]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)

问题在于,在您的代码中,您只有 X 值,没有标签(Y 值)。所以你不能适应树。

【讨论】:

    猜你喜欢
    • 2017-02-23
    • 2020-04-05
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 2020-05-04
    相关资源
    最近更新 更多