紧邻算法分类器之模拟图(实现模拟)(三)
来源:互联网 发布:如何改淘宝的主营类目 编辑:程序博客网 时间:2024/05/18 00:46
pl.legend()函数是显示图例,值得注意的是,plot函数,是通过点在坐标中出现的位置直线,如x=(1,4,3),y=(1,5,2),则先连接(1,1)和(4,5),然后连接(3,2)这样会出现杂乱无章的图形,所以,在通过数据库选出坐标后,通过属性从小到大排序,是横坐标的顺序是从小到大的。
显示结果如下:
书上的图:
两图仍有区别,如果要产生下图的形状,要使用函数模型(个人理解),暂时没有实施
程序
import pymssqlfrom numpy import * import matplotlib.pylab as pldef GetDataExecute(str): #该函数是为了通过sql语句获取数据 conn=pymssql.connect(host='localhost',database='test',user='sa',password='123') cur=conn.cursor() cur.execute(str) d= cur.fetchall()#数据读入d中,在最后返回 conn.commit() cur.close() conn.close() return ddef GetCoordinate(key): #通过传入属性值,组成相应的sql语句,以免,对不同的属性重复写代码,可以,将该函数再进一步的改进,传入属性和标签名,这样,函数将#更加简洁 setosa = """select %s, count(%s)as feq from iris where class_label='Iris-setosa' group by %s order by %s""" % (key,key,key,key) versicolor = """select %s, count(%s)as feq from iris where class_label='Iris-versicolor' group by %s order by %s""" % (key,key,key,key) virginica = """select %s, count(%s)as feq from iris where class_label='Iris-virginica' group by %s order by %s""" % (key,key,key,key) setosa_data = GetDataExecute(setosa) versicolor_data=GetDataExecute(versicolor) virginica_data=GetDataExecute(virginica) setosa_x=[xi[0]for xi in setosa_data] setosa_y=[yi[1]for yi in setosa_data] versicolor_x=[xi[0]for xi in versicolor_data] versicolor_y=[yi[1]for yi in versicolor_data] virginica_x=[xi[0]for xi in virginica_data] virginica_y=[yi[1]for yi in virginica_data] l= list() l.append((setosa_x,setosa_y,"setosa")) l.append((versicolor_x,versicolor_y,"versicolor")) l.append((virginica_x,virginica_y,"virginica")) return l#以下是获取坐标,放入list中data = list()data.append(GetCoordinate("sepal_length"))data.append(GetCoordinate("sepal_width"))data.append(GetCoordinate("petal_length"))data.append(GetCoordinate("petal_width"))position = 0for d in data: ax = fig.add_subplot(2,2,position+1)#position是画图的位置,2,2表示是2行两列的图 pl.plot(d[0][0],d[0][1],'b--',label="$"+ d[0][2] +"$",color="blue",linewidth=2) pl.plot(d[1][0],d[1][1],'k--',label="$"+ d[1][2] +"$",color="black",linewidth=2) pl.plot(d[2][0],d[2][1],'r',label="$"+ d[2][2] +"$",linewidth=2) pl.legend() position +=1fig.subplots_adjust(hspace=1) #加入一行的间隔pl.show() #显示
- 紧邻算法分类器之模拟图(实现模拟)(三)
- 紧邻算法分类器之模拟图(二)
- Nearest-Neighbor Classifier紧邻算法分类器(一)
- TSP 之模拟退火算法 cpp实现
- 分类模拟
- 数据结构与算法之模拟算法 C++实现
- SkyEye硬件模拟平台:硬件仿真实现之三
- Android开发之路(三)---模拟打电话的实现
- Wheel ProgressBar 实现之三——模拟进度过程
- 操作系统进程调度之多级反馈队列算法模拟实现
- JAVA线程并发性之CAS算法,模拟实现代码
- 银行家算法的模拟实现
- A*启发式算法模拟实现
- 银行家算法vc++模拟实现
- 模拟百度分页算法实现
- 模拟退火算法Python实现
- 模拟退火算法Python实现
- 模拟实现操作系统调度算法
- 学习rtsp的一些心得
- uva 10795 A Different Task
- 1. x-loader执行流程分析
- c/c++/objective-c对于大端小端的判断分析
- [iphone]NSArray和NSMutableArray
- 紧邻算法分类器之模拟图(实现模拟)(三)
- 简单的分页(第一种)
- Time Machine 教程 OS X系统备份恢复还原教程
- [C#]手把手教你打造Socket的TCP通讯连接(一)
- qt加入线程支持
- 写给四年前刚开始编程的自己
- 编程之美 1.2 象棋将帅问题
- cocos2d-x 中layer如何实现模态对话框
- PC维护技巧