私はpythonパッケージ "Orange"でクロスバリデーションを試みます。 このライブラリはとても見栄えますが、私はそれにいくつか問題があります。オレンジ色の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機能)を備えています内クロスバリデーションプロセス
しかし、エラーは、数値機能の情報ゲインを計算するときにエラーが発生したことを示しています。私は、特徴選択が離散化の前に処理されると考える。 私はいくつかのマイナーな変更が必要だと思っていますが、ウェブ上のオレンジにはたくさんの例はありません...そして、私はその変更について明白な考えを持っていません。
変更点を教えていただけますか? ありがとうございます。