【问题标题】:Saving train and test data in a file将训练和测试数据保存在文件中
【发布时间】:2014-06-12 16:56:00
【问题描述】:

我正在使用以下代码将数据集拆分为训练数据和测试数据以保存在文件中;

import numpy as np
from sklearn.cross_validation import train_test_split

a = (np.genfromtxt(open('dataset.csv','r'), delimiter=',', dtype='int')[1:])
a_train, a_test = train_test_split(a, test_size=0.33, random_state=0)

c1 = open('trainfile.csv', 'w')
arr1 = str(a_train)
c1.write(arr1)
c1.close

c2 = open('testfile.csv', 'w')
arr2 = str(a_test)
c2.write(arr2)
c2.close

但是我在文件中得到以下输出;

trainfile.csv:
[[ 675847       0       0 ...,       0       0       3]
 [  74937       0       0 ...,       0       0       3]
 [  65212       0       0 ...,       0       0       3]
 ..., 
 [  18251       0       0 ...,       0       0       1]
 [1131828       0       0 ...,       0       0       1]
 [  14529       0       0 ...,       0       0       1]]

这就是trainfile的全部内容。我也面临与 testfile.csv 的输出相同的问题。我想要的是整个训练和测试数据存储在文件中,而不是表示额外数据的句点。有什么建议吗?

【问题讨论】:

    标签: python python-2.7 numpy scikit-learn


    【解决方案1】:

    这是因为你在 numpy 数组上调用了字符串方法str。请改用 numpy 函数 numpy.savetxt。它看起来像

    with open('testfile.csv', 'w') as FOUT:
        np.savetxt(FOUT, a_test)
    

    请注意,CSV 阅读器不一定能读取该格式。如果这是您的意图,您可以使用https://docs.python.org/2/library/csv.html

    【讨论】:

    • 你在那里拼错了 savetxt,但这成功了。非常感谢!!
    • 已修复。我在现实生活中也这样做,我永远记不住正确的关键字!
    • 使用delimiter=',',你的csv应该可以被任何csv解析器解析。
    猜你喜欢
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多