使用OneVsRestClassifier时

时间:2015-12-27 05:01:53

标签: python machine-learning scikit-learn

我正在尝试在我的数据集上使用OneCsRestClassifier。我提取了将要训练模型的特征并在其上安装了线性SVC。在模型拟合之后,当我尝试预测模型所适用的相同数据时,我得到全零。是因为某些实现问题还是因为我的特征提取不够好。我认为,因为我预测我的模型所适用的相同数据,我应该100%准确。但相反,我的模型预测全部为零。这是我的代码 -

#arrFinal contains all the features and the labels. Last 16 columns are labels and features are from 1 to 521. 17th column from the last is not taken
X=np.array(arrFinal[:,1:-17])
X=X.astype(float)
Xtest=np.array(X)

Y=np.array(arrFinal[:,522:]).astype(float)
clf = OneVsRestClassifier(SVC(kernel='linear'))
clf.fit(X, Y)
ans=clf.predict(Xtest) 
print(ans)
print("\n\n\n")

我的OneVsRestClassifier实现有问题吗?

1 个答案:

答案 0 :(得分:1)

查看数据后,看起来值可能对于C值来说太小了。尝试使用sklearn.preprocessing.StandardScaler

X=np.array(arrFinal[:,1:-17])
X=X.astype(float)
scaler = StandardScaler()
X = scaler.fit_transform(X)
Xtest=np.array(X)

Y=np.array(arrFinal[:,522:]).astype(float)
clf = OneVsRestClassifier(SVC(kernel='linear', C=100))
clf.fit(X, Y)
ans=clf.predict(Xtest) 
print(ans)
print("\n\n\n")

从这里开始,您应该使用交叉验证来查看C上的参数调整。使用学习曲线或使用网格搜索。