我使用 sklearn 库和以下代码实例化了一个 SVC 对象:
clf = svm.SVC(kernel='linear', C=1, cache_size=1000, max_iter = -1, verbose = True)
然后我使用以下方法拟合数据:
model = clf.fit(X_train, y_train)
其中 X_train 是 (301,60) 并且 y_train 是 (301,) ndarray(y_train 由类标签“1”、“2”和“3”组成)。
现在,在我偶然发现 .score() 方法之前,为了确定我的模型在训练集上的准确性,我使用了以下内容:
prediction = np.divide((y_train == model.predict(X_train)).sum(), y_train.size, dtype = float)
这给出了大约 62% 的结果。
但是,当使用 model.score(X_train, y_train) 方法时,我得到了大约 83% 的结果。
因此,我想知道是否有人可以向我解释为什么会这样,因为据我所知,他们应该返回相同的结果?
附录:
y_true 的前 10 个值是:
而对于 y_pred(使用 model.predict(X_train) 时),它们是:
我正在使用只能以非标准波特率625000运行的硬件设备.
我需要通过USB端口连接到该设备并从中读取和写入数据.因此,我一直在尝试开发一个小C程序,这将允许我这样做.但是,这段代码需要在Linux环境(Debian/Raspian)中工作,不幸的是我的Linux技能只是基本的.
因此,我希望有人可以用最简单的术语向我解释(代码示例会很棒!)我如何在Linux上设置625000的非标准波特率,连接到我的硬件设备(ttyUSB0),然后写一个比特流到设备(0x02 0x01)并从中读取它返回的7个字节.
我已经看过以下Stack Overflow问题了:
和别的...
但是,我的Linux知识漏洞对我来说太大了,无法建立必要的连接.我该怎么做?
我正在尝试使用 python 库 SKLearn 手动计算 SVC 分类器的决策函数(而不是使用内置方法)。
我已经尝试了几种方法,但是,当我不缩放我的数据时,我只能让手动计算匹配。
z 是一个测试数据(已缩放),我认为其他变量不言自明(此外,如果代码中不明显,我正在使用 rbf 内核)。
以下是我尝试过的方法:
dec_func = 0
for j in range(np.shape(sup_vecs)[0]):
norm2 = np.linalg.norm(sup_vecs[j, :] - z)**2
dec_func = dec_func + dual_coefs[0, j] * np.exp(-gamma*norm2)
dec_func += intercept
Run Code Online (Sandbox Code Playgroud)
diff = sup_vecs - z
norm2 = np.sum(np.sqrt(diff*diff), 1)**2
dec_func = dual_coefs.dot(np.exp(-gamma_params*norm2)) + intercept
Run Code Online (Sandbox Code Playgroud)
但是,这些都不会返回与decision_function. 我认为这可能与重新调整我的价值观有关,或者更有可能是我一直在寻找的一些愚蠢的事情!
任何帮助,将不胜感激。
在python中,我想从列表中删除任何包含在所谓的"黑名单"中找到的子字符串的字符串.
例如,假设列表A如下:
A = [ 'cat', 'doXXXg', 'monkey', 'hoBBBrse', 'fish', 'snake']
Run Code Online (Sandbox Code Playgroud)
列表B是:
B = ['XXX', 'BBB']
Run Code Online (Sandbox Code Playgroud)
我怎么能得到列表C:
C = [ 'cat', 'monkey', 'fish', 'snake']
Run Code Online (Sandbox Code Playgroud)
我已经玩过各种正则表达式和列表推导的组合,但我似乎无法让它工作.