【问题标题】:Simple classification in scikit-learnscikit-learn 中的简单分类
【发布时间】:2013-10-05 17:42:45
【问题描述】:

我正在尝试使用 scikit-learn 开发一个简单的分类程序。我想提取我的一组 tsv 值,将它们保存在一个数组中。然后,从上面保存一个包含我的 tsv 的第一个值的 csv 和简单的随机 1 或 0。因此它将按如下方式输出到 csv:

tsvValue1, random1or0 eg
string123, 0
foo234, 1

我将所有代码(几乎)分开,我的问题是将它们组合在一起。

import numpy as np
from sklearn import metrics,preprocessing,cross_validation
import pandas as p

loadData = lambda f: np.genfromtxt(open(f,'r'), delimiter=' ')

def main():
    traindata = list(np.array(p.read_table('../data/train.tsv'))[:,2])
    testdata = list(np.array(p.read_table('../data/test.tsv'))[:,2])
    y = np.array(p.read_table('../data/train.tsv'))[:,-1]

    X_all = traindata + testdata

    # What can I do below? What can I use to export to csv
    # properly with an appended 1 or 0 value below ?

    from random import randint
    randomInt = randint(0,1) #Inclusive    
    testfile = p.read_csv(
        '../data/test.tsv', sep="\t", na_values=['?'], index_col=1)
    pred_df = p.DataFrame(testdata, index=testfile.index, columns=['label'])
    pred_df.to_csv('test.csv')
    print ("your random file has been created..")

if __name__=="__main__":
    main()

更新: 输入tsv文件的标准格式:

foo1                       foo2   foo3   foo4   fooN
RelevantString123123123
RelevantString456456456
RelevantString789789789

所需结果 csv 的格式:

RelevantString123123123,1
RelevantString456456456,0
RelevantString789789789,1

正在随机生成的 csv 文件中的第二个 1 或 0。

【问题讨论】:

  • 如果valuestsvValue1 列的值列表,那么zip(values, (random.randint(0, 1) for _ in itertools.count())) 将为您提供(value, zero_or_one) 对。这就是你要找的吗?
  • @Rho 感谢您的回复。我试图编写代码来执行此操作,但我无法以某种方式扭曲,因此它将正确编译以输出表单值 zero_or_one 的 csv。有没有机会帮我解决这个问题?
  • 您能否提供输入文件的示例(仅几行)以及 csv 文件中的预期输出?
  • @Rho 我已经更新了我的问题,谢谢:)
  • 这与 scikit-learn 和机器学习有什么关系?

标签: python numpy pandas scikit-learn export-to-csv


【解决方案1】:

拥有带有内容的文件input.tsv(由制表符分隔):

foo1                       foo2   foo3   foo4   fooN
RelevantString123123123
RelevantString456456456
RelevantString789789789

这显示了如何获得你想要的输出:

>>> import numpy as np
>>> import pandas
>>> df = pandas.read_csv('input.tsv', sep='\t')
>>> df['value'] = pandas.Series(np.random.randint(2, size=len(df)), index=df.index)
>>> df.to_csv('output.csv', cols=['foo1', 'value'], index=False)

output.csv 的内容是:

foo1,value
RelevantString123123123,1
RelevantString456456456,0
RelevantString789789789,0

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 2020-02-14
    • 2016-05-22
    • 1970-01-01
    • 2016-10-17
    • 2018-07-03
    • 2015-05-09
    • 2015-03-07
    • 1970-01-01
    相关资源
    最近更新 更多