【问题标题】:Problems using genfromtxt to input into scikit-learn fit function使用 genfromtxt 输入 scikit-learn 拟合函数的问题
【发布时间】:2014-01-27 01:54:09
【问题描述】:

我正在尝试使用 genfromtxt 读取 csv 文件,然后使用 RandomForestClassifier。我最终使用了 genfromtxt 两次;一次是读取功能,然后是获取正确的格式。 此尝试的代码如下: 导入 csv 将 numpy 导入为 np

data = np.genfromtxt('plants.csv',dtype=float, delimiter=',', names=True)
feature_names = np.array(data.dtype.names)
feature_names = feature_names[[ 0,1,2,3,4]] 

data = np.genfromtxt('plants.csv',dtype=float, delimiter=',', skip_header=1)
plants_X = data[:, [0,1,2,3,4]] 
_y = np.ravel(data[:,[5]]) #Return a flattened array required by scikit-learn fit for 2nd argument

from sklearn.ensemble import RandomForestClassifier 
clf = RandomForestClassifier( n_estimators = 10, random_state = 33)
clf = clf.fit(plants_X, plants_y)

print feature_names, '\n', clf.feature_importances_

print feature_names, '\n', clf.feature_importances_

当我使用带有“names=True 选项”的 genfromtxt 时,读取的“数据”不是我预期的格式!

" ([(31.194181, 0.0, 0.0, 0.0, 1.0, 1.0), (12.0, 0.0, 0.0, 1.0, 0.0, 1.0), (18.0, 1.0, 0.0, 1.0, 0.0, 0.0), (31.194181, 0.0, 0.0, 0.0, 1.0, 0.0)], ... dtype=[('A', '

我想从文件中获取特征名称而不读取它两次!

感谢您的帮助!

Ps:感谢“Cyborg”,我走到了这一步!

【问题讨论】:

    标签: csv numpy scikit-learn


    【解决方案1】:

    我建议为此使用熊猫。 您可以使用 pandas.read_csv 获取带有列名的 pandas 数据框。不过,您需要将数据转换为 numpy 数组以将其传递给 scikit-learn。

    【讨论】:

    • 我想看看是否有一种方法可以使用单个 genfromtxt 方法,如果可能的话,可以将其输出强制转换为正确的格式。其他人认为安德烈亚斯?
    • 您可以从文件中读取一行,提取然后在剩余的描述符上调用 genfromtext 我猜。为什么您不想使用完全符合您的目的的功能?
    • 嗨安德烈亚斯,因为我不知道如何使用它......我可以在代码中强加一个例子吗?谢谢,克里斯
    猜你喜欢
    • 2016-04-22
    • 2018-05-26
    • 2015-02-22
    • 1970-01-01
    • 2016-02-05
    • 2019-08-03
    • 2016-08-13
    • 2020-11-22
    • 2013-12-19
    相关资源
    最近更新 更多