# 一文搞懂感知机算法

image

### 感知机学习策略

1.首先写入输入空间中任意点 到超平面 S 的距离:

2.当时, , 而当时，。因此，对于误分类的数据来说，成立。

3.另外，误差分类点到超平面 S 的距离是

### 感知机学习算法

1.假设误分类点的集合为 M，那么损失函数L(w, b)的梯度为:

2.随机选取一个误分类的点，对 w, b 更新:

### 实战

from sklearn import datasets
import pandas as pd
from sklearn import Perceptron
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score
from sklearn.utils import shuffle



X, y = shuffle(iris.data, iris.target,random_state=7)


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=7)


sc_X = StandardScaler()
X_train_std = sc_X.fit_transform(X_train)
X_test_std = sc_X.fit_transform(X_test)


model = Perceptron()
model.fit(X_train_std, y_train)
y_pred = model.predict(X_test_std)


print ("Accuracy score on test data: {:.4f}".format(accuracy_score(y_test, y_pred)))
print ("F-score on test data: {:.4f}".format(fbeta_score(y_test, y_pred, beta = 0.5,average='weighted')))


image

from sklearn.model_selection import GridSearchCV
from sklearn.metrics import make_scorer
from sklearn.metrics import fbeta_score, accuracy_score
clf = Perceptron(random_state=7)
parameters = {'eta0':[0.1,1,10], 'max_iter':[30,40,50]}
scorer = make_scorer(fbeta_score, beta=0.5, average='weighted')
#在分类器上使用网格搜索，使用'scorer'作为评价函数
grid_obj = GridSearchCV(clf, parameters, scoring=scorer)
grid_obj.fit(X_train_std, y_train)
# 得到estimator
best_clf = grid_obj.best_estimator_
# 使用没有调优的模型做预测
predictions = (clf.fit(X_train_std, y_train)).predict(X_test_std)
best_predictions = best_clf.predict(X_test_std)


# 汇报调参前和调参后的分数
print ("\nUnoptimized model\n------")
print ("Accuracy score on test data: {:.4f}".format(accuracy_score(y_test, predictions)))
print ("F-score on test data: {:.4f}".format(fbeta_score(y_test, predictions, beta = 0.5,average='weighted')))
print ("\nOptimized Model\n------")
print ("Final accuracy score on the test data: {:.4f}".format(accuracy_score(y_test, best_predictions)))
print ("Final F-score on the test data: {:.4f}".format(fbeta_score(y_test, best_predictions, beta = 0.5,average='weighted')))


image

[图片上传失败...(image-d73933-1534854404075)]

### 推荐阅读更多精彩内容

• 【概述】 1、感知机模型特征：感知机对应于输入空间中将实例划分为正负两类的分离超平面，属于判别模型。 2、感知机策...
sealaes阅读 1,959评论 2 3
• 以西瓜书为主线，以其他书籍作为参考进行补充，例如《统计学习方法》，《PRML》等 第一章 绪论 1.2 基本术语 ...
danielAck阅读 2,660评论 0 6
• 感知机 概述 感知机是二类分类的线性分类模型，其输入为实例的特征向量，输出为实例的类别，取+1和-1二值。感知机学...
_Joe阅读 3,871评论 0 6
• 有网友发帖称：好友结婚的日子，刚好是我一场职称考试的日子。她要我放弃考试，去参加婚礼，我向她说明情况，表示歉意，包...
李彧飞阅读 464评论 4 4
• 35岁你因为身体越来越差 加班越来越少 晋升的速度也越来越缓慢 那天下班,媳妇告诉你，孩子要上幼儿园了。双语的一个...
卖萌维生阅读 96评论 0 1