集成算法 实例

HALCON&VS C# 混合编程案例【01】: 3D 算法处理在 Visual Studio 2019 C# 环境中的集成实例 HALCON 为一款比较流行的商业视觉处理软件,他提供了多种开发的模式,可以在HALCON中开发,也可以将HALCON的设计通过导出库的形式集成到其他开发环境里面,以方便系统集成。本文为笔者自己的一个3D 视觉检测项目,利用HALCON的3D 库开发算法,然后,将算法集成到 MS-VS-C#的环境中:Windows10,64位系统:Microsoft Visual Studio Community 2019 版本 16.11.22HALCON 18.1 Progress (x64-win64 avx2)【案 阅读详情

horseColicTraining2.txt

2.000000 1.000000 38.500000 66.000000 28.000000 3.000000 3.000000 0.000000 2.000000 5.000000 4.000000 4.000000 0.000000 0.000000 0.000000 3.000000 5.000000 45.000000 8.400000 0.000000 0.000000 -1.000000
1.000000 1.000000 39.200000 88.000000 20.000000 0.000000 0.000000 4.000000 1.000000 3.000000 4.000000 2.000000 0.000000 0.000000 0.000000 4.000000 2.000000 50.000000 85.000000 2.000000 2.000000 -1.000000
2.000000 1.000000 38.300000 40.000000 24.000000 1.000000 1.000000 3.000000 1.000000 3.000000 3.000000 1.000000 0.000000 0.000000 0.000000 1.000000 1.000000 33.000000 6.700000 0.000000 0.000000 1.000000
1.000000 9.000000 39.100000 164.000000 84.000000 4.000000 1.000000 6.000000 2.000000 2.000000 4.000000 4.000000 1.000000 2.000000 5.000000 3.000000 0.000000 48.000000 7.200000 3.000000 5.300000 -1.000000
2.000000 1.000000 37.300000 104.000000 35.000000 0.000000 0.000000 6.000000 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 74.000000 7.400000 0.000000 0.000000 -1.000000
2.000000 1.000000 0.000000 0.000000 0.000000 2.000000 1.000000 3.000000 1.000000 2.000000 3.000000 2.000000 2.000000 1.000000 0.000000 3.000000 3.000000 0.000000 0.000000 0.000000 0.000000 1.000000
1.000000 1.000000 37.900000 48.000000 16.000000 1.000000 1.000000 1.000000 1.000000 3.000000 3.000000 3.000000 1.000000 1.000000 0.000000 3.000000 5.000000 37.000000 7.000000 0.000000 0.000000 1.000000
1.000000 1.000000 0.000000 60.000000 0.000000 3.000000 0.000000 0.000000 1.000000 0.000000 4.000000 2.000000 2.000000 1.000000 0.000000 3.000000 4.000000 44.000000 8.300000 0.000000 0.000000 -1.000000
2.000000 1.000000 0.000000 80.000000 36.000000 3.000000 4.000000 3.000000 1.000000 4.000000 4.000000 4.000000 2.000000 1.000000 0.000000 3.000000 5.000000 38.000000 6.200000 0.000000 0.000000 -1.000000
2.000000 9.000000 38.300000 90.000000 0.000000 1.000000 0.000000 1.000000 1.000000 5.000000 3.000000 1.000000 2.000000 1.000000 0.000000 3.000000 0.000000 40.000000 6.200000 1.000000 2.200000 1.000000
1.000000 1.000000 38.100000 66.000000 12.000000 3.000000 3.000000 5.000000 1.000000 3.000000 3.000000 1.000000 2.000000 1.000000 3.000000 2.000000 5.000000 44.000000 6.000000 2.000000 3.600000 1.000000
2.000000 1.000000 39.100000 72.000000 52.000000 2.000000 0.000000 2.000000 1.000000 2.000000 1.000000 2.000000 1.000000 1.000000 0.000000 4.000000 4.000000 50.000000 7.800000 0.000000 0.000000 1.000000
1.000000 1.000000 37.200000 42.000000 12.000000 2.000000 1.000000 1.000000 1.000000 3.000000 3.000000 3.000000 3.000000 1.000000 0.000000 4.000000 5.000000 0.000000 7.000000 0.000000 0.000000 1.000000
2.000000 9.000000 38.000000 92.000000 28.000000 1.000000 1.000000 2.000000 1.000000 1.000000 3.000000 2.000000 3.000000 0.000000 7.200000 1.000000 1.000000 37.000000 6.100000 1.000000 0.000000 -1.000000
1.000000 1.000000 38.200000 76.000000 28.000000 3.000000 1.000000 1.000000 1.000000 3.000000 4.000000 1.000000 2.000000 2.000000 0.000000 4.000000 4.000000 46.000000 81.000000 1.000000 2.000000 1.000000
1.000000 1.000000 37.600000 96.000000 48.000000 3.000000 1.000000 4.000000 1.000000 5.000000 3.000000 3.000000 2.000000 3.000000 4.500000 4.000000 0.000000 45.000000 6.800000 0.000000 0.000000 -1.000000
1.000000 9.000000 0.000000 128.000000 36.000000 3.000000 3.000000 4.000000 2.000000 4.000000 4.000000 3.000000 3.000000 0.000000 0.000000 4.000000 5.000000 53.000000 7.800000 3.000000 4.700000 -1.000000
2.000000 1.000000 37.500000 48.000000 24.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000
1.000000 1.000000 37.600000 64.000000 21.000000 1.000000 1.000000 2.000000 1.000000 2.000000 3.000000 1.000000 1.000000 1.000000 0.000000 2.000000 5.000000 40.000000 7.000000 1.000000 0.000000 1.000000
2.000000 1.000000 39.400000 110.000000 35.000000 4.000000 3.000000 6.000000 0.000000 0.000000 3.000000 3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 55.000000 8.700000 0.000000 0.000000 1.000000
1.000000 1.000000 39.900000 72.000000 60.000000 1.000000 1.000000 5.000000 2.000000 5.000000 4.000000 4.000000 3.000000 1.000000 0.000000 4.000000 4.000000 46.000000 6.100000 2.000000 0.000000 1.000000
2.000000 1.000000 38.400000 48.000000 16.000000 1.000000 0.000000 1.000000 1.000000 1.000000 3.000000 1.000000 2.000000 3.000000 5.500000 4.000000 3.000000 49.000000 6.800000 0.000000 0.000000 1.000000
1.000000 1.000000 38.600000 42.000000 34.000000 2.000000 1.000000 4.000000 0.000000 2.000000 3.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 48.000000 7.200000 0.000000 0.000000 1.000000
1.000000 9.000000 38.300000 130.000000 60.000000 0.000000 3.000000 0.000000 1.000000 2.000000 4.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 50.000000 70.000000 0.000000 0.000000 1.000000
1.000000 1.000000 38.100000 60.000000 12.000000 3.000000 3.000000 3.000000 1.000000 0.000000 4.000000 3.000000 3.000000 2.000000 2.000000 0.000000 0.000000 51.000000 65.000000 0.000000 0.000000 1.000000
2.000000 1.000000 37.800000 60.000000 42.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000
1.000000 1.000000 38.300000 72.000000 30.000000 4.000000 3.000000 3.000000 2.000000 3.000000 3.000000 3.000000 2.000000 1.000000 0.000000 3.000000 5.000000 43.000000 7.000000 2.000000 3.900000 1.000000
1.000000 1.000000 37.800000 48.000000 12.000000 3.000000 1.000000 1.000000 1.000000 0.000000 3.000000 2.000000 1.000000 1.000000 0.000000 1.000000 3.000000 37.000000 5.500000 2.000000 1.300000 1.000000
1.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.000000
2.000000 1.000000 37.700000 48.000000 0.000000 2.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 45.000000 76.000000 0.000000 0.000000 1.000000
2.000000 1.000000 37.700000 96.000000 30.000000 3.000000 3.000000 4.000000 2.000000 5.000000 4.000000 4.000000 3.000000 2.000000 4.000000 4.000000 5.000000 66.000000 7.500000 0.000000 0.000000 -1.000000
2.000000 1.000000 37.200000 108.000000 12.000000 3.000000 3.000000 4.000000 2.000000 2.000000 4.000000 2.000000 0.000000 3.000000 6.000000 3.000000 3.000000 52.000000 8.200000 3.000000 7.400000 -1.000000
1.000000 1.000000 37.200000 60.000000 0.000000 2.000000 1.000000 1.000000 1.000000 3.000000 3.000000 3.000000 2.000000 1.000000 0.000000 4.000000 5.000000 43.000000 6.600000 0.000000 0.000000 1.000000
1.000000 1.000000 38.200000 64.000000 28.000000 1.000000 1.000000 1.000000 1.000000 3.000000 1.000000 0.000000 0.000000 0.000000 0.000000 4.000000 4.000000 49.000000 8.600000 2.000000 6.600000 1.000000
1.000000 1.000000 0.000000 100.000000 30.000000 3.000000 3.000000 4.000000 2.000000 5.000000 4.000000 4.000000 3.000000 3.000000 0.000000 4.000000 4.000000 52.000000 6.600000 0.000000 0.000000 1.000000
2.000000 1.000000 0.000000 104.000000 24.000000 4.000000 3.000000 3.000000 2.000000 4.000000 4.000000 3.000000 0.000000 3.000000 0.000000 0.000000 2.000000 73.000000 8.400000 0.000000 0.000000 -1.000000
2.000000 1.000000 38.300000 112.000000 16.000000 0.000000 3.000000 5.000000 2.000000 0.000000 0.000000 1.000000 1.000000 2.000000 0.000000 0.000000 5.000000 51.000000 6.000000 2.000000 1.000000 -1.000000
1.000000 1.000000 37.800000 72.000000 0.000000 0.000000 3.000000 0.000000 1.000000 5.000000 3.000000 1.000000 0.000000 1.000000 0.000000 1.000000 1.000000 56.000000 80.000000 1.000000 2.000000 1.000000
2.000000 1.000000 38.600000 52.000000 0.000000 1.000000 1.000000 1.000000 1.000000 3.000000 3.000000 2.000000 1.000000 1.000000 0.000000 1.000000 3.000000 32.000000 6.600000 1.000000 5.000000 1.000000
1.000000 9.000000 39.200000 146.000000 96.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.000000

horseColicTest2.txt

2.000000 1.000000 38.500000 54.000000 20.000000 0.000000 1.000000 2.000000 2.000000 3.000000 4.000000 1.000000 2.000000 2.000000 5.900000 0.000000 2.000000 42.000000 6.300000 0.000000 0.000000 1.000000
2.000000 1.000000 37.600000 48.000000 36.000000 0.000000 0.000000 1.000000 1.000000 0.000000 3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 44.000000 6.300000 1.000000 5.000000 1.000000
1.000000 1.000000 37.700000 44.000000 28.000000 0.000000 4.000000 3.000000 2.000000 5.000000 4.000000 4.000000 1.000000 1.000000 0.000000 3.000000 5.000000 45.000000 70.000000 3.000000 2.000000 1.000000
1.000000 1.000000 37.000000 56.000000 24.000000 3.000000 1.000000 4.000000 2.000000 4.000000 4.000000 3.000000 1.000000 1.000000 0.000000 0.000000 0.000000 35.000000 61.000000 3.000000 2.000000 -1.000000
2.000000 1.000000 38.000000 42.000000 12.000000 3.000000 0.000000 3.000000 1.000000 1.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 2.000000 37.000000 5.800000 0.000000 0.000000 1.000000
1.000000 1.000000 0.000000 60.000000 40.000000 3.000000 0.000000 1.000000 1.000000 0.000000 4.000000 0.000000 3.000000 2.000000 0.000000 0.000000 5.000000 42.000000 72.000000 0.000000 0.000000 1.000000
2.000000 1.000000 38.400000 80.000000 60.000000 3.000000 2.000000 2.000000 1.000000 3.000000 2.000000 1.000000 2.000000 2.000000 0.000000 1.000000 1.000000 54.000000 6.900000 0.000000 0.000000 1.000000
2.000000 1.000000 37.800000 48.000000 12.000000 2.000000 1.000000 2.000000 1.000000 3.000000 0.000000 1.000000 2.000000 0.000000 0.000000 2.000000 0.000000 48.000000 7.300000 1.000000 0.000000 1.000000
2.000000 1.000000 37.900000 45.000000 36.000000 3.000000 3.000000 3.000000 2.000000 2.000000 3.000000 1.000000 2.000000 1.000000 0.000000 3.000000 0.000000 33.000000 5.700000 3.000000 0.000000 1.000000
2.000000 1.000000 39.000000 84.000000 12.000000 3.000000 1.000000 5.000000 1.000000 2.000000 4.000000 2.000000 1.000000 2.000000 7.000000 0.000000 4.000000 62.000000 5.900000 2.000000 2.200000 -1.000000
2.000000 1.000000 38.200000 60.000000 24.000000 3.000000 1.000000 3.000000 2.000000 3.000000 3.000000 2.000000 3.000000 3.000000 0.000000 4.000000 4.000000 53.000000 7.500000 2.000000 1.400000 1.000000
1.000000 1.000000 0.000000 140.000000 0.000000 0.000000 0.000000 4.000000 2.000000 5.000000 4.000000 4.000000 1.000000 1.000000 0.000000 0.000000 5.000000 30.000000 69.000000 0.000000 0.000000 -1.000000
1.000000 1.000000 37.900000 120.000000 60.000000 3.000000 3.000000 3.000000 1.000000 5.000000 4.000000 4.000000 2.000000 2.000000 7.500000 4.000000 5.000000 52.000000 6.600000 3.000000 1.800000 -1.000000
2.000000 1.000000 38.000000 72.000000 36.000000 1.000000 1.000000 3.000000 1.000000 3.000000 0.000000 2.000000 2.000000 1.000000 0.000000 3.000000 5.000000 38.000000 6.800000 2.000000 2.000000 1.000000
2.000000 9.000000 38.000000 92.000000 28.000000 1.000000 1.000000 2.000000 1.000000 1.000000 3.000000 2.000000 3.000000 0.000000 7.200000 0.000000 0.000000 37.000000 6.100000 1.000000 1.100000 1.000000
1.000000 1.000000 38.300000 66.000000 30.000000 2.000000 3.000000 1.000000 1.000000 2.000000 4.000000 3.000000 3.000000 2.000000 8.500000 4.000000 5.000000 37.000000 6.000000 0.000000 0.000000 1.000000
2.000000 1.000000 37.500000 48.000000 24.000000 3.000000 1.000000 1.000000 1.000000 2.000000 1.000000 0.000000 1.000000 1.000000 0.000000 3.000000 2.000000 43.000000 6.000000 1.000000 2.800000 1.000000
1.000000 1.000000 37.500000 88.000000 20.000000 2.000000 3.000000 3.000000 1.000000 4.000000 3.000000 3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 35.000000 6.400000 1.000000 0.000000 -1.000000
2.000000 9.000000 0.000000 150.000000 60.000000 4.000000 4.000000 4.000000 2.000000 5.000000 4.000000 4.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.000000
1.000000 1.000000 39.700000 100.000000 30.000000 0.000000 0.000000 6.000000 2.000000 4.000000 4.000000 3.000000 1.000000 0.000000 0.000000 4.000000 5.000000 65.000000 75.000000 0.000000 0.000000 -1.000000
1.000000 1.000000 38.300000 80.000000 0.000000 3.000000 3.000000 4.000000 2.000000 5.000000 4.000000 3.000000 2.000000 1.000000 0.000000 4.000000 4.000000 45.000000 7.500000 2.000000 4.600000 1.000000
2.000000 1.000000 37.500000 40.000000 32.000000 3.000000 1.000000 3.000000 1.000000 3.000000 2.000000 3.000000 2.000000 1.000000 0.000000 0.000000 5.000000 32.000000 6.400000 1.000000 1.100000 1.000000
1.000000 1.000000 38.400000 84.000000 30.000000 3.000000 1.000000 5.000000 2.000000 4.000000 3.000000 3.000000 2.000000 3.000000 6.500000 4.000000 4.000000 47.000000 7.500000 3.000000 0.000000 -1.000000
1.000000 1.000000 38.100000 84.000000 44.000000 4.000000 0.000000 4.000000 2.000000 5.000000 3.000000 1.000000 1.000000 3.000000 5.000000 0.000000 4.000000 60.000000 6.800000 0.000000 5.700000 -1.000000
2.000000 1.000000 38.700000 52.000000 0.000000 1.000000 1.000000 1.000000 1.000000 1.000000 3.000000 1.000000 0.000000 0.000000 0.000000 1.000000 3.000000 4.000000 74.000000 0.000000 0.000000 1.000000
2.000000 1.000000 38.100000 44.000000 40.000000 2.000000 1.000000 3.000000 1.000000 3.000000 3.000000 1.000000 0.000000 0.000000 0.000000 1.000000 3.000000 35.000000 6.800000 0.000000 0.000000 1.000000
2.000000 1.000000 38.400000 52.000000 20.000000 2.000000 1.000000 3.000000 1.000000 1.000000 3.000000 2.000000 2.000000 1.000000 0.000000 3.000000 5.000000 41.000000 63.000000 1.000000 1.000000 1.000000
1.000000 1.000000 38.200000 60.000000 0.000000 1.000000 0.000000 3.000000 1.000000 2.000000 1.000000 1.000000 1.000000 1.000000 0.000000 4.000000 4.000000 43.000000 6.200000 2.000000 3.900000 1.000000
2.000000 1.000000 37.700000 40.000000 18.000000 1.000000 1.000000 1.000000 0.000000 3.000000 2.000000 1.000000 1.000000 1.000000 0.000000 3.000000 3.000000 36.000000 3.500000 0.000000 0.000000 1.000000
1.000000 1.000000 39.100000 60.000000 10.000000 0.000000 1.000000 1.000000 0.000000 2.000000 3.000000 0.000000 0.000000 0.000000 0.000000 4.000000 4.000000 0.000000 0.000000 0.000000 0.000000 1.000000
2.000000 1.000000 37.800000 48.000000 16.000000 1.000000 1.000000 1.000000 1.000000 0.000000 1.000000 1.000000 2.000000 1.000000 0.000000 4.000000 3.000000 43.000000 7.500000 0.000000 0.000000 1.000000
1.000000 1.000000 39.000000 120.000000 0.000000 4.000000 3.000000 5.000000 2.000000 2.000000 4.000000 3.000000 2.000000 3.000000 8.000000 0.000000 0.000000 65.000000 8.200000 3.000000 4.600000 1.000000
1.000000 1.000000 38.200000 76.000000 0.000000 2.000000 3.000000 2.000000 1.000000 5.000000 3.000000 3.000000 1.000000 2.000000 6.000000 1.000000 5.000000 35.000000 6.500000 2.000000 0.900000 1.000000
2.000000 1.000000 38.300000 88.000000 0.000000 0.000000 0.000000 6.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.000000
1.000000 1.000000 38.000000 80.000000 30.000000 3.000000 3.000000 3.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 6.000000 0.000000 0.000000 48.000000 8.300000 0.000000 4.300000 1.000000
1.000000 1.000000 0.000000 0.000000 0.000000 3.000000 1.000000 1.000000 1.000000 2.000000 3.000000 3.000000 1.000000 3.000000 6.000000 4.000000 4.000000 0.000000 0.000000 2.000000 0.000000 -1.000000
1.000000 1.000000 37.600000 40.000000 0.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 1.000000 1.000000 0.000000 0.000000 2.000000 2.100000 1.000000
2.000000 1.000000 37.500000 44.000000 0.000000 1.000000 1.000000 1.000000 1.000000 3.000000 3.000000 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 45.000000 5.800000 2.000000 1.400000 1.000000
2.000000 1.000000 38.200000 42.000000 16.000000 1.000000 1.000000 3.000000 1.000000 1.000000 3.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 35.000000 60.000000 1.000000 1.000000 1.000000
2.000000 1.000000 38.000000 56.000000 44.000000 3.000000 3.000000 3.000000 0.000000 0.000000 1.000000 1.000000 2.000000 1.000000 0.000000 4.000000 0.000000 47.000000 70.000000 2.000000 1.000000 1.000000

#-*- coding: utf-8 -*-  #添加中文注释
'''
Created on Nov 28, 2010
Adaboost is short for Adaptive Boosting
@author: Peter
'''
from numpy import *

def loadSimpData():
    datMat = matrix([[ 1. ,  2.1],
        [ 2. ,  1.1],
        [ 1.3,  1. ],
        [ 1. ,  1. ],
        [ 2. ,  1. ]])
    classLabels = [1.0, 1.0, -1.0, -1.0, 1.0]
    return datMat,classLabels

#*****加载数据
def loadDataSet(fileName):       
    #特征数(包含最后一列的类别标签)
    numFeat = len(open(fileName).readline().split('\t'))   
    dataMat = []; labelMat = []
    fr = open(fileName)
    #按行读取
    for line in fr.readlines():
        lineArr =[] 
        curLine = line.strip().split('\t')
        for i in range(numFeat-1):
            lineArr.append(float(curLine[i]))
        #把每个样本特征存入 dataMat中  
        dataMat.append(lineArr)
        #存每个样本的标签
        labelMat.append(float(curLine[-1]))
    return dataMat,labelMat

#*****通过取某列特征进行阈值比较,进而对数据分类,阈值的一边为-1类,另一边为+1类
#dataMatrix:样本数据
#dimen:特征编号,将该列特征进行阈值比较对数据分类
#threshVal:阈值
#threshIneq:两种阈值选择:‘lt’:小于阈值的预测类别值为-1,‘gt’:大于阈值的预测类别取-1
def stumpClassify(dataMatrix,dimen,threshVal,threshIneq):#just classify the data
    #单层决策树,根据与阈值比较,返回类别
    retArray = ones((shape(dataMatrix)[0],1))
    #小于阈值,取类别-1
    if threshIneq == 'lt':
        retArray[dataMatrix[:,dimen] <= threshVal] = -1.0
    #大于阈值,取类别-1    
    else:
        retArray[dataMatrix[:,dimen] > threshVal] = -1.0
    return retArray

# *****构建单层决策分类树,adaboost每次迭代过程中的基分类器
# dataArr:训练样本数据
# classLabels:训练数据的真实类别标签
# D:样本权值
def buildStump(dataArr,classLabels,D):
    dataMatrix = mat(dataArr); 
    labelMat = mat(classLabels).T
    #训练数据个数m,特征维数n
    m,n = shape(dataMatrix)
    #某个特征值范围内,递增选阈值,numSteps为所选阈值总数
    numSteps = 10.0   
    #字典,存储在给定样本权值D下的决策树
    bestStump = {} 
    bestClasEst = mat(zeros((m,1)))#最佳预测类别
    minError = inf #初始化误差率为无穷     
    #遍历所有特征维度
    for i in range(n): 
        #求当前特征的范围值,从小到大按一定步长递增选择阈值
        rangeMin = dataMatrix[:,i].min(); rangeMax = dataMatrix[:,i].max();
        stepSize = (rangeMax-rangeMin)/numSteps #步长

        #遍历整个特征值范围,递增取步长
        #(多取了两个值j=-1,j=int(numSteps)+1)
        for j in range(-1,int(numSteps)+1):
        #for j in range(0,int(numSteps)):
            #两种阈值划分:'lt'表示小于阈值取-1,大于阈值取+1;‘gt’与‘lt’相反
            for inequal in ['lt', 'gt']: 
                #按步长单调递增取阈值
                threshVal = (rangeMin + float(j) * stepSize)
                #利用单层决策树预测类别
                predictedVals = stumpClassify(dataMatrix,i,threshVal,inequal)
                #统计预测错误情况:预测正确的样本记0,预测错误的记1
                errArr = mat(ones((m,1)))
                errArr[predictedVals == labelMat] = 0
                #分类误差率:错分样本的权值之和
                weightedError = D.T*errArr                  

                #求最小的分类误差率下的决策树分类器
                if weightedError < minError:
                    minError = weightedError
                    #基分类器的预测结果
                    bestClasEst = predictedVals.copy() #备份预测值
                    #最佳单层决策树的信息
                    bestStump['dim'] = i #划分维度
                    bestStump['thresh'] = threshVal#划分阈值
                    bestStump['ineq'] = inequal #划分方式,取'lt'or'gt'
    return bestStump,minError,bestClasEst 


#*****adaboost算法
#dataArr:训练样本数据
#classLabels:训练样本的类别
#numIt:迭代次数
def adaBoostTrainDS(dataArr,classLabels,numIt=40):
    #存每次迭代中生成的弱分类器
    weakClassArr = []
    #训练样本数
    m = shape(dataArr)[0]

    #step1:初始化权值分布
    D = mat(ones((m,1))/m) 
    #存每次迭代后的累计估计值
    aggClassEst = mat(zeros((m,1)))

    #step2:迭代
    for i in range(numIt):
        #step2.1-2.2:基本弱分类器及分类误差率
        bestStump,error,classEst = buildStump(dataArr,classLabels,D)
        print "D:",D.T

        #step2.3:计算alpha
        #max(error,1e-16)为了防止error=0时除以0溢出
        alpha = float(0.5*log((1.0-error)/max(error,1e-16)))
        #存最佳分类器的权重alpha
        bestStump['alpha'] = alpha  
        #将各个基分类器的相关信息存在数组中
        weakClassArr.append(bestStump)                  
        #打印预测的类别
        print "classEst: ",classEst.T

        #step2.4:更新样本权值D
        #计算更新权值的指数部分
        expon = multiply(-1*alpha*mat(classLabels).T,classEst) 
        #更新样本权值D
        D = multiply(D,exp(expon))                             
        D = D/D.sum() #归一化

        #step3:构建本次迭代后的各个基分类器的线性组合f(x)
        #本次迭代的累计估计值之和
        aggClassEst += alpha*classEst
        print "aggClassEst: ",aggClassEst.T

        #step4:本次迭代后的分类器G(x)=sign(f(x))
        #本次迭代后训练样本的分类情况:错误标1,正确标0,#计算分类错误率:错误数/总数
        aggErrors = multiply(sign(aggClassEst) != mat(classLabels).T,ones((m,1)))
        #本轮迭代后集成的分类错误率
        errorRate = aggErrors.sum()/m
        print "total error: ",errorRate
        #当分类错误率为0,停止迭代
        if errorRate == 0.0: break  
    return weakClassArr,aggClassEst

#*****测试算法性能
#datToClass:待分类的测试数据
#classifierArr:训练出的集成分类器
def adaClassify(datToClass,classifierArr):  
    #测试样本的特征属性(不含标签)
    dataMatrix = mat(datToClass)
    #测试样本个数
    m = shape(dataMatrix)[0]
    aggClassEst = mat(zeros((m,1)))
    #多个分类器预测值,进行加权求和
    for i in range(len(classifierArr)):
        classEst = stumpClassify(dataMatrix,classifierArr[i]['dim'],\
                                 classifierArr[i]['thresh'],\
                                 classifierArr[i]['ineq']) 
        aggClassEst += classifierArr[i]['alpha']*classEst
        print 'aggClassEst:',aggClassEst
    #最终预测的类别    
    return sign(aggClassEst)

def plotROC(predStrengths, classLabels):
    import matplotlib.pyplot as plt
    cur = (1.0,1.0) #cursor
    ySum = 0.0 #variable to calculate AUC
    #正类样本数
    numPosClas = sum(array(classLabels)==1.0)
    #y轴修正步长
    yStep = 1/float(numPosClas)
    #x轴修正步长
    xStep = 1/float(len(classLabels)-numPosClas)
    #预测估计值从小到大排序
    sortedIndicies = predStrengths.argsort()#get sorted index, it's reverse
    fig = plt.figure()
    fig.clf()
    ax = plt.subplot(111)
    #loop through all the values, drawing a line segment at each point
    for index in sortedIndicies.tolist()[0]:
        if classLabels[index] == 1.0:
            delX = 0; delY = yStep;  #y轴方向下降一个步长
        else:
            delX = xStep; delY = 0;  #x轴方向倒退一个步长
            ySum += cur[1]
        #draw line from cur to (cur[0]-delX,cur[1]-delY)
        ax.plot([cur[0],cur[0]-delX],[cur[1],cur[1]-delY], c='b')
        cur = (cur[0]-delX,cur[1]-delY)
    ax.plot([0,1],[0,1],'b--')
    plt.xlabel('False positive rate'); plt.ylabel('True positive rate')
    plt.title('ROC curve for AdaBoost horse colic detection system')
    ax.axis([0,1,0,1])
    plt.show()
    print "the Area Under the Curve is: ",ySum*xStep


if __name__=="__main__":
    #-------------------二维数据构建单层决策树的集成分类器
    datamat,classlabels=loadSimpData()
    classifierArray,aggClassEst=adaBoostTrainDS(datamat,classlabels,10)
    print 'classifierArray:',classifierArray    
    #对测试样本进行预测类别标签
    result=adaClassify([[0,0],[3,4],[5,5]],classifierArray)
    print 'result=',result

   #  ##-------------------马疝病数据集
   #  dataArr,labelArr=loadDataSet('horseColicTraining2.txt')
   #  classifierArray,aggClassEst=adaBoostTrainDS(dataArr,labelArr,10)
   #
   # ##马疝病测试分类器性能
   #  testArr,testlabelArr=loadDataSet('horseColicTest2.txt')
   #  predictlabel=adaClassify(testArr,classifierArray)#预测标签
   #  #计算测试数据的分类错误率
   #  test_num=len(testlabelArr)
   #  errArr=mat(ones((test_num,1)))
   #  err_num=errArr[predictlabel!=mat(testlabelArr).T].sum()
   #  err_rate=err_num/test_num
   #  print'err_rate=',err_rate
#-*- coding: utf-8 -*-  #添加中文注释

from numpy import *

import adaboost

#-------------------简单的5个二维样本,测试adaboost
##datamat,classlabels=adaboost.loadSimpData()
##classifierArray,aggClassEst=adaboost.adaBoostTrainDS(datamat,classlabels,9)
##print 'classifierArray:',classifierArray
##
##
##result=adaboost.adaClassify([[1,3],[5,5]],classifierArray)
##print 'result=',result

##-------------------马疝病数据集
dataArr,labelArr=adaboost.loadDataSet('horseColicTraining2.txt')
classifierArray,aggClassEst=adaboost.adaBoostTrainDS(dataArr,labelArr,10)



##计算训练数据的分类错误率
#training_num=len(labelArr)
#traingerrArr=mat(ones((training_num,1)))
#traingerr_num=traingerrArr[sign(aggClassEst)!=mat(labelArr).T].sum()
#traingerr_rate=traingerr_num/training_num
#
####马疝病测试分类器性能
##testArr,testlabelArr=adaboost.loadDataSet('horseColicTest2.txt')
##predictlabel=adaboost.adaClassify(testArr,classifierArray)#预测标签
###计算测试数据的分类错误率
##test_num=len(testlabelArr)
##errArr=mat(ones((test_num,1)))
##err_num=errArr[predictlabel!=mat(testlabelArr).T].sum()
##err_rate=err_num/test_num
#
#print 'traingerr_rate=',traingerr_rate  #训练样本分类错误率
##print 'test err_num=',err_num
#print 'test err_rate=',err_rate        #测试样本分类错误率

#----------------------ROC曲线
# dataArr,labelArr=adaboost.loadDataSet('horseColicTraining2.txt')
# classifierArray,aggClassEst=adaboost.adaBoostTrainDS(dataArr,labelArr,10)
# adaboost.plotROC(aggClassEst.T,labelArr)
Python实现基于Isomap降维算法与改进蜜獾算法IHBA的Adaboost-SVM集成多输入分类预测的详细项目实例 因此,本项目旨在通过结合Itomsp降维技术她IHBS优化她Sdsboott-TVM集成模型,构建一个强大她多输入分类预测系统,为各类高维数据她分类问题提供一个高效、准确她解决方案。利用NVIDIS她CUDS技术,TfntoitFlow和PyToitch等深度学习框架能够利用GPU进行高效她并行计算,大大加速模型她推理速度,尤其她在深度神经网络模型她推理中,GPU她并行计算能力非常重要。她传统她线她降维方法相比,Itomsp能够更好地处理数据中她非线她关系,从而有效提升分类器她精度。 阅读详情

相关推荐

【机器学习】logistic回归病马训练集horseColicTraining.txt

机器学习——logistic回归,预测病马死亡率的案例的训练集。提供给大家训练使用。。。。。。。。。。。。。。。

《机器学习实战》——第7章 利用AdaBoost元算法提高分类性能

我们可以将不同的分类器组合起来,而这种组合结果则被称为集成方法或者元算法。使用集成方法时会有多种形式:可以是不同算法的集成,也可以是统一算法在不同设置下的集成,还可以是数据集不同部分分配给不同分类器之后的集成。优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。缺点:对离群点敏感。适用数据类型:数值型和标称型数据。

fjyalzl的博客 684

马疝病数据集(horseColic)

包含训练集(299条)和测试集(67条)数据

《机器学习实战》-Logistic回归(2)

Logistic回归 示例:从疝气病症预测病马的死亡率 数据缺失 此示例的数据存在缺失性的问题,所以首先应该解决这个问题 对于某些特征缺失的,如果该特征一般不会取0,那可以用0代替该特征值,在更新梯度公式中,如果该特征值为0,则不会更改其权重值。 对于某些类别缺失的,可以直接将该数据丢弃。 测试算法 def classifyvector(inx,weight):

机器学习-学习记录 337

testSet.txt

包含聚类算法仿真数据,类似Iris数据,但是比Iris数据仿真之后的效果图好,可较好的看出准确与不准确的聚类效果的数据

疝气病病马horseColicData.zip

逻辑回归预测病马数据集,分为测试集和训练集,每个样本共22个字段,最后一个字段是其类别标签0或1,字段分隔符为'\t'

机器学习实战:AdaBoost预测病马率

import numpy as np """ 函数说明:加载数据集 Parameters: filename - 文件名 Returns: dataMat - 数据集 labelMat - 标签 """ def loadDataSet(filename): numFeat = len((open(filename).readline().split('\t'))) dataMat = []; labelMat = [] fr = open(filename.

记录学习历程 2538

用adaboost预测马病

1. 以机器学习中的horseColicTraining 为训练样本, horseColicTest为测试样本 2. 实践中当训练次数大的时候会过拟合, 以最大训练次数40次, 取最大的auc的次数为最佳训练次数, 3. 每次训练都会计算auc并绘图, 迭代40次后, 依照最大auc的次数重新训练,得到3个弱分类器,此时 auc 0.526 4.进行测试, 测试集错误率17.91%

【AdaBoost算法】集成学习——AdaBoost算法实例说明

【AdaBoost算法】集成学习——AdaBoost算法实例说明 AdaBoost算法是数据挖掘十大算法之一,但是部分参考书上只给了该算法的数学推导过程,具体的流程并未详细举例加以解释,因此不利于学习者的掌握和领悟,通过查找相关资料,发现知乎有篇博文介绍的很是详细,并且附有具体实例加以理解。 (十三)通俗易懂理解——Adaboost算法原理 一、AdaBoost算法过程 给定训练数据集:(x1,y1),(x2,y2)···(xn,yn),其中yi属于{1,-1}用于表示训练样本的类别标签,i=1,…,N。A

NZR的blog 4700

【机器学习实战】机器学习实战第7章集成方法数据集-数据集

【机器学习实战】机器学习实战第7章集成方法数据集-数据集

华硕ROG幻16笔记本电脑模式切换管理工具完美替代华硕奥创中心管理工具

参考文档1这个工具可以完美替代华硕奥创中心工具,可以定制化不同模式下的CPU、GPU、风扇转速、电池计划等。是由华硕开发人员开发的一个纯绿色的系统管理工具。直接展示启动后的工具界面效果图:这个工具也可以一键式停止正在运行的华硕ASUS服务,减少不必要的资源消耗。

追梦&天空的博客 1万+

27 机器学习入门篇2 4-集成算法实例

1-集成算法实例概述 2-ROC与AUC指标 3-基础模型 4-集成实例 5-Stacking模型 6-效果改进 已看完::::::::::::::::::; ...

m0_48941160的博客 161

Windows(Win10、Win11)本地部署开源大模型保姆级教程

最近开源大模型可谓闹的沸沸扬扬,尤其是Microsoft开源的和Meta开源的llama3 70b,评测都已经接近了的水平。鉴于还有很多同学不会在上部署和使用本地模型,因此我们出一期保姆级教程。本文讲述了如何在上本地部署大模型。从最基础的软件安装到环境配置都进行了截图展示,希望对非计算机的同学也有所帮助。AI时代我们每个人都必须要掌握一些AI知识,相信不断学习的你一定不会被AI淘汰。这只是开始,后面我们还有很多工作要做,尤其是提示词和智能体。

AIGIS的博客 3万+

Python机器学习 集成算法实例

import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline SEED = 222 np.random.seed(SEED) df = pd.read_csv('input.csv') #切分训练集和测试集 from sklearn.model_selection import train_test_split from sklearn.metrics import roc_auc_.

weixin_44056948的博客 2616

Amesim基础篇-热仿真常用模型库-Thermal Hydraulic /Resistance

流体库、管路库在热管理中是必备模块,如动力电池液冷循环系统均需要Thermal Hydraulic /Resistance库的元件建模。

2201_75375391的博客 5674

前拉后推计划逻辑适用于哪些行业和企业规模?

《前拉后推计划逻辑的行业适用性分析》摘要:前拉后推计划逻辑(需求端后推锚定交付、供应端前拉匹配资源)最适用于需求波动大且具规模效益的行业,包括家具制造(定制化需求+批量运输)、机械装备(非标设备+部件采购)、消费电子(短周期产品+核心部件备货)及汽车配套(交期绑定+批量生产)等领域。该模式要求企业具备:1)独立计划部门;2)ERP/MES等信息系统;3)资源冗余能力,故更适配中型(1-10亿营收)和大型企业(10亿+)。小型企业需简化应用,仅聚焦关键环节。不适配需求稳定(如快消品)、无规模效益或短周期生产的

追随内心 144

集成学习笔记12-Stacking算法分析与案例调参实例

Stacking算法分析与案例调参实例 Stacking方法是一种分层模型集成框架。以两层为例,首先将数据集分成训练集和测试集,利用训练集训练得到多个初级学习器,然后用初级学习器对测试集进行预测,并将输出值作为下一阶段训练的输入值,最终的标签作为输出值,用于训练次级学习器(通常最后一级使用Logistic回归)。由于两次所使用的训练数据不同,因此可以在一定程度上防止过拟合。 由于要进行多次训练,因此这种方法要求训练数据很多,为了防止发生划分训练集和测试集后,测试集比例过小,生成的次级学习器泛化性能不强的问题

coldfish的博客 2672

基于Python的IMF经济数据爬取与分析:从入门到实战

本文详细介绍了如何使用Python爬取国际货币基金组织(IMF)的经济数据,包括最新的爬虫技术、反反爬策略、数据解析与存储方法。文章从IMF数据源分析开始,逐步讲解如何构建一个完整的爬虫系统,并提供了详细的代码实现和优化建议。通过本文,读者将掌握爬取复杂国际组织数据的关键技术,并能将这些技术应用于其他类似的数据获取场景。关键词:Python爬虫、IMF数据、经济数据获取、数据清洗、反爬策略IMF Data (data.imf.org) - 主要数据门户。

2201_76125261的博客 1439

boosting算法_集成算法-boosting之Adaboost原理及实例

 一、 在集成学习原理小结中,我们讲到了集成学习按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,另一类是个体学习器之间不存在强依赖关系。前者的代表算法就是是boosting系列算法。在boosting系列算法中, Adaboost是最著名的算法之一。Adaboost既可以用作分类,也可以用作回归。本文就对Adaboost算法做一个总结。Boosting算法的工...

weixin_39842918的博客 264

Android性能分析深度指南:Perfetto工具全面解析

本文深入探讨Android性能优化工具Perfetto的应用与实践。作为Google推出的新一代追踪系统,Perfetto整合了CPU调度、内存分配、电池状态等多维度分析功能,通过高性能数据处理和可视化界面帮助开发者定位性能瓶颈。文章系统介绍了Perfetto的架构原理、配置方法和核心功能,包括CPU性能分析、内存泄漏检测等关键技术。通过电商应用卡顿优化的实战案例,展示了如何利用数学建模(如帧时间公式$T_{\text{render}}\leq16.67\text{ms}$)指导性能调优。

郑伟强dev的专栏 144

基于STM32L4XX、HAL库的ESP32-S3-WROOM-1-N4 WIFI模块驱动程序设计

/ 检查是否收到完整的一行(以\r\n结尾)// 例如: 解析AT命令响应或MQTT消息等。// UART2初始化已在CubeMX中配置。// USART2初始化函数(由CubeMX生成)// 缓冲区溢出,重置。// 如果需要等待响应。// 处理接收到的数据。// 处理接收到的数据。// 等待ESP32模块启动。// 主循环其他任务。// 启用UART全局中断。// 发送HTTP GET请求。// 发送AT测试命令。// 连接Wi-Fi。// UART中断回调函数。

zhusl6688的博客 288

集成算法实例:泰坦尼克船员获救

import pandas #ipython notebook titanic = pandas.read_csv("titanic_train.csv") titanic.head(5) #print (titanic.describe()) print (titanic.describe()) 发现age中发生了数据缺失!!!! 需要进行数据预处理: numpy模块下的median作用...

欢迎来到关关雎鸠儿的博客 340

Ubuntu零基础入门到精通【1.2讲】:Ubuntu 与 Linux 的关系 —— 你用的到底是什么?

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 3368

【机器学习之集成学习算法-01】| 基于重抽样自举法的集成学习方法:Bagging袋装法和Random Forests随机森林算法原理及PM2.5浓度回归预测实例分析

集成学习是一种机器学习技术,其核心思想是通过结合多个基本模型的预测结果来提高整体性能。常见的集成学习方法包括bagging、boosting和stacking。

一伦明悦的博客 2556

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

决策树、随机森林集成算法(Titanic实例)

#coding:utf-8 import pandas #ipython notebook titanic = pandas.read_csv("titanic_train.csv") titanic.head(5) #print (titanic.describe()) titanic["Age"] = titanic["Age"].fillna(titanic["Age"].median()...

ITpfzl的博客 931

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Datawhale集成学习:XGBoost算法分析与案例调参实例

XGBoost算法 XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进。 XGBoost本质上还是一个GBDT,但是力争把速度和效率发挥到极致,所以叫X (Extreme) GBoosted,包括前面说过,两者都是boosting方法。 XGBoost是一个优化的分布式梯度增强库,旨在实现高效,灵活和便携。 它在Gradient Boosting框架下实现机器学习算法。 XGBoost提供了并行树提升(也称为GBDT,GBM) XGBoost利用了

weixin_41221544的博客 343

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 集成算法 理论
下一篇: ELK 问题
mllhxn
博客等级 码龄14年 116粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值