《Python机器学习》笔记--感知机分类鸢尾花数据集

时间:2022-12-01 23:52:05

  书籍参考机械工业出版社的《Python机器学习》,如下图:
          《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))

准确率输出为:
《Python机器学习》笔记--感知机分类鸢尾花数据集