使用 genfromtxt 输入 scikit-learn 拟合函数的问题

Posted

技术标签:

【中文标题】使用 genfromtxt 输入 scikit-learn 拟合函数的问题【英文标题】:Problems using genfromtxt to input into scikit-learn fit function 【发布时间】: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”,我走到了这一步!

【问题讨论】:

【参考方案1】:

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

【讨论】:

我想看看是否有一种方法可以使用单个 genfromtxt 方法,如果可能的话,可以将其输出强制转换为正确的格式。其他人认为安德烈亚斯? 您可以从文件中读取一行,提取然后在剩余的描述符上调用 genfromtext 我猜。为什么您不想使用完全符合您的目的的功能? 嗨安德烈亚斯,因为我不知道如何使用它......我可以在代码中强加一个例子吗?谢谢,克里斯

以上是关于使用 genfromtxt 输入 scikit-learn 拟合函数的问题的主要内容,如果未能解决你的问题,请参考以下文章

numpy genfromtxt IndexError 使用评论时

Numpy使用genfromtxt解析日期

使用 numpy.genfromtxt 在 Python 3 中加载 UTF-8 文件

使用 numpy.genfromtxt 读取包含逗号的字符串的 csv 文件

有没有办法使用给定目录中的 numpy.genfromtxt 从 csv 读取数据?

Matplotlib/Genfromtxt:针对时间的多个图,跳过丢失的数据点,来自 .csv