面向元学习和自适应分层分类器设计的python包

smartsvm的Python项目详细描述


智能支持向量机

smartsvm是一个python包,它实现了Fast Meta-Learning for Adaptive Hierarchical Classifier DesignbyGerrit J.J. van den BurgAlfred O. Hero中的方法。该包包含 用henze-penrose散度和a 称为智能支持向量机的分层分类器。请参阅下面的使用文档 更多细节。

安装

SmartSVM可在PYPI上使用,并且可以通过以下方式轻松安装:

pip install smartsvm

用法

本文的重点是精确的bayes误差估计和 分层分类器SmartSVM。因此,这些将是最感兴趣的 SmartSVM包的用户。下面我们简单地解释一下如何使用这些 功能。

引用

如果你在研究中使用这个软件包,请用 以下是bibtex条目:

@article{van2017fast,
  title={Fast Meta-Learning for Adaptive Hierarchical Classifier Design},
  author={Gerrit J.J. van den Burg and Alfred O. Hero},
  journal={arXiv preprint arXiv:1711.03512},
  archiveprefix={arXiv},
  year={2017},
  eprint={1711.03512},
  url={https://arxiv.org/abs/1711.03512},
  primaryclass={cs.LG}
}

bayes误差估计

误差估计有三个功能:

  • hp_estimate用于bayes错误率的henze-penrose估计。 这可以用作:

    >>>importnumpyasnp>>>fromsmartsvmimporthp_estimate>>>X1=np.random.multivariate_normal([-1,0],[[1,0],[0,1]],100)>>>X2=np.random.multivariate_normal([1,0],[[1,0],[0,1]],100)>>>hp_estimate(X1,X2)# with normalization>>>hp_estimate(X1,X2,normalize=False)# without normalization
  • compute_error_graphcompute_ovr_error分别计算 双误码率估计的完全加权图 每节课。它们有类似的界面:

    >>>importnumpyasnp>>>fromsmartsvmimportcompute_error_graph,compute_ovr_error>>>fromsklearn.datasetsimportload_digits>>>digits=load_digits(5)>>>n_samples=len(digits.images)>>>X=digits.images.reshape((n_samples,-1))>>>y=digits.target>>>G=compute_error_graph(X,y,n_jobs=2,normalize=True)>>>d=compute_ovr_error(X,y,normalize=True)

智能支持向量机分类器

SMARTSVM是一种自适应的分层分类器,它构造一个 基于贝叶斯估计的分类层次 每对类之间的错误。分类器构建在 scikit learn和其他sklearn的使用方法完全相同 分类器:

>>>importnumpyasnp>>>fromsmartsvmimportSmartSVM>>>fromsklearn.datasetsimportload_digits>>>digits=load_digits(10)>>>n_samples=len(digits.images)>>>X=digits.images.reshape((n_samples,-1))>>>y=digits.target>>>clf=SmartSVM()>>>clf.fit(X,y)>>>clf.predict(X)

默认情况下,smartsvm分类器使用线性支持向量机 (LinearSVC)作为每个二进制子问题的底层二进制分类器 在等级制度中。使用^{tt5}可以很容易地更改$ 类构造函数的参数,例如:

>>>fromsklearn.treeimportDecisionTreeClassifier>>>clf=SmartSVM(binary_clf=DecisionTreeClassifier)>>>clf.fit(X,y)>>>clf._get_binary()DecisionTreeClassifier(class_weight=None,criterion='gini',max_depth=None,max_features=None,max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,min_samples_leaf=1,min_samples_split=2,min_weight_fraction_leaf=0.0,presort=False,random_state=None,splitter='best')

您可以选择通过 clf_params参数。这应该是一个带有 二进制分类器,如下所示:

>>>clf=SmartSVM(binary_clf=DecisionTreeClassifier,clf_params={'criterion':'entropy'})>>>clf.fit(X,y)>>>clf._get_binary()DecisionTreeClassifier(class_weight=None,criterion='entropy',max_depth=None,max_features=None,max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,min_samples_leaf=1,min_samples_split=2,min_weight_fraction_leaf=0.0,presort=False,random_state=None,splitter='best')

最后,如果 底层分类器支持predict_proba方法:

>>>fromsklearn.svmimportSVC>>>clf=SmartSVM(binary_clf=SVC,clf_params={"probabilities":True})>>>clf.fit(X,y)>>>prob=clf.predict_proba(X)>>>importpandasaspd>>>df=pd.DataFrame(prob)>>>df012...09.999997e-011.716831e-182.677824e-13...11.000000e-079.956408e-011.035589e-09...22.595652e-051.452011e-029.722321e-01...

有关SmartSVM参数的更多信息,请参阅API文档 here

已知限制

bayes误差率的henze-penrose估计是基于构造的 欧氏最小生成树。当前的算法 smartsvm包使用了Whitney’s algorithm的改编。这不是最快的方法 构造最小生成树。而Fast Euclidean Minimal Spanning Tree algorithm by March et al.则是 一个更快的选择,但这使得构造正交mst更加困难。 将此算法合并到smartsvm包中被认为是一个主题 为了将来的工作。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在未知属性上的PUT和POST失败会引发不同的行为   java无法使GWTRPC正常工作   java如何在安卓中更改一个特定视图的主题?   机器学习为什么改变了java中等式的两面?   java继承和重定向标准输出   java为什么Clojure中嵌套循环/重复速度慢?   使用JavaParser解析Java代码并查找父节点的语句类型   java读取类的方法并在arraylist中存储Web服务的路径名   java模板聚合匹配和投影一个没有id的字段   java为什么给定数组不返回false   java如何链接JLabel和JSpinner以调整大小   在java中,当过滤器只返回一个对象时,如何使用流和过滤器将值填充到对象中   java为什么使用getInstance   如何得到我的。运行java命令的bat文件