我正在使用sklearn.SVC文件在数据帧上预测分类数据。名为“feature\u train”的特征向量是单个时间列(数字.int64)和几千个tfidf列numpy.float64个值):
Timestamp Start able acceptance acceptance criterion access account
113 646 0.0 0.0 0.0 0.0 0.0
342 1775 0.0 0.0 0.0 0.0 0.0
3 202 0.0 0.0 0.0 0.0 0.0
129 728 0.0 0.0 0.0 0.0 0.0
32 257 0.0 0.0 0.0 0.0 0.0
.. ... ... ... ... ... ...
140 793 0.0 0.0 0.0 0.0 0.0
165 919 0.0 0.0 0.0 0.0 0.0
180 1290 0.0 0.0 0.0 0.0 0.0
275 1644 0.0 0.0 0.0 0.0 0.0
400 2402 0.0 0.0 0.0 0.0 0.0
作为参考,以下是我试图预测的一个名为“label\u train”的专栏:
113 14
342 17
3 1
129 0
32 12
..
140 15
165 1
180 15
275 12
400 14
我立即将这两个变量输入线性支持向量机:
clf = svm.SVC(kernel="linear")
clf.fit(feature_train, label_train) #<-- this takes forever
因为我使用了一个列测试分裂函数,所以索引是无序的。 当我运行这个数据帧时sklearn.SVC文件(kernel=“linear”)完成需要4275秒,但是当我删除'Timestamp Start'列时,需要6秒。此外,如果我删除所有tfidf列以便只剩下“Timestamp Start”,那么训练模型也需要很长时间。你知道吗
为什么一列整数比2000+个浮点数更难训练?这是正常的行为吗?如果这是真的,那么如果我添加剩下的3个timestamp列,那么将花费太长的时间,不值得一起使用timestamp。你知道吗
答案是在0-1之间缩放列的值。较大的值会导致性能急剧下降。你知道吗
当你使用基于距离的算法,如支持向量机,你希望你的特征是正常的,所以没有特征是主导你的训练。看看罗伯托·雷夫的博客。你也会找到大量关于为什么,做什么和如何做的资源。你知道吗
https://www.robertoreif.com/blog/2017/12/16/importance-of-feature-scaling-in-data-modeling-part-1-h8nla
相关问题 更多 >
编程相关推荐