python svm演算法,多程序運算算不出(似乎是陷入了死迴圈)
阿新 • • 發佈:2019-02-20
在調節核函式是poly的多分類支援向量機degree引數時,樣本資料僅1700餘個,degree較小時測試效果較差。當degree選擇到8時,分類器表現良好,試圖選擇更大的degree。但是計算時間過長(我上了兩節課回來還沒算完)。於是採用多程序技術,但是詭異的是使用了多程序後,CPU利用率從20%提高至70%,用引數degree=2訓練時計算時間卻遠遠超過不使用多程序技術,(不使用多程序計算只需1秒左右),大概計算10分鐘後關閉程式,不再運算。
下面貼出程式碼,參考各種資料後覺得這種情況完全沒道理啊。求大神幫忙看看是啥問題,謝謝了。
import numpy as np
import pandas as pd
from sklearn import svm
import functions_of_data_mining as fo
import multiprocessing as mp
datafr_traning=datafr_traning
#引入datafr_traning資料集,不引會報錯(我無法解釋)
datafr_traning_pressure1=datafr_traning_pressure1
#引入datafr_traning_pressure1資料集,不引會報錯(我無法解釋)
def Traning_canliang(M_degree):
svm_of_WuHanfangjia=svm.SVC(C=1.45 ,kernel='poly',degree=M_degree,coef0=1,decision_function_shape='ovo')
svm_of_WuHanfangjia.fit(datafr_traning[['建造年份','戶型','單價']],datafr_traning['地域'])
y_test_traning_pressure1=svm_of_WuHanfangjia.predict(datafr_traning_pressure1[['建造年份','戶型','單價']])
rate=fo.accurater(y_test_traning_pressure1,datafr_traning_pressure1['地域' ])
return rate
def multicore():
pool=mp.Pool(processes=4)
result=pool.apply_async(Traning_canliang,(2,))
print(result.get())
if __name__=='__main__':
multicore()