Python TPOT:对多类数据的分类失败

Python TPOT:对多类数据的分类失败,python,machine-learning,scikit-learn,tpot,Python,Machine Learning,Scikit Learn,Tpot,我无法让TPot(v.0.9.2,python2.7)处理多类数据(尽管我在TPot的文档中找不到任何东西说它只做二进制分类) 下面提供了一个例子。它一直运行到9%,然后由于以下错误而停止运行: RuntimeError: There was an error in the TPOT optimization process. This could be because the data was not formatted properly, or because data for a reg

我无法让TPot(v.0.9.2,python2.7)处理多类数据(尽管我在TPot的文档中找不到任何东西说它只做二进制分类)

下面提供了一个例子。它一直运行到9%,然后由于以下错误而停止运行:

RuntimeError: There was an error in the TPOT optimization process. 
This could be because the data was not formatted properly, or because
data for a regression problem was provided to the TPOTClassifier 
object. Please make sure you passed the data to TPOT correctly.
但是将n_类更改为2,它运行正常

从sklearn.metrics导入f1\u分数,生成分数
从sklearn.dataset导入make_分类
从tpot导入TPOTClassifier
记分员=记分员(f1记分)
十、 y=进行分类(n_样本=200,n_特征=100,
n_信息=20,n_冗余=10,
n_类=3,随机状态=42)
tpot=TPOTClassifier(世代=10,总体大小=20,详细程度=20,评分=scorer)
tpot.配合(X,y)

事实上,TPOT也应该与多类数据一起工作——它与MNIST数据集(10类)一起工作

该错误与f1_分数有关;将代码保存在
n_classes=3
中,并请求

tpot=TPOTClassifier(代数=10,总体大小=20,详细度=2)
(即使用默认的
评分class='accurity'
)可以正常工作:

警告:xgboost.XGBClassifier不可用,TPOT不会使用。
第1代-当前最佳内部简历分数:0.7447422496202984
第二代-当前最佳内部简历分数:0.7447422496202984
第三代-当前最佳内部简历分数:0.7454927186634503
第四代-当前最佳内部简历分数:0.7454927186634503
第5代-当前最佳内部简历分数:0.770633316090413
第6代-当前最佳内部CV分数:0.770633316090413
第7代-当前最佳内部CV分数:0.770633316090413
第8代-当前最佳内部简历分数:0.770633316090413
第9代-当前最佳内部简历分数:0.7757616367372464
第10代-当前最佳内部CV分数:0.7808898416516
最佳管道:
逻辑回归(KNeighborsClassifier(DecisionTreeClassifier(输入矩阵,标准=熵,最大深度=3,最小样本数=15,最小样本数=12),n\u邻域数=6,p=2,权重=均匀),C=0.01,对偶=False,惩罚=l2)
TPOTClassifier(config_dict={'sklearn.linear_model.LogisticReturnal':{'Pendation':['l1','l2'],'C':[0.0001,0.001,0.01,0.1,0.5,1.0,5.0,10.0,15.0,20.0,25.0],'dual':[True,False],'sklearn.decomposition.PCA':{'iterated_power':范围(1,11),'svd_solver':['randomized'],'randomized'],'sklearn.feature(selection.Se…Eatsing.Polynomics':{'degree':[2],'interaction_only':[False],'include_bias':[False]},
交叉率=0.1,cv=5,禁用更新检查=False,
早期停止=无,世代=10,最大评估时间=5,
最大时间分钟=无,记忆=无,变异率=0.9,n工作=1,
子项大小=20,周期检查点文件夹=无,
总体规模=20,随机状态=无,评分=无,子样本=1.0,
详细性=2,暖启动=假)
询问F1分数的用法,即:

tpot=TPOTClassifier(世代=10,总体大小=20,详细程度=2,评分=f1')
再次生成您报告的错误,可能是因为in
f1\u分数
average='binary'
,这对于多类问题确实没有意义,而简单的
f1
仅用于二进制问题()


评分
中明确使用F1评分的一些其他变化,例如
F1\u宏
F1\u微
、或
F1\u加权
工作正常(未显示).

谢谢你的详细回答!这确实是原因。@galapah我告诉过你;)说真的,你确实提供了很多帮助来追查原因——你也干得不错