书籍参考机械工业出版社的《Python机器学习》,如下图:
一、
感知机模型是很基础的二类分类(判别)模型,主要采用了分离超平面的概念,其学习策略是极小化误分点到超平面距离,使用的学习算法为随机梯度下降算法。
详细算法不再阐述,各位聚聚博客or书籍有大量讲解内容。
二、
此处使用sklearn包中的Perceptron(感知机)类来对sklearn包中提供的iris数据进行训练及分类。
# -*- coding: utf-8 -*-
"""
Created on Sun Aug 20 20:57:55 2017
@author: Administrator
"""
from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Perceptron
from sklearn.metrics import accuracy_score
import numpy as np
#提取150花朵中的花瓣长度和花瓣宽度两个特征值,构建特征矩阵X,将分类所属类别赋予y
iris=datasets.load_iris()
X=iris.data[:,[2,3]]
y=iris.target
#划分训练数据及测试数据(交叉验证),测试数据集占0.3,即训练数据105,测试数据集45
'''
train_data:所要划分的样本特征集
train_target:所要划分的样本结果
test_size:样本占比,如果是整数的话就是样本的数量
random_state:是随机数的种子。
'''
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=0)
#进行数据标准化处理
'''
使用StandardScaler中的fit方法,计算训练数据中每个特征的均值和标准差,
通过调用transform方法,可以使用计算得到的均值和方差来对训练数据做标准化处理
'''
sc=StandardScaler()
sc.fit(X_train)
X_train_std=sc.transform(X_train)
X_test_std=sc.transform(X_test)
#使用感知机模型进行训练
'''
n_iter:迭代次数
eta0:学习速率
random_state:在每次迭代后初始化重排训练数据集
'''
ppn=Perceptron(n_iter=40,eta0=0.1,random_state=0)
ppn.fit(X_train_std,y_train)
#训练完成,进行预测
y_pred=ppn.predict(X_test_std)
#输出分类准确率
print('感知机对鸢尾花数据集分类准确率为:%.5f'%accuracy_score(y_test,y_pred))
准确率输出为: