• 关于 html 画图 坐标 的搜索结果

问题

web页面画图 并保存到服务器端 时间紧 求现有的库

a123456678 2019-12-01 20:21:09 1025 浏览量 回答数 1

回答

除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类。因为Python中的sklearn库也集成了SVM算法,本文的运行环境是Pycharm。一、导入sklearn算法包  Scikit-Learn库已经实现了所有基本机器学习的算法,具体使用详见官方文档说明:http://scikit-learn.org/stable/auto_examples/index.html#support-vector-machines。  skleran中集成了许多算法,其导入包的方式如下所示,  逻辑回归:from sklearn.linear_model import LogisticRegression 朴素贝叶斯:from sklearn.naive_bayes import GaussianNB   K-近邻:from sklearn.neighbors import KNeighborsClassifier  决策树:from sklearn.tree import DecisionTreeClassifier  支持向量机:from sklearn import svm二、sklearn中svc的使用(1)使用numpy中的loadtxt读入数据文件  loadtxt()的使用方法:    fname:文件路径。eg:C:/Dataset/iris.txt。  dtype:数据类型。eg:float、str等。  delimiter:分隔符。eg:‘,’。  converters:将数据列与转换函数进行映射的字典。eg:{1:fun},含义是将第2列对应转换函数进行转换。  usecols:选取数据的列。  以Iris兰花数据集为例子:  由于从UCI数据库中下载的Iris原始数据集的样子是这样的,前四列为特征列,第五列为类别列,分别有三种类别Iris-setosa, Iris-versicolor, Iris-virginica。       当使用numpy中的loadtxt函数导入该数据集时,假设数据类型dtype为浮点型,但是很明显第五列的数据类型并不是浮点型。  因此我们要额外做一个工作,即通过loadtxt()函数中的converters参数将第五列通过转换函数映射成浮点类型的数据。  首先,我们要写出一个转换函数:123def iris_type(s):it = {'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2} return it[s]  接下来读入数据,converters={4: iris_type}中“4”指的是第5列:12path = u'D:/f盘/python/学习/iris.data' # 数据文件路径data = np.loadtxt(path, dtype=float, delimiter=',', converters={4: iris_type})  读入结果:  (2)将Iris分为训练集与测试集123x, y = np.split(data, (4,), axis=1)x = x[:, :2]x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1, train_size=0.6)  1. split(数据,分割位置,轴=1(水平分割) or 0(垂直分割))。  2. x = x[:, :2]是为方便后期画图更直观,故只取了前两列特征值向量训练。  3. sklearn.model_selection.train_test_split随机划分训练集与测试集。train_test_split(train_data,train_target,test_size=数字, random_state=0)  参数解释:  train_data:所要划分的样本特征集  train_target:所要划分的样本结果  test_size:样本占比,如果是整数的话就是样本的数量  random_state:是随机数的种子。  随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。(3)训练svm分类器123clf = svm.SVC(C=0.1, kernel='linear', decision_function_shape='ovr')clf = svm.SVC(C=0.8, kernel='rbf', gamma=20, decision_function_shape='ovr') clf.fit(x_train, y_train.ravel())  kernel='linear'时,为线性核,C越大分类效果越好,但有可能会过拟合(defaul C=1)。   kernel='rbf'时(default),为高斯核,gamma值越小,分类界面越连续;gamma值越大,分类界面越“散”,分类效果越好,但有可能会过拟合。  decision_function_shape='ovr'时,为one v rest,即一个类别与其他类别进行划分,  decision_function_shape='ovo'时,为one v one,即将类别两两之间进行划分,用二分类的方法模拟多分类的结果。(4)计算svc分类器的准确率123456print clf.score(x_train, y_train) # 精度y_hat = clf.predict(x_train)show_accuracy(y_hat, y_train, '训练集')print clf.score(x_test, y_test)y_hat = clf.predict(x_test)show_accuracy(y_hat, y_test, '测试集') 结果为:  如果想查看决策函数,可以通过decision_function()实现12print 'decision_function:n', clf.decision_function(x_train)print 'npredict:n', clf.predict(x_train) 结果为:  decision_function中每一列的值代表距离各类别的距离。(5)绘制图像  1.确定坐标轴范围,x,y轴分别表示两个特征12345x1_min, x1_max = x[:, 0].min(), x[:, 0].max() # 第0列的范围x2_min, x2_max = x[:, 1].min(), x[:, 1].max() # 第1列的范围x1, x2 = np.mgrid[x1_min:x1_max:200j, x2_min:x2_max:200j] # 生成网格采样点grid_test = np.stack((x1.flat, x2.flat), axis=1) # 测试点print 'grid_test = n', grid_testgrid_hat = clf.predict(grid_test) # 预测分类值grid_hat = grid_hat.reshape(x1.shape) # 使之与输入的形状相同  这里用到了mgrid()函数,该函数的作用这里简单介绍一下:   假设假设目标函数F(x,y)=x+y。x轴范围1~3,y轴范围4~6,当绘制图像时主要分四步进行:  【step1:x扩展】(朝右扩展): [1 1 1]    [2 2 2]   [3 3 3]  【step2:y扩展】(朝下扩展):   [4 5 6]   [4 5 6]   [4 5 6]  【step3:定位(xi,yi)】:   [(1,4) (1,5) (1,6)]   [(2,4) (2,5) (2,6)]   [(3,4) (3,5) (3,6)]  【step4:将(xi,yi)代入F(x,y)=x+y】  因此这里x1, x2 = np.mgrid[x1_min:x1_max:200j, x2_min:x2_max:200j]后的结果为:    再通过stack()函数,axis=1,生成测试点    2.指定默认字体12mpl.rcParams['font.sans-serif'] = [u'SimHei']mpl.rcParams['axes.unicode_minus'] = False  3.绘制123456789101112cm_light = mpl.colors.ListedColormap(['#A0FFA0', '#FFA0A0', '#A0A0FF'])cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])plt.pcolormesh(x1, x2, grid_hat, cmap=cm_light)plt.scatter(x[:, 0], x[:, 1], c=y, edgecolors='k', s=50, cmap=cm_dark) # 样本plt.scatter(x_test[:, 0], x_test[:, 1], s=120, facecolors='none', zorder=10) # 圈中测试集样本plt.xlabel(u'花萼长度', fontsize=13)plt.ylabel(u'花萼宽度', fontsize=13)plt.xlim(x1_min, x1_max)plt.ylim(x2_min, x2_max)plt.title(u'鸢尾花SVM二特征分类', fontsize=15)plt.grid()plt.show()   pcolormesh(x,y,z,cmap)这里参数代入x1,x2,grid_hat,cmap=cm_light绘制的是背景。   scatter中edgecolors是指描绘点的边缘色彩,s指描绘点的大小,cmap指点的颜色。   xlim指图的边界

xuning715 2019-12-02 01:10:19 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播