1
我正在做一個有監督學習的任務。我有兩組數據 - 訓練和測試。Scikit-learn(SVC估計器)始終給出相同的預測值
我的訓練數據集大約有2000條記錄。我的測試數據有10條記錄。
當我運行以下代碼時,預測函數給出與輸出相同的值。
我不知道我做錯了......我試圖改變γ和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),但在整個一樣的...
1.重新設置您的數據(StandardScaler)2.增加C到1e5,檢查其他伽瑪值 – lejlot
我dd 2和3.現在它給了我一個不同的值(接近我的最終結果),但問題仍然存在停留:我得到相同的輸出..你認爲這是因爲沒有做step.1? –
是的,第1步是必不可少的。如果您的數據未縮放,則合理行爲所需的C和G值可能會超出浮動範圍 – lejlot