我正在做一个关于监督学习的任务。我有两组数据-训练和测试。
我的训练数据集大约有 2000 条记录。我的测试数据有10条记录。
当我运行以下代码时,预测函数 给出与输出相同的值。
我不确定我做错了什么...我尝试更改 gamma 和 C 的值。仍然没有运气..
我想知道这是不是:
- 与数据(训练集大小)或 有关
- 我只是使用了错误的估算器还是
- 我的代码有问题?
完整的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/