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

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 Spring数据JPA+Hibernate在不首先找到父实体的情况下保存子实体   php Java:如何从CLI接收命令   spring为java中的导出数据创建访问文件   java在Windows 8.1上安装Play Framework   java Spring启动白标签错误页面(类型=未找到,状态=404)   java如何在单击时从数组中绘制?   java fn:substringAfter()上次出现   java在IFR语句中使用方法返回   java onPause()或onStop()的名称   对关联对象的关联对象具有条件的java HQL查询   java只打印一次总值,无需迭代   java如何使用抽象Uri buildOn()方法?   如何在Java中执行sudo命令并获得错误输出?   java反射:避免对getConstructor(类<?>…)的未经检查的警告调用作为原始类型类的成员   Java:如何从类中创建的对象调用类方法?   java如何在电子邮件中嵌入图像?   java如何在Android上启用详细GC?   java什么是串行版本id?