2.Iris数据集:感知器模型的简单实战(分类)_iris = datasets.load_iris() x = iris["data"][:,(2,-程序员宅基地

技术标签: 机器学习实战  

一、程序

from sklearn import datasets
import numpy as np
iris=datasets.load_iris()
X=iris.data[:,[2,3]]#2:3才不算3
y=iris.target

a=np.unique(y)#返回类标值

#交叉验证
from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=0)

#数据标准化
from sklearn.preprocessing import StandardScaler
sc=StandardScaler()
sc.fit(X_train)#计算得到标准化要的u,方差
X_train_std=sc.transform(X_train)#通过前面计算得到的参数对训练集、测试集分别进行处理
X_test_std=sc.transform(X_test)

#利用训练集进行建模
from sklearn.linear_model import Perceptron
ppn=Perceptron(n_iter=40,eta0=0.1,random_state=0)
ppn.fit(X_train_std,y_train)

#在测试集上运用predict方法进行预测
y_pred=ppn.predict(X_test_std)
print('Misclassified samples:%d' %(y_test!=y_pred).sum())

#计算分类准确率
from sklearn.metrics import accuracy_score
print('Accuracy:%.2f' % accuracy_score(y_test,y_pred))

#绘图
from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt

def plot_decison_regions(X,y,classifier,test_idx=None,resolution=0.02):
    
    #设置标记生成器和颜色映射
    markers=('s','x','o','^','v')
    colors=('red','blue','lightgreen','gray','cyan')#一维
    cmap=ListedColormap(colors[:len(np.unique(y))])
    
    #plot the decision surface
    x1_min,x1_max=X[:,0].min()-1,X[:,0].max()+1
    x2_min,x2_max=X[:,1].min()-1,X[:,0].max()+1
    xx1,xx2=np.meshgrid(np.arange(x1_min,x1_max,resolution),np.arange(x2_min,x2_max,resolution))
    Z=classifier.predict(np.array([xx1.ravel(),xx2.ravel()]).T)
    Z=Z.reshape(xx1.shape)
    plt.contourf(xx1,xx2,Z,alpha=0.4,cmap=cmap)
    plt.xlim(xx1.min(),xx1.max())
    plt.ylim(xx2.min(),xx2.max())
    
    #plot all samples
    X_test,y_test=X[test_idx,:],y[test_idx]
    for idx,c1 in enumerate(np.unique(y)):
        plt.scatter(x=X[y==c1,0],y=X[y==c1,1],alpha=0.8,c=cmap(idx),marker=markers[idx],label=c1)
    
    #用于区分哪些是测试集的结果    
    if test_idx:
        X_test,y_test=X[test_idx,:],y[test_idx]
        plt.scatter(X_test[:,0],X_test[:,1],c='',alpha=1.0,linewidth=1,marker='o',s=55,label='test set')
        
#呈现图像
X_combined_std=np.vstack((X_train_std,X_test_std))
y_combined=np.hstack((y_train,y_test))
plot_decison_regions(X=X_combined_std,y=y_combined,classifier=ppn,test_idx=range(105,150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal length [standardized]')
plt.legend(loc='upper left')
plt.show()

二、展示结果



可以看出,45个测试集中有4个分类错误。


附录:

np.meshgrid函数与ravel函数

meshgrid的作用适用于生成网格型数据,可以接受两个一维数组生成两个二维矩阵,对应两个数组中所有的(x,y)对。接下来通过简单的shell交互来演示一下这个功能的使用,并做一下小结。

In [65]: xnums =np.arange(4)
 
In [66]: ynums =np.arange(5)
 
In [67]: xnums
Out[67]: array([0,1, 2, 3])
 
In [68]: ynums
Out[68]: array([0,1, 2, 3, 4])
 
In [69]: data_list= np.meshgrid(xnums,ynums)
 
In [70]: data_list
Out[70]:
[array([[0, 1, 2,3],
        [0, 1, 2, 3],
        [0, 1, 2, 3],
        [0, 1, 2, 3],
        [0, 1, 2, 3]]), array([[0, 0, 0, 0],
        [1, 1, 1, 1],
        [2, 2, 2, 2],
        [3, 3, 3, 3],
        [4, 4, 4, 4]])]
 
In [71]: x,y =data_list
In [72]: x.shape
Out[72]: (5L, 4L)
 
In [73]: y.shape
Out[73]: (5L, 4L)
 
In [74]: x
Out[74]:
array([[0, 1, 2,3],
       [0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3]])
 
In [75]: y
Out[75]:
array([[0, 0, 0,0],
       [1, 1, 1, 1],
       [2, 2, 2, 2],#如果第一个参数是xarray,维度是xdimesion,第二个参数是yarray,维度是ydimesion。


       [3, 3, 3, 3],# 那么生成的第一个二维数组是以xarray为行,ydimesion行的向量;


       [4, 4, 4, 4]])# 而第二个二维数组是以yarray的转置为列,xdimesion列的向量。
In [13]: x.ravel()
Out[13]: array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3])


In [14]: y.ravel()
Out[14]: array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4])


















版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liangyingyi1006/article/details/75576915

智能推荐

【小沐学C++】C++实现进程通信(管道pipe)_c++ pipe-程序员宅基地

本节内容1、功能简介1.1 匿名管道1.2 命名管道2、匿名管道3、命名管道3.1 注意事项3.2 服务器3.2 客户端后记1、功能简介管道用于进程间共享数据,其实质是共享内存,常用IPC之一。管道不仅可以用于本机进程间通信,还可实现跨网络进程间通信,如同Socket通信,管道同样封装计算机底层网络实现,提供一个良好的API接口。管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。一个进程在向管道写入数据后,另一进程就可以从管道的另一端_c++ pipe

python读写二维码_怎样实现二维码的读写功能-程序员宅基地

生成二维码【1】1、安装包(pip install XXX)qrcode:纯python QR码生成器Image:QR生成器中需要用到的包2、代码import qrcodeimport osimport sysimport time QRImagePath = os.getcwd() + '/qrcode.png' #临时存储位置qr = qrcode.QRC..._怎样实现二维码的读写功能

KNOXSS Test Page——练习XSS漏洞的一个靶场-程序员宅基地

前言最近有一款国外工具很是受到国外安全人员的喜爱,hackerone的一些白帽子通过购买这款工具可以快速找到XSS漏洞,我看了奖励还真的是不少呢!可惜,笔者是个屌丝。今天就来给大家分享一下KNOXSS给的测试页面吧,看看广大的XSSER能顺利闯到哪一关? 正文网址:https://brutelogic.com.br/knoxss.html具体如下图: ..._knoxss

【数据分析R语言系列】R语言函数与函数式编程、作用域和apply 家族_r语言函数式编程-程序员宅基地

【数据分析R语言系列】R语言函数与函数式编程、作用域和apply 家族_r语言函数式编程

Android Studio错误:需要class, interface或enum_android 需要class, interface或enum-程序员宅基地

@[TOC]目录错误描述:错误: 需要class, interface或enum看了网上一些回答,是编码问题。经排查在我这边是因为代码多了一个 “}” 导致的,在此记录一下..._android 需要class, interface或enum

QT 周立功 can分析仪 二次开发_周立功canfd二次开发-程序员宅基地

QT 周立功 can分析仪 二次开发2 在工程中添加LIBS += -L"D:\QtProject\V501MCU\ControlCANx86" -lControlCAN3 测试设备打开 if (VCI_OpenDevice(1, 0, 0) != STATUS_OK) { QMessageBox::information(this, "提示", "打开设备失败", QMessageBox::Ok); return; }4 遇到的问题测试..._周立功canfd二次开发

随便推点

android仿QQ点击加号弹出菜单特效-程序员宅基地

android仿QQ点击加号弹出菜单特效

javaee-----jsp+servlet介绍_jsp+servlet 简介-程序员宅基地

jsp+servlet开篇介绍目的开篇介绍目的写文章主要是对于自己的曾经学习的知识,进行系统的梳理,便于以后的查阅,当作自己的字典使用。文章不会涉及很高深的东西,自己的能力有限,主要是在工作上做到熟练使用。开篇介绍..._jsp+servlet 简介

3GPP 协议导读-程序员宅基地

24.008 Mobile radio interface Layer 3 specification; Core network protocols; Stage 3 Must Have 這是我最常用到的spec之一,對我而言也是最入門的一份。大多數spec是用來查的,但是這份從第四章開始是可以一頁 頁讀過的。它定義了Mobility Man...

matlab比例环节代码,典型环节MATLAB仿真.doc-程序员宅基地

实验一 典型环节的MATLAB仿真一、实验目的1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法。2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。3.定性了解各参数变化对典型环节动态特性的影响。二、SIMULINK的使用MATLAB中SIMULINK是一个用来对动态系统进行建模、仿真和分析的软件包。利用SIMULINK功能模块可以快..._比例环节传递函数matlab代码

(二) CNN Explainer一款形象具体的CNN解释工具-程序员宅基地

论文题目:CNN EXPLAINER:Learning Convolutional Neural Networks with Interactive Visualization论文作者:Zijie J. Wang, Robert Turko, Omar Shaikh, Haekyu Park, Nilaksh Das,Fred Hohman, Minsuk Kahng, and Duen Horng (Polo) Chau论文下载地址:https://arxiv.org/abs/2004.15004_cnn explainer

layUI的富文本编辑器和图片的上传_layedit富文本插入本地图片-程序员宅基地

layUI的富文本编辑器需要注意的几点一,创建富文本编辑器<div class="layui-input-block"> <textarea id="teacherSy" class="layui-textarea" name="teacherSynopsis"lay-verify="teacherSynopsis" ></textarea> </div>这是必须的 var editIndex _layedit富文本插入本地图片