Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与Orange python库的交叉验证_Python_Cross Validation_Orange_Discretization - Fatal编程技术网

与Orange python库的交叉验证

与Orange python库的交叉验证,python,cross-validation,orange,discretization,Python,Cross Validation,Orange,Discretization,我尝试使用python包“Orange”进行交叉验证。 这个图书馆看起来很不错,但我有一些问题 对于版本信息,我使用Python 2.7和Orange 2.7.8。 我的任务很简单。 我想通过交叉验证验证模型,包括(1)数值属性离散化和(2)特征选择 在这里,如您所知,在交叉验证循环中处理离散化和特征选择非常重要。换句话说,对于每个交叉验证循环,(1)仅离散训练数据,并对测试数据使用相同的分块切割,(2)从训练数据中获取重要特征,并将这些特征用于测试数据 在研究了橙色之后,我编写了以下脚本 im

我尝试使用python包“Orange”进行交叉验证。 这个图书馆看起来很不错,但我有一些问题

对于版本信息,我使用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个特征)

但是,error表示在计算数字特征的信息增益时发生错误。我认为特征选择是在离散化之前进行的。 我认为一些小的修改是必要的,但在网上没有太多的例子。。。我对修改没有明显的想法

你能给我一些修改意见吗?
谢谢。

恐怕您不能使用
orngFSS.FilterBestN(n=3,measure=Orange.feature.scoring.InfoGain())
,因为有些功能是连续的。方法“feature.scoring.InfoGain”将检查特征是否是离散的,参考

我有两个建议:

  • 使用分类树作为学习方法,并选择树中前三个特征。如果特征是连续的,分类树将使用类似“a>0.1”的判别式使特征离散
  • 手动使特征离散。例如,如果年龄是一个特征,则将其标记为“D”,橙色将该特征视为离散特征。我想它会起作用的

  • 恐怕您不能使用
    orngFSS.FilterBestN(n=3,measure=Orange.feature.scoring.InfoGain())
    ,因为有些功能是连续的。方法“feature.scoring.InfoGain”将检查特征是否是离散的,参考

    我有两个建议:

  • 使用分类树作为学习方法,并选择树中前三个特征。如果特征是连续的,分类树将使用类似“a>0.1”的判别式使特征离散
  • 手动使特征离散。例如,如果年龄是一个特征,则将其标记为“D”,橙色将该特征视为离散特征。我想它会起作用的