1

我有我的featuresets爲包含在表單元素的字典:如何實現交叉驗證和隨機森林分類定功能集作爲字典?

({0: 0.48447204968944096, 
    1: 0.035093167701863354, 
    2: 0.07453416149068323, 
    3: 0.046583850931677016, 
    4: 0.0, 
    5: 0.09316770186335403, 
    ... 
    162: 1, 
    163: 1.0}, 'male') 

當我嘗試實現從sklearn庫cross_val_scorecross_val_predict,它總是會導致顯示一些錯誤說

「浮點值不能是字典「。

可能有人請幫助我實現使用線性SVC和隨機森林分類Python中的交叉驗證?

我曾試圖在此之前:

train_set, test_set = featuresets[1:1628], featuresets[1630:3257] 
np.asarray(train_set) 
np.asarray(test_set) 
clf = SVC(kernel='linear', C=5) 
predicted = cross_val_predict(clf, train_set, test_set, cv=10) 
metrics.accuracy_score(test_set, predicted) 

而且,我沒有得到如何在這裏實現kfold交叉驗證。

+0

轉換您的數據,以numpy的陣列,就是所有 – lejlot

+0

你上面顯示的數據是有兩個元素的元組:第一是快譯通,另一個是字符串。字符串是你想要預測的目標變量。你的'cross_val_predict'的用法也是錯誤的。 –

+0

'featuresets'是什麼類型? – Tonechas

回答

1

讓我們首先導入必要的模塊:

import numpy as np 
from sklearn.ensemble import RandomForestClassifier 
from sklearn.model_selection import cross_val_score 

你必須創建一個隨機森林分類這樣的實例:

clf = RandomForestClassifier() 

然後,你需要加載featuresets(我不噸有這個數據,所以我無法測試我的代碼)和你的分類變量通過詞典轉換成一個算一個,例如:

featuresets = # your code here 
gender = {'male': 0, 'female': 1} 

下一個步驟是在存儲功能和標籤爲NumPy的數組:

X = np.asarray([[i[1] for i in sorted(d.items())] for d, _ in featuresets]) 
y = np.asarray([gender[s] for _, s in featuresets]) 

現在,您可以通過拆分數據,擬合模型和計算來估算你的數據集的隨機森林分類的​​準確性分數連續10次(每次不同分割):

scores = cross_val_score(clf, X, y, cv=10) 
print('Scores =', scores) 

如果您運行上面的代碼段,應該會得到打印的10個分數的列表。

+0

隨機森林分類器呢?它會以這種方式工作嗎? –

+0

我已經編輯我的答案,以更好地滿足您的問題 – Tonechas

+0

是的,這是工作。非常感謝您的時間和精力:) –