使用 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 在 Python 3 中加载 UTF-8 文件
使用 numpy.genfromtxt 读取包含逗号的字符串的 csv 文件