svm使用gpu加速

  • Post author:
  • Post category:其他

sklearn里面的svm拿来训练真的贼慢,还不能使用多线程加速,哪怕你的cpu是8核或者16核,训练的时候只使用1核,找了各种方式没有找到

最终发现一个库,叫做thundersvm,可以做gpu加速

使用起来也十分的简单,api几乎和sklearn里面是一模一样的

安装使用pip安装就行:

pip install thundersvm

下面演示一下二分类:

import numpy as np
import pandas as pd
#from sklearn import svm
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
from imblearn.over_sampling import SMOTE, ADASYN
from imblearn.under_sampling import RandomUnderSampler
#from sklearn.model_selection import GridSearchCV
from sklearn.utils import parallel_backend
from thundersvm import SVC

import torch
#model = svm.SVC(kernel='linear',class_weight ='balanced', random_state = 12)
model = SVC(kernel='linear')
df=pd.read_csv('results.csv')

df['target']=df['target'].apply(lambda x: 1 if x=='man' else 0)
print(df.head())
train,test=train_test_split(df,test_size=0.2,random_state=42)
train_data=train[[str(i+1) for i in range(512)]]#列名
train_label=train['target']

sampling_strategy = 0.8
X_resampled, y_resampled = SMOTE().fit_resample(train_data, train_label)
print(X_resampled.shape)
clf =model.fit(X_resampled, y_resampled )
y_pred = model.predict(test[[str(i+1) for i in range(512)]])
print(classification_report(test['target'],y_pred))

速度真的超级快,快好几十倍


版权声明:本文为zhou_438原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。