【问题标题】:How do I read in a csv file to sckkit-learn tree如何在 csv 文件中读取 scikit-learn 树
【发布时间】:2019-01-03 13:31:53
【问题描述】:

我对@9​​87654322@ 和直python 有点熟悉,但对scikit-learnnumpy 不太熟悉。

我在http://scikit-learn.org/stable/modules/tree.html#treescikit-learn 中找到了鸢尾花数据集的以下代码

from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)

我不想使用 scikit-learn 中的 iris,而是加载格式为以下格式的 csv 文件:

A,B,C,D
5.1,3.5,1.4,0.2
4.9,3.0,1.4,0.2
4.7,3.2,1.3,0.2
4.6,3.1,1.5,0.2
.........

如何加载它,将其放入clf.fit(?,?),我需要使用什么来代替iris.target

【问题讨论】:

  • 您可以使用data = np.genfromtext('filename.csv', delimiter=',', skip_header=1) 加载它。你可以把它传递给clf.fit,比如:clf.fit(data, ___),你应该用target填写空白,但我不确定那会是什么。

标签: python numpy scikit-learn


【解决方案1】:

我建议你使用pandas。它实现了类似于 R 数据框的东西。您需要将数据框转换为 numpy 数组,然后再将其与 sklearn 一起使用 (np.array(df))

【讨论】:

    【解决方案2】:

    数据.txt:

    a,b,c,d
    5.1,3.5,1.4,0.2
    4.9,3.0,1.4,0.2
    4.7,3.2,1.3,0.2
    4.6,3.1,1.5,0.2

    要加载数据,您可以使用 numpy.loadtxt:

        import numpy as np
        from sklearn import tree
    
        mydata=np.loadtxt('data.txt',dtype=np.object,delimiter=',')
        mydata=mydata[1:].astype(np.float) # Perform conversion (for quantitative features only)
    
        clf=tree.DecisionTreeClassifier()
    
        #According to sklearn documentation we should map all class marks to integers
        #Lets do it:
        translation_table={'mark1':1,'mark2':2,'mark3':3} #or {'setosa': 1, 'virginia' :2} etc.
        target_data=['mark1','mark2','mark1','mark3', ] #etc.
        int_target_data=map(lambda x: translation_table[x],target_data) # Perform mapping needed by sklearn classifiers
        clf.fit(mydata,int_target_data) # train your classifier 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-16
      • 2017-05-21
      • 2021-07-18
      • 2020-04-13
      • 2012-12-08
      • 2016-03-16
      • 2015-08-17
      • 2014-06-26
      相关资源
      最近更新 更多