小编kaz*_*ase的帖子

Scikit学习:如何水平标准化行值?

我想将下面的值标准化为水平而不是垂直。代码读取代码后提供的csv文件,并输出具有标准化值的新csv文件。如何使其水平标准化?给出如下代码:

#norm_code.py
#normalization = x-min/max-min

import numpy as np
from sklearn import preprocessing
all_data=np.loadtxt(open("c:/Python27/test.csv","r"),
delimiter=",",
skiprows=0,
dtype=np.float64)

x=all_data[:]

print('total number of samples (rows):', x.shape[0])
print('total number of features (columns):', x.shape[1])
minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1)).fit(x)

X_minmax=minmax_scale.transform(x)
with open('test_norm.csv',"w") as f:
    f.write("\n".join(",".join(map(str, x)) for x in (X_minmax)))
Run Code Online (Sandbox Code Playgroud)

test.csv

1   2   0   4   3
3   2   1   1   0
2   1   1   0   1
Run Code Online (Sandbox Code Playgroud)

python numpy scikit-learn

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

sklearn r2_score 和 python stats lineregress 函数给出了非常不同的 R^2 值。为什么?

我使用相同的数据但不同的 python 库来计算决定系数 R^2。使用 stats 库和 sklearn 会产生不同的结果。

这种行为背后的原因是什么?

# Using stats lineregress
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
print r_value**2
Run Code Online (Sandbox Code Playgroud)

0.956590054918

# Using sklearn
from sklearn.metrics import r2_score
print r2_score(x, y)
Run Code Online (Sandbox Code Playgroud)

0.603933484937

python scipy linear-regression scikit-learn

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

为什么在包装时sys.excepthook会有不同的行为?

Qt静默捕获Python回调中的异常,并以错误代码退出程序。这可以用一个简短的例子来证明:

import sys
from PyQt5 import QtWidgets 

# _excepthook = sys.excepthook
# def exception_hook(exctype, value, traceback):
#     _excepthook(exctype, value, traceback)
# sys.excepthook = exception_hook

class Test(QtWidgets.QPushButton):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.setText("hello")
        self.clicked.connect(self.buttonClicked)

    def buttonClicked(self):
        print("clicked")
        raise Exception("wow")

app = QtWidgets.QApplication(sys.argv)
t = Test()
t.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)

点击按钮,我们得到

点击了

流程以退出代码1完成

这个答案(我修改了该示例)显示了如何安装自定义异常挂钩。因此,让我们取消上面示例中的代码行注释。现在,它打印回溯,并且每次我们单击该按钮时都不会退出程序。

自定义函数只是旧函数的一个薄包装。为什么在引发异常时会导致不同的行为?

python pyqt

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

使用 gcc 链接从 Rust 编译的动态库

我想从 Rust 程序构建一个动态库并将其链接到现有的 C++ 项目。对于 C++ 项目,我们一直坚持使用 gcc 进行编译(一个相对较旧的 gcc 4.8.2,但我也在尝试使用 gcc 7.3.0 进行同样的问题)。

这是该问题的最小示例:

源代码/库.rs

#[no_mangle]
pub unsafe extern "C" fn hello() {
  println!("Hello World, Rust here!");
}
Run Code Online (Sandbox Code Playgroud)

Cargo.toml

[package]
name = "gcc-linking"
version = "0.1.0"
authors = ..
edition = "2018"

[lib]
crate-type = ["dylib"]

[dependencies]
Run Code Online (Sandbox Code Playgroud)

你好.cpp:

extern "C" void hello();

int main() {

    hello();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,当我与 链接时clang,一切都很好:

cargo build --lib
clang -L target/debug -l gcc_linking hello.cpp -o hello
LD_LIBRARY_PATH=target/debug:$LD_LIBRARY_PATH ./hello
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,这会导致:

Hello World, …
Run Code Online (Sandbox Code Playgroud)

c++ gcc rust

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

如何扩展递归宏规则中的子模式?

我正在编写一个宏,以便方便地将类型变量中的嵌套结构enum与编译时模板相匹配。这个想法是利用 Rust 的模式匹配在结构的某些位置强制执行特定值,或将变量绑定到其他有趣的位置。基本思想在我的实现中有效,但对于嵌套模式却失败了。我相信问题在于,一旦宏输入的一部分被解析为$<name>:pat它以后无法解析为$<name>:tt.

为了避免术语模式的使用不明确,我将根据 Rust 文档使用以下表示法:

  • 模式是出现在手臂、语句中的内容,并通过片段说明符在宏中进行匹配matchif let$<name>:pat
  • 匹配是宏中语法规则的左侧。
  • 模板是宏输入的一部分,决定宏如何扩展

游乐场 MCVE

这是我正在使用的类型的简化版本enum

#[derive(Debug, Clone)]
enum TaggedValue {
    Str(&'static str),
    Seq(Vec<TaggedValue>),
}
Run Code Online (Sandbox Code Playgroud)

例如,下面的表达式

use TaggedValue::*;
let expression = Seq(vec![
    Str("define"),
    Seq(vec![Str("mul"), Str("x"), Str("y")]),
    Seq(vec![Str("*"), Str("x"), Str("y")]),
]);
Run Code Online (Sandbox Code Playgroud)

可以通过这个宏调用来匹配:

match_template!(
    &expression,                               // dynamic input structure
    { println!("fn {}: {:?}", name, body) },   // action to take after successful match
    [Str("define"), [Str(name), _, _], …
Run Code Online (Sandbox Code Playgroud)

rust rust-macros

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

为什么没有围栏的评论会触发doctest?

我在箱子中有以下注释的代码:

/// Complex Expression
///
///     - The `Undefined` variant is used as a placeholder during code 
///       transformations. It must never occur in the final result.
pub enum Cexp {
    Undefined,
    Unimplemented,
}
Run Code Online (Sandbox Code Playgroud)

cargo test板条箱上运行时,它会触发doctest运行,但无法编译。(请确保在操场上运行“测试”而不是“构建”。)

/// Complex Expression
///
///     - The `Undefined` variant is used as a placeholder during code 
///       transformations. It must never occur in the final result.
pub enum Cexp {
    Undefined,
    Unimplemented,
}
Run Code Online (Sandbox Code Playgroud)

实际的错误消息无关紧要。锈编译器使注释文本窒息,这并不奇怪。但是,为什么此注释触发doctest运行?根据文档, doctests应该与围起来```,这里不是这种情况。

rust

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

ipython事后调试:外部函数的范围

考虑以下代码:

def inner(a):
    if a == 75:
        raise RuntimeError()
    return a**2

def outer():
    results = []
    for a in range(100):
        results.append(inner(a))
    return results

outer()
Run Code Online (Sandbox Code Playgroud)

在 IPython 中,在引发异常后,%debug行魔术会在以下范围内打开 python 调试器inner()

In [4]: %debug
> <ipython-input-3-eff43b15b2ef>(3)inner()
      2     if a == 75:
----> 3         raise RuntimeError()
      4     return a**2

ipdb> a
a = 75
ipdb> results
*** NameError: name 'results' is not defined
Run Code Online (Sandbox Code Playgroud)

如何告诉 (i)pdb 进入范围outer()以保存到目前为止生成的结果?

python ipython pdb ipdb

4
推荐指数
1
解决办法
892
查看次数

如何将字符串列表转换为数字numpy数组?

我希望能够计算平均值,最小值和最大值A:

 import numpy as np

 A = ['33.33', '33.33', '33.33', '33.37']

 NA = np.asarray(A)

 AVG = np.mean(NA, axis=0)

 print AVG
Run Code Online (Sandbox Code Playgroud)

这不起作用,除非转换为:

A = [33.33, 33.33, 33.33, 33.37]
Run Code Online (Sandbox Code Playgroud)

是否可以自动执行此转换?

python arrays numpy average

4
推荐指数
2
解决办法
6217
查看次数

从Rust填充C字符串指针的正确方法是什么?

我需要执行一个FFI签名:

pub unsafe extern fn f(header_size: u32, header_ptr: *mut u8) -> i32;
Run Code Online (Sandbox Code Playgroud)

FFI调用程序应提供一个缓冲区header_ptr以及该缓冲区的大小header_size。预期Rust会将一个字符串填充到该缓冲区中,直到header_size0如果成功,则返回。FFI调用程序应将字符串解释为ASCII。

给定headers: &str我要提供的内容,如何以最惯用的方式填充该缓冲区?

现在我有:

let header_bytes = slice::from_raw_parts_mut(header_ptr, header_size as usize);

if header_bytes.len() < headers.len() { return Errors::IndexOutOfBounds as i32; }

for (i, byte) in headers.as_bytes().iter().enumerate() {
    header_bytes[i] = *byte;
}
Run Code Online (Sandbox Code Playgroud)

但这感觉不对。

编辑,我认为这是不完全相同的副本来这个,因为我的问题涉及到字符串,STR转换和对CStrings时IIRC有特殊的考虑。

c-strings ffi rust

4
推荐指数
1
解决办法
512
查看次数

Matplotlib:子图之间的中心刻度标签

默认情况下,刻度标签在它们所属的子图轴上对齐。是否可以对齐标签,使它们位于两个子图之间的中心?

import numpy as np
import matplotlib.pyplot as plt

data = [7, 2, 3, 0]
diff = [d - data[0] for d in data]
y = np.arange(len(data))

ax1 = plt.subplot(1, 2, 1)
ax1.barh(y, diff)
ax1.set_yticks(y + 0.4)
ax1.yaxis.set_major_formatter(matplotlib.ticker.NullFormatter())

ax2 = plt.subplot(1, 2, 2)
ax2.barh(y, data)
ax2.set_yticks(y + 0.4)
ax2.set_yticklabels(['reference', 'something', 'something else', 'nothing', ])

plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

标签与右侧子图对齐

python matplotlib

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