Scikit-learn(SVC估计器)总是为预测提供相同的值



我正在做一项关于监督学习的任务。我有两组数据——训练和测试。

我的训练数据集大约有2000条记录。我的测试数据有10条记录
当我运行以下代码时,预测函数会给出与输出相同的值。

我不确定我做错了什么。。。我试着改变gamma和C的值,但还是没有成功。。

我想知道这是否:

  1. 与数据有关(训练集大小)或
  2. 我只是用错了估算器还是
  3. 我的代码搞砸了

以下是完整的python代码:

    import pandas as pd
    training_data = pd.read_csv("Train_wo_Header.csv") #I read my training data set
    data = training_data.ix[:,[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]] #picking up all rows expect index 2, which is my output
    target = training_data.ix[:,[2]] 

    from sklearn import svm #Code from the URL above
    clf = svm.SVC(gamma=0.001, C=100.)
    clf.fit(data,target)  
    test_data = pd.read_csv("test_wo_Header.csv") #this is my test data
    clf.predict(test_data[-10:]) #predicting the last 10 values

这是输出:

array([7734, 7734, 7734, 7734, 7734, 7734, 7734, 7734, 7734, 7734], dtype=int64)

我甚至尝试过使用LinearSVC。仍然没有运气。唯一的区别是预测输出是不同的值(9240),但在整个。。。

总是给出相同的输出可能有两个原因:

  • 您的模型过拟合(数据集不平衡?)
  • 你没有给你的模型提供正确的数据

您似乎没有将Pandas DataFrame转换为numpy数组,请尝试

clf = svm.SVC()    
X = data.values
Y = target.values
assert len(X) == len(Y)
clf.fit(X,Y)
print clf.score(X,Y)

对测试数据执行同样的操作,并尝试至少打印数据的形状和数组的一个元素。

相关内容

  • 没有找到相关文章

最新更新