我嘗試使用python包「橙色」進行交叉驗證。 這個庫看起來很不錯,但是我有一些問題。與橙色python庫交叉驗證
對於版本信息,我使用Python 2.7和Orange 2.7.8。 我的任務很簡單。 我想驗證模型與交叉驗證與(1)離散化的數字屬性和(2)功能選擇。如你所知,在這裏,在交叉驗證循環中處理離散化和特徵選擇是很重要的。換句話說,對於每個交叉驗證循環,(1)只對訓練數據進行離散化處理,對測試數據使用相同的舍入切割,(2)從訓練數據中獲取重要特徵,並將特徵用於測試數據。
在學習了橙色之後,我編碼了下面的腳本。
import Orange, orange, orngDisc, orngTest, orngStat, orngFSS
data = Orange.data.Table("test.tab") # has numeric, discrete features
nb = Orange.classification.bayes.NaiveLearner()
dBayes = orngDisc.DiscretizedLearner(nb, method=Orange.feature.discretization.Entropy(), name="disc nb")
# feature selection (three important features based on information gain)
fss = orngFSS.FilterBestN(n=3, measure=Orange.feature.scoring.InfoGain())
fBayes = orngFSS.FilteredLearner(dBayes, filter=fss, name="nb & fss")
learners = [nb, dBayes, fBayes]
results = orngTest.crossValidation(learners, data, folds=10, storeClassifiers=1, storeExamples=1)
# print accuracy for the three models (no errors in this block!)
print "\nLearner Accuracy #Atts"
for i in range(len(learners)):
print "%-15s %5.3f %5.2f" % (learners[i].name, orngStat.CA(results)[i], natt[i])
總之,數據集(「數據」中的代碼)包含數值和離散特徵,以及我想要做的離散化(基於熵),然後特徵選擇內(頂部3基於該信息增益特性)交叉驗證過程。
但是,錯誤表示在計算數字特徵的信息增益時發生錯誤。我認爲特徵選擇是在離散化之前處理的。 我認爲一些小的修改是必要的,但在網絡上沒有很多關於Orange的例子...並且我對修改沒有明顯的想法。
你能給我點修改嗎? 謝謝。