python 读取libsvm文件
以下三种方式
# -*- 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文件的更多相关文章
- Python读取txt文件
Python读取txt文件,有两种方式: (1)逐行读取 data=open("data.txt") line=data.readline() while line: print ...
- Python读取Yaml文件
近期看到好多使用Yaml文件做为配置文件或者数据文件的工程,随即也研究了下,发现Yaml有几个优点:可读性好.和脚本语言的交互性好(确实非常好).使用实现语言的数据类型.有一个一致的数据模型.易于实现 ...
- python读取中文文件编码问题
python 读取中文文件后,作为参数使用,经常会遇到乱码或者报错asii错误等. 我们需要对中文进行decode('gbk') 如我有一个data.txt文件有如下内容: 百度 谷歌 现在想读取文件 ...
- Python读取SQLite文件数据
近日在做项目时,意外听说有一种SQLite的数据库,相比自己之前使用的SQL Service甚是轻便,在对数据完整性.并发性要求不高的场景下可以尝试! 1.SQLite简介: SQLite是一个进程内 ...
- Python读取xlsx文件
Python读取xlsx文件 脚本如下: from openpyxl import load_workbook workbook = load_workbook(u'/tmp/test.xlsx') ...
- Python 读取WAV文件并绘制波形图
aa Python 读取WAV文件并绘制波形图 ffmpeg -i test_pcm_mulaw.wav -f wav -codec:a pcm_s16le -ar 8000 -ac 1 out.wa ...
- 使用python读取yaml文件
在做APP测试时,通常需要把参数存到一个字典变量中,这时可以将参数写入yaml文件中,再读取出来. 新建yaml文件(android_caps.yaml),文件内容为: platformName: A ...
- python 读取bin文件
python读取bin文件并下发串口 # coding:utf-8import time, serialfrom struct import *import binascii file = ope ...
- 记录:python读取excel文件
由于最近老是用到python读取excel文件,所以特意记录一下python读取excel文件的大体框架. 库:xlrd(读),直接pip安装即可.想要写excel文件的话,安装xlwd库即可,也是直 ...
随机推荐
- 认识tornado(五)
Tornado 自带了模板系统,模板语法与 Django 差异不大.这里简单地介绍如何使用 Tornado 的模板系统. 首先是编写 URL 规则与 Handler: 01 class NowaMag ...
- Servlet及相关类和接口
上一篇介绍了在Web项目中web.xml文件的配置信息,本篇主要介绍里面非常重要的配置——Servlet配置,重点介绍与Servlet相关的几个接口和类,包括Servlet接口.ServletConf ...
- delphi -----TTreeView
TTreeView 与两个重要的类相关:TTreeNodes.TTreeNode . TTreeNodes即是TTreeView 的Items属性,TTreeNodes是TTreeNode的合集,TT ...
- 储存应用程序的配置信息ini实现方式
1.C语言中文件操作.2.C++语言中的文件操作.3.Win32 API函数文件操作.4.MFC CFile类文件操作.5.MFC CFileDialog类的文件操作.6.注册表文件操作. 下面我来详 ...
- <2014 05 09> 程序员:从C++转到Java需注意的地方
最近想玩玩Android的APP开发,从C++角度来学习Java.Java可以说是一个优化精简版的C++,去除了底层C的很多特性.找了这篇文章. --------------------------- ...
- Java中的(构造方法、方法重载、final修饰符使用及继承和抽象)
构造方法: 构造方法的名称和类名相同,没有返回类型,参数列表(类型.个数)不同 方法重载:成员方法和构造方法都可以进行重载 方法名相同但是参数列表(类型,个数)不同,成为方法的重载. 继承:直支持单继 ...
- [转载]js复制内容加版权声明代码
转自:https://www.cnblogs.com/zdz8207/p/js-oncopy.html var ua = navigator.userAgent.toLowerCase(); if( ...
- 面向对象 - 1.软件开发/2.异常处理/3.try...except的详细用法
1.软件开发 软件的开发其实一整套规范,我们所学的只是其中的一小部分,一个完整的开发过程,需要明确每个阶段的任务,在保证一个阶段正确的前提下再进行下一个阶段的工作,称之为软件工程 面向对象的软件工程包 ...
- unity里无损实现制定物体bloom
虽然标题是实现hdr+bloom,但实际感觉更像是控制单个物体bloom https://blog.csdn.net/zsy654321/article/details/80682651
- 003-spring结合java类调用quartz
一.利弊 针对001 中设置,不方便程序中动态添加任务,只能使用配置进行配置任务, 适用于已知固定时刻需要执行的任务. 针对002中设置,不方便结合调用spring注入的实体 使用于程序内部新增添的任 ...