小编Sco*_*d C的帖子

Bartlett周期图的Python实现

我试图根据Bartlett方法的描述在Python中实现周期图,并将结果与​​Scipy的结果进行比较,通过设置overlap=0,使用window='boxcar'(矩形窗口)。然而,我的结果存在一定的偏差。有人能指出我的代码有什么问题吗?谢谢

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal


def my_bartlett_periodogram(x, fs, nperseg, nfft):    
    nsegments = len(x) // nperseg
    psd = np.zeros(nfft)
    for segment in x.reshape(nsegments, nperseg):
        psd += np.abs(np.fft.fft(segment))**2 / nfft
    psd[0] = 0   # important!!
    psd /= nsegments
    psd = psd[0 : nfft//2]
    freq = np.linspace(0, fs/2, nfft//2)
    return freq, psd

def plot_output(t, x, f1, psd1, f2, psd2):
    fig, axs = plt.subplots(3,1, figsize=(12,15))
    axs[0].plot(t[:300], x[:300])
    axs[1].plot(freq1, psd1)
    axs[2].plot(freq2, psd2)
    axs[0].set_title('Input (len=8192, fs=512)') …
Run Code Online (Sandbox Code Playgroud)

python scipy

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

如何让sklearn.metrics.confusion_matrix()始终返回TP,TN,FP,FN?

我正在使用sklearn.metrics.confusion_matrix(y_actual, y_predict)提取tn,fp,fn,tp,并且大多数时候它完美地工作.

from sklearn.metrics import confusion_matrix

y_actual, y_predict = [1,1,1,1], [0,0,0,0]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [0 0 4 0]   # ok

y_actual, y_predict = [1,1,1,1],[0,1,0,1]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [0 0 2 2]   # ok
Run Code Online (Sandbox Code Playgroud)

但是,在某些情况下,confusion_matrix()并不总是返回这些信息,我会得到ValueError,如下所示.

from sklearn.metrics import confusion_matrix

y_actual, y_predict = [0,0,0,0],[0,0,0,0]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [4]    # ValueError: not enough values to unpack (expected 4, got 1)

y_actual, y_predict = [1,1,1,1],[1,1,1,1]
tn, fp, …
Run Code Online (Sandbox Code Playgroud)

python confusion-matrix scikit-learn

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

如何使用不同的主网格间距进行 xticklabel

如何绘制次要网格为 1、主要网格为 10、xticklabels 增量为20 个单位的图表?

这是我的示例代码和输出,xticklabels 每 10 个单位递增:

plt.figure(figsize=(10, 10))
ax = plt.gca()
major_ticks = np.arange(0, 60, 10)    
minor_ticks = np.arange(0, 60, 1)
ax.set_xticks(major_ticks)
ax.set_xticks(minor_ticks, minor=True)
ax.set_yticks(major_ticks)
ax.set_yticks(minor_ticks, minor=True)
ax.grid(which='major')
ax.grid(which='minor', alpha=0.5)
ax.set_aspect('equal')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但后来我想以 20 而不是 10 的增量显示 xticklabels 和 yticklabels,如下所示:

在此输入图像描述

知道如何实现这一点吗?谢谢

python matplotlib gridlines xticks

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