繁体   English   中英

使用SVM的处理时间

[英]Processing Time with SVM

我对SVM还是陌生的,并且正在尝试通过教程自学。 我最近尝试创建一个样本svm测试,但是, run-time似乎很长。 给定我的dataframe有7976行,典型的处理时间是多少?

import numpy as np
from sklearn import svm
from sklearn import preprocessing
import pandas as pd
import os

directory_name = 'D:\Timothy\Practice SVM\Data'
name_of_file = 'Sample_SVM.csv'

df_start = pd.read_csv(os.path.join(directory_name, name_of_file))
df_cleaned = df_start.dropna()

X = df_cleaned.ix[1:8000, 'Sun'].as_matrix()
X = X.reshape((7976,1))  #unsure if this step is needed
X_test = df_cleaned.ix[8000:9913, 'Sun'].as_matrix()

y = df_cleaned.ix[1:8000, 'Meter_Total'].as_matrix()
y_test = df_cleaned.ix[8000:9913, 'Meter_Total'].as_matrix()

model = svm.SVC(kernel='linear', C=1, gamma=1)

model.fit(X,y)
model.score(X, y)

predicted = model.predict(X_test)

假设:当您使用“运行时”一词时,它可以是“训练时间”或“测试时间”(在给定程序中),但是由于您说该数据帧有7976行,因此我将其视为训练时间。

考虑线性SVM,在训练时必须通过解决二次问题来估计向量w和偏差b,从而找到支持向量。 通常,测试一个人是否已经找到最优解需要n²点乘积,解决二次问题涉及“内核”矩阵的求逆,即n³的数量级。 (这里,n是训练集中的样本数)。 但是,几乎没有人需要估计最佳解决方案。 线性SVM达到一定程度的泛化误差的训练时间实际上随着训练集大小的增加而减少。 通常,这在很大程度上取决于所使用的技术,但是除了最先进的线性SVM或近似求解器之外,对于所有其他技术,期望训练时间均为n²左右。

准确地说,对于scikit-learn软件包,对于线性SVM(如liblinear),(n_sample * n_features)也注意到强正则化(低C)也使收敛速度更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM