python - Scikit-learn(SVC 估计器)总是给出相同的预测值

标签 python pandas scikit-learn svm

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

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

我不确定我做错了什么...我尝试更改 gamma 和 C 的值。仍然没有运气..

我想知道这是不是:

  1. 与数据(训练集大小)或
  2. 有关
  3. 我只是使用了错误的估算器还是
  4. 我的代码有问题?

完整的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)

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

关于python - Scikit-learn(SVC 估计器)总是给出相同的预测值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518113/

相关文章:

python-3.x - scikit learn 机器学习中时间序列的交叉验证

python - Django 参数读取顺序错误

定义结构时python cffi解析错误

python - 根据 df1 中的列值查找 df2 中的相交值,并在 df1 中创建一个具有检索值的新列(不匹配的列名)

python-3.x - 处理巨大 .csv 的最佳方法

python - K-Means,如何访问集群中的点?

python - 如何在 Django REST Framework 3 中进行模型批量插值?

python - 什么是好的 Django 工作流程?

python - 使用自定义编码将 Pandas Dataframe 转换为 JSON

python - 多输出线性回归模型的访问权重/系数