V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  necomancer  ›  全部回复第 3 页 / 共 32 页
回复总数  626
1  2  3  4  5  6  7  8  9  10 ... 32  
2022-05-22 11:17:33 +08:00
回复了 Richard14 创建的主题 Python Numpy 计算协方差的结果应该如何理解?
@Richard14 我的回复好像有点脑残……你是要判断相似性或者说距离的话算法是不一样的,如果是距离那么直接 np.argmin(np.sum((a-b) ** p, axis=-1)),比如 p=2 是欧式距离。我写的是 cos(theta),做距离的话一般是 1 - cos(theta) 啥的,这个你自己调整一下吧。numpy 是很炫酷的。
2022-05-20 11:40:31 +08:00
回复了 Richard14 创建的主题 Python Numpy 计算协方差的结果应该如何理解?
@Richard14 假设十个向量的形状是 a=(10, N),目标向量是 b=(N,),你可以用 np.einsum:

ret_index = np.argmin(np.einsum('ij,j->i', a,b)/np.linalg.norm(a, axis=-1)/np.linalg.norm(b, axis=-1))
ret_vec = a[ret_index]

这个简洁但是会比较慢,可以考虑用 numba 的 guvectorize
from numba import float64, guvectorize
@guvectorize([(float64[:, :], float64[:], float64[:])],'(n,p),(p)->(n)', target='parallel') # target = 'cpu', 'gpu'
....def batch_dot(a, b, ret):
........for i in range(a.shape[0]):
........t1=t2=t3=0
............for j in range(a.shape[1]):
................t1 += a[i, j] * b[j]
................t2 += a[i, j] * a[i, j]
................t3 += b[j] * b[j]
............ret[i] = t1 / t2**0.5/t3**0.5
ret = batch_dot(a,b)
2022-05-20 09:27:38 +08:00
回复了 Richard14 创建的主题 Python Numpy 计算协方差的结果应该如何理解?
np.cov(x, y, ddof=0)
# 11.44 1.16
# 1.16 14.24

cov 是所有的都算的,矩阵是 xx, xy, yx, yy ,你需要的仅是 xy ,你就直接 np.mean((a-a.mean())*(b-b.mean())) 就行了。另外,关联性一般用 correlate ,协方差(ddof=0)应该是关联函数的第一个值,后面可以看到衰减。
2022-04-30 16:28:11 +08:00
回复了 necomancer 创建的主题 职场话题 我是老了么……
@SIEMENS +1s +1s +1s
2022-04-30 07:59:10 +08:00
回复了 Yimkong 创建的主题 MacBook Pro 最近发现苹果 12 和 m1 充电漏点
官方好像只有那个加长线上带三相头
2022-04-28 13:44:04 +08:00
回复了 huzhikuizainali 创建的主题 数学 若尔当标准型构建相似矩阵的广义特征向量怎么求?
1. P 里每一个向量维度都是 N
2. 我相信构造方法课里有,用一般关系写不下,举个 4x4 的例子:
f(a,b,c,d) = (0,a,d,0)
则存在 f^2 = 0 ,f 的 nilpotent index 为 2
w_1 = Ker f = {(0,b,c,0)}
w_2 = Ker f^2 = (a,b,c,d)
令 b_1 为 w_1 的基,则 b_1 = (0,1,0,0) (0,0,1,0)
令 t_2 为 w_2/w_1 的基,则 t_2 = (1,0,0,0) (0,0,0,1)
f(t_2) = (0,1,0,0) (0,0,1,0)
于是
t_2 ~ (1,0,0,0) (0,0,0,1)
t_1 ~ f(t_2) = (0, 1, 0, 0) (0, 0, 1, 0)
则按照 t_1 t_2 的行顺序取列:
b = {(0,1,0,0),(1,0,0,0),(0,0,1,0),(0,0,0,1)} 为一组基,对应
p =
........|0 1 0 0|
........|1 0 0 0|
........|0 0 1 0|
........|0 0 0 1|
P^{-1}AP =
|0 1 0 0|
|0 0 0 0|
|0 0 0 1|
|0 0 0 0|

A 为 f 对应的矩阵
|0 0 0 0|
|1 0 0 0|
|0 0 0 1|
|0 0 0 0|
2022-04-27 13:29:29 +08:00
回复了 necomancer 创建的主题 职场话题 我是老了么……
@luffy 啊对对对,不写了,不写了
2022-04-27 09:48:57 +08:00
回复了 necomancer 创建的主题 职场话题 我是老了么……
@wangsahala 啊对对对,我检讨,我检讨
2022-04-26 18:34:44 +08:00
回复了 necomancer 创建的主题 职场话题 我是老了么……
我感觉我说得好像有歧义,仔细看过原贴里的回复,抛开原贴复杂混乱的叙事风格,我对有人在质疑这句谁说的,所以英文好不好这件事(虽然原帖主有 typo )感到很诧异,是我不懂现在的说话方式了还是长者已经逐渐被人遗忘?——都令我感受到了时间嗖嗖的就过去了……
2022-04-26 18:30:15 +08:00
回复了 necomancer 创建的主题 职场话题 我是老了么……
@0x400 +1s
2022-04-19 12:40:26 +08:00
回复了 DianQK 创建的主题 随想 承认平庸,接受平庸,但我要变强
会秃。
2022-04-11 16:21:18 +08:00
回复了 sober1215zxy 创建的主题 Python 请教关于阶梯曲线数据的处理问题
如果你数据抖动非常小的话,高斯平滑一下求拉普拉斯,零点就是 step 边界,或者跳跃如果非常 sharp ,也可以试试 canny filter ,效果好,参数少并且简单。meanshift 方法更适用于数据抖动比较大,step 其实不能太算 step ,反而带着斜率
2022-04-11 16:17:06 +08:00
回复了 sober1215zxy 创建的主题 Python 请教关于阶梯曲线数据的处理问题
start, xmins = [], []
写错了。。。
2022-04-11 16:16:02 +08:00
回复了 sober1215zxy 创建的主题 Python 请教关于阶梯曲线数据的处理问题
from sys import argv

import numpy as np
from matplotlib import pyplot as plt
from scipy.ndimage import gaussian_filter1d
from scipy.stats import linregress
from sklearn.cluster import MeanShift

x, y = np.loadtxt(argv[1]).T
y_orig = np.copy(y)
y = np.pad(y, (y.shape[0] // 10, 0), mode='edge') # 往前插 10 分之一的 y[0],相当于 y[0]是独立的一个 cluster
y = gaussian_filter1d(y, 85, mode='nearest') # 宽度自己调到合适,没啥涨落的数据可以不用

clustering = MeanShift(bandwidth=None).fit(y[:, None])
lbs = clustering.labels_[y_orig.shape[0] // 10:] # 前面的可以不要了,第一个值相当于 y[0]的 label

plt.plot(x, y_orig, alpha=.5)
start, xmins = [], [], []
for c in set(lbs):
....r = linregress(x[lbs == c], y_orig[lbs == c])
....plt.plot(x[lbs == c], r.slope * x[lbs == c] + r.intercept) # 当数据波动大的时候,用了线性拟合画出来效果好一些,如果你数据的 unitstep 很平,用下面直接画平台值就行
....# plt.hlines(np.mean(y_orig[lbs == c]), xmin=x[lbs==c][0], xmax=x[lbs==c][-1], color='k', lw=4)
....start.append(r.slope * x[lbs == c][0] + r.intercept)
....xmins.append(x[lbs == c][0])
print([x for _, x in sorted(zip(xmins, start))]) # sort from left to right
plt.show()
2022-04-11 16:08:42 +08:00
回复了 sober1215zxy 创建的主题 Python 请教关于阶梯曲线数据的处理问题
看一下 meanshift 算法, scikit
2022-04-01 14:21:59 +08:00
回复了 huzhikuizainali 创建的主题 数学 如何证明一个非零向量的伪逆?
统一啊,令 u, v 都是单位向量,sigma 是归一化因子忽略,则 uTu=vTv=1 ,那么 A = uvT ,A+的构造不就是 vuT 吗,AA+ = uvTvuT=uuT 么,这是定义啊,AA+A = uvTvuTuvT = uvT=A,A+AA+ = vuTuvTvuT=vuT=A+你可以接着验证剩下的两个 MP inverse 的条件,这就是 MP inverse 的定义
2022-04-01 14:07:33 +08:00
回复了 villivateur 创建的主题 机器学习 人生第一次用显卡炼丹,特来发个贴
卧槽我看了一下难道 faceswap 本来就是 64x64.....上 32x32 ?糊成头像( ̄▽ ̄)
2022-04-01 14:06:17 +08:00
回复了 villivateur 创建的主题 机器学习 人生第一次用显卡炼丹,特来发个贴
1920x1080 是不行的,你试试 64x36 ,缩小 G 和 D 的 filter 个数,把 64 ,128 ,256 ,512 换成 8 ,16 ,32 ,64 ,训练起来就快多啦~无非是糊得抽象些,加油~
2022-04-01 14:02:21 +08:00
回复了 huzhikuizainali 创建的主题 数学 如何证明一个非零向量的伪逆?
x+ x = xTx/xTx = 1 这是直接构造出来的,不太理解你想证明啥
1  2  3  4  5  6  7  8  9  10 ... 32  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2520 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 10:37 · PVG 18:37 · LAX 02:37 · JFK 05:37
Developed with CodeLauncher
♥ Do have faith in what you're doing.