如何从python中的多处理中提取预测?

时间:2018-06-25 11:55:13

标签: python multithreading multiprocessing

我正在尝试对svm的结果进行多处理。

我尝试了以下简单方法。

clf = svm.SVC(C=1.0, cache_size=1000000, class_weight=None, coef0=0.0,
    decision_function_shape='ovo', degree=3, gamma='auto', kernel='rbf',
    max_iter=-1, probability=False, random_state=None, shrinking=True,
    tol=0.001, verbose=False)

clf.fit(x, y)

def predict(x):
    clf.predict(x)

from multiprocessing import Pool

pool= Pool(processes = 4)


setting = np.loadtxt('~/test.csv', delimiter=',')
x=setting[:,0:3]
y=setting[:,3]

x[i]
[cols,rows] = setting.shape
i = 0
while i < rows:
    k = x[i]
    pool.map(predict,[[k]])
    print(pool.map(predict,[[k]]))
    i = i+1

此代码将运行,但似乎没有正确的结果。

我要返回或打印预测值。

如果能提供一种方法或代码来获取预测值的结果,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

setting.shape将返回一个元组(m,n),其中m是行数,n是列数。看起来您正相反。

尝试将行更改为

[rows, cols] = setting.shape

此外,您可能希望尝试将预测数据分成大小均等的矩阵,每个矩阵均具有行/过程条目并在其上进行映射。逐行合并的开销可能不值得。