以下三种方式

# -*- coding:utf-8 -*-
import numpy as np
import os
from sklearn import datasets def data_generator(input_filename, batch_size):
"""
:param input_filename:
:param batch_size:
:return:
"""
feature_size = 3
labels = np.zeros(batch_size)
rets = np.empty(shape=[batch_size, feature_size])
i = 0
for line in open(input_filename, "r"):
data = line.split(" ")
label = int(float(data[0]))
ids = []
values = []
for fea in data[1:]:
id, value = fea.split(":")
if int(id) > feature_size - 1:
break
ids.append(int(id))
values.append(float(value))
ret = np.zeros([1, feature_size])
for (index, d) in zip(ids, values):
ret[0][index] = d
labels[i] = int(label)
rets[i] = ret
i += 1
if i > batch_size - 1:
i = 0
yield labels, rets[0:, 0:3] def get_data(input_filename, batch_size):
oneline = 16294 # 一行多少个字节
feature_size = 1947
batch = 0
while True:
data = datasets.load_svmlight_file(input_filename, offset=oneline * batch_size * batch,
length=oneline * batch_size,
n_features=feature_size)
features = data[0]
labels = data[1]
if features.shape[0] > 0: # 保证返回和数据的有效性
batch += 1
yield labels, features[0:, 0:3]
else:
raise StopIteration def get_data_all(input_filename, batch_size):
data = datasets.load_svmlight_file(input_filename)
features = data[0]
labels = data[1]
batch = 0
while True:
start_index = batch * batch_size
end_index = (batch + 1) * batch_size if features.shape[0] > end_index:
yield labels[start_index:end_index], features[start_index:end_index, 0:3]
batch += 1
else:
raise StopIteration if __name__ == "__main__":
print("====", os.getcwd())
filename = "/home/part-00000"
generator = data_generator(filename, 10)
labels, features = generator.next()
print([labels])
print(features) generator = get_data_all(filename, 1000)
while True:
labels, features = generator.next()
print 'data', len(labels), features.shape

对于需要循环多次调用方法的,可以使用缓存,需要注意的是,缓存不能直接加在yiled函数上

# -*- coding:utf-8 -*-
import numpy as np
from sklearn.externals.joblib import Memory
import os
import random
from sklearn import datasets mem = Memory("/tmp/mycache") def get_data_batch(input_filename, batch_size):
data = get_data(input_filename)
features = data[0]
labels = data[1]
batch = 0
while True:
start_index = batch * batch_size
end_index = (batch + 1) * batch_size if features.shape[0] > end_index:
yield labels[start_index:end_index], features[start_index:end_index]
batch += 1
else:
raise StopIteration @mem.cache
def get_data(input_filename):
return datasets.load_svmlight_file(input_filename)

python 读取libsvm文件的更多相关文章

  1. Python读取txt文件

    Python读取txt文件,有两种方式: (1)逐行读取 data=open("data.txt") line=data.readline() while line: print ...

  2. Python读取Yaml文件

    近期看到好多使用Yaml文件做为配置文件或者数据文件的工程,随即也研究了下,发现Yaml有几个优点:可读性好.和脚本语言的交互性好(确实非常好).使用实现语言的数据类型.有一个一致的数据模型.易于实现 ...

  3. python读取中文文件编码问题

    python 读取中文文件后,作为参数使用,经常会遇到乱码或者报错asii错误等. 我们需要对中文进行decode('gbk') 如我有一个data.txt文件有如下内容: 百度 谷歌 现在想读取文件 ...

  4. Python读取SQLite文件数据

    近日在做项目时,意外听说有一种SQLite的数据库,相比自己之前使用的SQL Service甚是轻便,在对数据完整性.并发性要求不高的场景下可以尝试! 1.SQLite简介: SQLite是一个进程内 ...

  5. Python读取xlsx文件

    Python读取xlsx文件 脚本如下: from openpyxl import load_workbook workbook = load_workbook(u'/tmp/test.xlsx') ...

  6. Python 读取WAV文件并绘制波形图

    aa Python 读取WAV文件并绘制波形图 ffmpeg -i test_pcm_mulaw.wav -f wav -codec:a pcm_s16le -ar 8000 -ac 1 out.wa ...

  7. 使用python读取yaml文件

    在做APP测试时,通常需要把参数存到一个字典变量中,这时可以将参数写入yaml文件中,再读取出来. 新建yaml文件(android_caps.yaml),文件内容为: platformName: A ...

  8. python 读取bin文件

    python读取bin文件并下发串口   # coding:utf-8import time, serialfrom struct import *import binascii file = ope ...

  9. 记录:python读取excel文件

    由于最近老是用到python读取excel文件,所以特意记录一下python读取excel文件的大体框架. 库:xlrd(读),直接pip安装即可.想要写excel文件的话,安装xlwd库即可,也是直 ...

随机推荐

  1. 51、自定义View基础和原理

    一.编写自己的自定义View最简单的自定义View,继承View通过覆盖View的onDraw方法来实现自主显示利用Canvas和paint来绘制显示元素(文字,几何图形等) <com.myvi ...

  2. 认识tornado(二)

    前面我们对 Tornado 自带的 hello world 作了代码组织上的解释,但是没有更加深入细致地解释.这里我们直接从main()函数开始,单步跟随,看看tornado都干了些什么. 下面是 m ...

  3. 编写高质量代码--改善python程序的建议(一)

    原文发表在我的博客主页,转载请注明出处! 初衷 python是一个入门十分容易的编程语言,但是想要写好python却是一件不容易的事情,如果不是专业使用python的人,只是将python作为一个脚本 ...

  4. ef AddDays报错

    ef func写法,在语句中不能使用adddays方法 )); 这样写就是不行 可以改为: ); 下面是我的一个案例,虽然到了最后都没有实现功能! public List<ContractBud ...

  5. 【JDF】学习和理解

    一.资源地址 官方GitBub地址: putaoshu/jdf: Jingdong front-end integrated solution https://github.com/putaoshu/ ...

  6. 云计算之路:2009年Xen一个补丁背后那不为人知的故事

    仔细阅读了http://www.cnblogs.com/cmt/p/3729386.html这篇关于xen的博文,这篇博文写的挺赞的,分析的也很细致,涉及到4年前的一个patch的故事.在讲这个故事之 ...

  7. PHP使用SimpleElement创建和解析xml文件

    <!-- 使用SimpleXMLElement生成xml文件 --><?php//生成一个xml文件 //xml字符串$_xml = <<<_xml<?xml ...

  8. http://element.eleme.io/#/zh-CN/component/quickstart

    http://element.eleme.io/#/zh-CN/component/quickstart

  9. atitit.client连接oracle数据库的方式总结

    client连接oracle数据库的方式总结 文件夹 Java程序连接一般使用jar驱动连接.. ... 桌面GUI一般採取c语言驱动oci.dll 直接连接... 间接连接(须要配置tns及其env ...

  10. Springboot入门-配置异常页面

    springboot中,可以使用org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer类来统一的处理异 ...