小编Bor*_*lik的帖子

从ASCII文件中将文本值读入matlab变量

考虑以下文件

var1 var2 variable3
1     2    3
11    22   33
Run Code Online (Sandbox Code Playgroud)

我想将数字加载到矩阵中,并将列标题转换为相当于以下内容的变量:

variable_names = char('var1', 'var2', 'variable3');
Run Code Online (Sandbox Code Playgroud)

我不介意将名称和数字分成两个文件,但是准备matlab代码文件并评估它们不是一种选择.

请注意,可以有任意数量的变量(列)

file-io matlab text text-processing text-files

7
推荐指数
1
解决办法
3万
查看次数

鼠尾草中的三维散点图

是否有可能在圣人中创建3D散点图?

通过散点图我的意思是这样的图: 替代文字

python plot sage

7
推荐指数
1
解决办法
1231
查看次数

PySpark GraphFrame 的正确子图

graphframes是一个基于PySpark DataFrames的网络分析工具。以下代码是教程子图示例的修改版本:

from graphframes.examples import Graphs
import graphframes
g = Graphs(sqlContext).friends()  # Get example graph
# Select subgraph of users older than 30
v2 = g.vertices.filter("age > 30")
g2 = graphframes.GraphFrame(v2, g.edges)
Run Code Online (Sandbox Code Playgroud)

人们会期望与原始图相比,新图g2将包含更少的节点和边g。然而,这种情况并非如此:

print(g.vertices.count(), g.edges.count())
print(g2.vertices.count(), g2.edges.count())
Run Code Online (Sandbox Code Playgroud)

给出输出:

(6, 7)
(7, 4)
Run Code Online (Sandbox Code Playgroud)

很明显,结果图包含不存在节点的边。更令人不安的是g.degreesg2.degrees是相同的。这意味着至少某些图形功能会忽略节点信息。有没有一种好方法可以确保仅使用提供的参数和参数GraphFrame的交集来创建图形?nodesedges

python pyspark graphframes

7
推荐指数
1
解决办法
2961
查看次数

平滑不规则采样的时间数据

给定一个表,其中第一列是经过某个参考点的秒数,第二列是任意测量值:

6   0.738158581
21  0.801697222
39  1.797224596
49  2.77920469
54  2.839757536
79  3.832232283
91  4.676794376
97  5.18244704
100 5.521878863
118 6.316630137
131 6.778507504
147 7.020395216
157 7.331607129
176 7.637492223
202 7.848079136
223 7.989456499
251 8.76853608
278 9.092367123 
    ...
Run Code Online (Sandbox Code Playgroud)

如您所见,在不规则的时间点对测量结果进行采样.我需要通过在每次测量之前将读数平均最多100秒来平滑数据(在Python中).由于数据表很大,因此最好使用基于迭代器的方法.不幸的是,经过两个小时的编码后,我无法找到高效优雅的解决方案.

谁能帮我?

编辑小号

  1. 我希望每个原始读数都有一个平滑的读数,平滑的读数是原始读数的算术平均值和前100(delta)秒中的任何其他读数.(约翰,你说得对)

  2. 巨大的~1e6 - 10e6线+需要使用紧RAM

  3. 数据大致是随机游走

  4. 数据已排序

解析度

我测试了J Machin和yairchu提出的解决方案.他们都给出了相同的结果,但是,在我的数据集中,J Machin的版本呈指数级,而yairchu的版本是线性的.以下是由IPython的%timeit(以微秒为单位)测量的执行时间:

data size   J Machin    yairchu
10        90.2        55.6
50          930         258
100         3080        514
500         64700       2660
1000        253000      5390
2000        952000      11500
Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助.

python datetime data-mining smoothing

6
推荐指数
1
解决办法
3303
查看次数

Python的类似Unix''的'

在*nix系统中,人们可以which 用来找出命令的完整路径.例如:

$ which python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

whereis显示给定命令的所有可能位置

$ whereis python
python: /bin/python.exe /bin/python2.5-config /usr/bin/python.exe /usr/bin/python2.5-config /lib/python2.4 /lib/python2.5 /usr/lib/python2.4 /usr/lib/python2.5 /usr/include/python2.4 /usr/include/python2.5 /usr/share/man/man1/python.1
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以找到PYTHONPATH中模块的位置.就像是:

>>> which (sys)
'c:\\Python25\Lib\site-packages'
Run Code Online (Sandbox Code Playgroud)

python which

6
推荐指数
1
解决办法
1022
查看次数

在matplotlibrc中设置spines

出于一个奇怪的原因,我找不到在Python的matplotlibrc文件中指定spines配置的方法.有关如何使matplotlib默认不绘制上右刺的任何想法? 刺http://matplotlib.sourceforge.net/_images/whats_new_99_spines.png

有关matplotlib中刺的信息的更多信息,请点击此处

谢谢

python matplotlib

6
推荐指数
2
解决办法
3478
查看次数

帮助我理解python的日志记录模块及其处理程序

我真的很想念python的日志记录模块.

在下面的代码中,我创建了一个logger对象(log)并向其添加了两个处理程序.一个具有'INFO'级别,一个具有'WARNING'级别.它们都应该打印到stdout.我希望调用log.info(msg) 将导致msg我的标准输出中的一个副本并且调用log.warn(msg)sould导致两个副本msg打印到我的标准输出.这是代码:

import logging
import sys


logging.basicConfig()
log = logging.getLogger('myLogger')
log.handlers = []
h1 = logging.StreamHandler(sys.stdout)
h1.level = logging.INFO
h1.formatter = logging.Formatter('H1 H1 %(message)s ')
h2 = logging.StreamHandler(sys.stdout) 
h2.level = logging.WARNING
h2.formatter = logging.Formatter('H2 H2 %(message)s')
log.addHandler(h1)
log.addHandler(h2)

print 'log.level == %s'%logging.getLevelName(log.level)
print 'log.info'
log.info('this is some info')
print 'done'
print 'log.warn'
log.warn('this is a warning')
print 'done'
Run Code Online (Sandbox Code Playgroud)

输出对我来说真的很奇怪.该.info呼叫导致没有视觉效果.但是,调用warn结果将两个msg的副本打印到stdout(可以),还有一个副本打印到stderr(为什么?).这是上面代码的输出.请注意此输出中最后一行的格式.这行打印到stderr.

log.level == NOTSET
log.info
done
log.warn
H1 …
Run Code Online (Sandbox Code Playgroud)

python logging

6
推荐指数
1
解决办法
960
查看次数

脚本到文档(Matlab在python中的发布功能)

Matlab有一个名为publish的好工具.此工具将具有最少格式化内容的常规matlab脚本转换为结构化,美观的报告(HTML,LateX,RTF).它能够处理图形,数学公式等.

Python有类似的工具吗?

python matlab reporting report

5
推荐指数
1
解决办法
1617
查看次数

访问`sklearn`管道中的变换器功能

根据sklearn.pipeline.Pipeline文档,

管道具有管道中最后一个估计器具有的所有方法,即如果最后一个估计器是分类器,则管道可以用作分类器.如果最后一个估算器是变压器,那么管道也是如此.

以下示例使用自定义虚函数创建虚拟变换器f:

class C:
    def fit(self, X, y=None):
        print('fit')
        return self
    def transform(self, X):
        print('transform')
        return X

    def f(self):
        print('abc')

from sklearn.pipeline import Pipeline
ppl = Pipeline([('C', C())])
Run Code Online (Sandbox Code Playgroud)

我希望能够访问变压器的f功能C,但是调用会ppl.f()产生结果AttributeError: 'Pipeline' object has no attribute 'f'

我误解了文档吗?是否有一种良好可靠的方式来访问最后一个变压器的功能?

python scikit-learn

5
推荐指数
1
解决办法
1137
查看次数

在scikit-learn中分组抽样

有没有办法方便地将数据集拆分为训练和测试集,将属于同一组的记录保存在一起?

例如person_id,以每个人可能有一个或多个条目的方式记录每个独立变量和因变量的表格:

import pandas as pd

tbl = pd.DataFrame(dict(
        person_id=list('aaabbcccdeeefffhiijj'),
        random_variable=np.linspace(0, 1, 20),
        dependent_variable=np.arange(20)
    ))
Run Code Online (Sandbox Code Playgroud)

现在,我想将数据拆分为训练和测试集,将属于同一个人的记录保存在同一个数据集中.显然,使用sklearn.cross_validation.train_test_split不起作用.我知道sklearn.cross_validation.LeavePLabelOut,但它不是创建一个单独的分割,而是创建所有可能的组合,这不是我目前想要的.

另一种方法是根据person_id字段计算哈希值并将其用于采样:

import numpy as np

salt = str(np.random.rand()) # randomness source 
hash_values = tbl['person_id'].apply(lambda p: hash(salt + p) % 100)
# 50/50 split
sel_training = hash_values < 50
training_set = tbl.loc[sel_training]
testing_set = tbl.loc[-sel_training]
Run Code Online (Sandbox Code Playgroud)

是否有更优雅的方式来完成这项任务?

python machine-learning scikit-learn

5
推荐指数
1
解决办法
197
查看次数