将局部特征聚合为全局特征

feature-aggregation的Python项目详细描述


这是一个实现聚合本地特性的方法的库 (主要用于多媒体)可用于单个全局功能 使用任何分类器都很容易。

依赖关系

库依赖于scikit learn和所有功能聚合 方法扩展scikit learn-baseestimator类。

示例

importnumpyasnpfromfeature_aggregationimportBagOfWords,FisherVectorsX=np.random.rand(1000,2)bow=BagOfWords(10)fv=FisherVectors(10)bow.fit(X)fv.fit(X)G1=bow.transform(np.random.rand(10,100,2))G2=fv.transform([np.random.rand(int(np.random.rand()*100),2)for_inrange(10)])

一个更复杂的例子,使用opencv提取稠密的sift,然后 用词包变换和卡方训练支持向量机 加性核。

importnumpyasnpimportcv2fromsklearn.datasetsimportfetch_olivetti_facesfromsklearn.kernel_approximationimportAdditiveChi2Samplerfromsklearn.metricsimportclassification_reportfromsklearn.pipelineimportPipelinefromsklearn.svmimportLinearSVCfromfeature_aggregationimportBagOfWordsdefsift(*args,**kwargs):try:returncv2.xfeatures2d.SIFT_create(*args,**kwargs)except:returncv2.SIFT()defdsift(img,step=5):keypoints=[cv2.KeyPoint(x,y,step)foryinrange(0,img.shape[0],step)forxinrange(0,img.shape[1],step)]features=sift().compute(img,keypoints)[1]features/=features.sum(axis=1).reshape(-1,1)returnfeatures# Generate dense SIFT featuresfaces=fetch_olivetti_faces()features=[dsift((x.reshape(64,64,1)*255).astype(np.uint8))forxinfaces.data]# Aggregate those features with bag of words using online trainingbow=BagOfWords(100)foriinrange(2):forjinrange(0,len(features),10):bow.partial_fit(features[j:j+10])faces_bow=bow.transform(features)# Split in training and test settrain=np.arange(len(features))np.random.shuffle(train)test=train[200:]train=train[:200]# Train and evaluatesvm=Pipeline([("chi2",AdditiveChi2Sampler()),("svm",LinearSVC(C=10))])svm.fit(faces_bow[train],faces.target[train])print(classification_report(faces.target[test],svm.predict(faces_bow[test])))

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

推荐PyPI第三方库


热门话题
java文件分块,获取长度字节   java嵌入式Tomcat不执行jsf页面   java我的数据库中有2个实体,但hibernate返回其中6个。   java如何基于逗号拆分字符串   java取消已经运行的CompletableFutures的预期模式是什么   java如何在informix中从另一个数据库复制表ddl和数据   为什么图片是黑色的?   java根据字符串数组中的单词筛选列表   Java8的集合。平行流有效吗?   Kotlin中的java静态内部类   java如何在GUI中生成一列字符串   javafx如何正确使用高对比度主题?   带空格的javascript Httpurlconnection参数   java如何设置GridBagLayout的约束   java如何在一个线程可能尚未初始化时关闭另一个线程   java将简单时间格式转换为特殊时间格式(hhmmt)   安卓/java阵列重复过滤器的问题   java在队列的链接实现下,入队和出队是如何工作的   java更新sql外键约束