【问题标题】:Python And Random Forest AlgorithmPython 和随机森林算法
【发布时间】:2015-02-12 02:00:30
【问题描述】:

我正在尝试将 Python 的随机森林 ML(机器学习)算法与 *.csv 文件一起使用,这是 *csv.file 中的信息

DateTime;Status;Energy
28-02-2014 19:30:00;True;10,1
28-02-2011 06:15:00;False;15,6;
28-02-2011 06:30:00;False;15,2;
28-02-2011 06:45:00;False;15,6;
......

我需要使用哪些包或库(随机森林模型)来分析这些信息?

我的代码:

from sklearn.ensemble import RandomForestClassifier
from numpy import genfromtxt, savetxt
    def main():
        dataset = genfromtxt(open("C:\\Users\\PVanDro\\Desktop\\Ddata\\Building0.csv"), delimiter=';', dtype='f8')[1:]
        target = [x[0] for x in dataset]
        train = [x[1:] for x in dataset]
        rf = RandomForestClassifier(n_estimators=100)
        rf.fit(train, target)
        savetxt("C:\\Users\\PVanDro\\Desktop\\Ddata\\Building0_0.csv", delimiter=';', fmt='%f')

    if __name__=='__main__':
         main()

但我有错误:

  File "C:/Users/PVanDro/Desktop/Folder for test/RandomForestExamples1/MainFile.py", line 17, in main
    rf.fit(train, target)
  File "C:\Python27\lib\site-packages\sklearn\ensemble\forest.py", line 224, in fit
    X, = check_arrays(X, dtype=DTYPE, sparse_format="dense")
  File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 283, in check_arrays
    _assert_all_finite(array)
  File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 43, in _assert_all_finite
    " or a value too large for %r." % X.dtype)
ValueError: Input contains NaN, infinity or a value too large for dtype('float32').

我该如何解决这些错误?

【问题讨论】:

  • 您可能想要编辑您的问题并添加一些您尝试过的代码。
  • 你的问题解决了吗?
  • 先生。康科拉托!我仍然有这个问题。你有什么理想的解决方法吗?
  • 根据您的错误,您的数据中的代码似乎与您的 dtype='f8' 不一致。您是否正在尝试像解析浮点数一样解析日期值?
  • 康科拉托先生!我正在尝试解析日期值: "fName = pd.read_csv("C:\\Users\\PVanDro\\Desktop\\Ddata\\Building0.csv", index_col=False, decimal=',', sep =';', header=0)" 但我无法创建图形。你有我可以使用的理想或其他包或库吗?

标签: python random-forest


【解决方案1】:

这是一个great tutorial,它解释了您在寻找什么。这里有一些示例代码供您试用。

from sklearn.ensemble import RandomForestClassifier
from numpy import genfromtxt, savetxt

def main():
    #create the training & test sets, skipping the header row with [1:]
    dataset = genfromtxt(open('Data/train.csv','r'), delimiter=',', dtype='f8')[1:]    
    target = [x[0] for x in dataset]
    train = [x[1:] for x in dataset]
    test = genfromtxt(open('Data/test.csv','r'), delimiter=',', dtype='f8')[1:]

    #create and train the random forest
    #multi-core CPUs can use: rf = RandomForestClassifier(n_estimators=100, n_jobs=2)
    rf = RandomForestClassifier(n_estimators=100)
    rf.fit(train, target)

    savetxt('Data/submission2.csv', rf.predict(test), delimiter=',', fmt='%f')

if __name__=="__main__":
    main()

一旦您创建了新的预测数据集,您就可以使用大量的库来通过图形可视化该数据。以下是一些:

  1. Bokeh - 基于 Python 的可视化库,用于基于 Web 的表示
  2. D3 - 另一个用于可视化数据的基于 Web 的 JavaScript 库。 Here 是您可以与 CSV 一起使用的一个示例。
  3. Ploty - 基于 Python 的可视化

还有更多,但您可以为此询问 Google。 ;)

【讨论】:

  • 谢谢! Concolato 先生,但我可以在哪里获得“train.csv”文件?
  • 只需重命名或将您的数据放在您上面提到的 *csv 文件中并保存为新的“train.csv”。
猜你喜欢
  • 2016-07-05
  • 2020-03-14
  • 2021-06-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
相关资源
最近更新 更多