机器学习之感知机python实现
文章目录
- 一、感知机是什么?
- 1.iris数据集长什么样?
- 二、代码实现
- 1.引入库
- 2.load data
- 3.剩余代码
- 4.感知机实现
- 5.训练学习参数
- 6.测试
- 总结
一、感知机是什么?
拿出iris数据集中两个分类的数据和[sepal length,sepal width]作为特征
1.iris数据集长什么样?
二、代码实现
1.引入库
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
%matplotlib inline
2.load data
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['label'] = iris.target
3.剩余代码
# 列
df.columns = ['sepal length', 'sepal width', 'petal length', 'petal width', 'label'
]
df.label.value_counts()plt.scatter(df[:50]['sepal length'], df[:50]['sepal width'], label='0')
plt.scatter(df[50:100]['sepal length'], df[50:100]['sepal width'], label='1')
plt.xlabel('sepal length')
plt.ylabel('sepal width')
# 拿出iris数据集中两个分类的数据和[sepal length,sepal width]作为特征
plt.legend()data = np.array(df.iloc[:100, [0, 1, -1]]) #100行,0到99列,可以将100改成3
# data
X, y = data[:,:-1], data[:,-1] #所有的行,倒数第二列,最后一列
# X, y
y = np.array([1 if i == 1 else -1 for i in y])
y
#初始化
4.感知机实现
# 数据线性可分,二分类数据
# 此处为一元一次线性方程
class Model:def __init__(self):self.w = np.ones(len(data[0]) - 1, dtype=np.float32)self.b = 0self.l_rate = 0.1# self.data = datadef sign(self, x, w, b):y = np.dot(x, w) + breturn y# 随机梯度下降法def fit(self, X_train, y_train):is_wrong = False # is_wrong变量是用来说明分类是否有错误while not is_wrong:wrong_count = 0for d in range(len(X_train)): #len(X_train)表示X_train的行数X = X_train[d]y = y_train[d]if y * self.sign(X, self.w, self.b) <= 0:self.w = self.w + self.l_rate * np.dot(y, X)self.b = self.b + self.l_rate * ywrong_count += 1print ('w = ',self.w,'b=',self.b) if wrong_count == 0:is_wrong = Truereturn 'Perceptron Model!'def score(self):pass
5.训练学习参数
perceptron = Model()
perceptron.fit(X, y) #所有的行,所有的列
6.测试
x_points = np.linspace(4, 7, 40) #在4到7之间产生10个点
y_ = -(perceptron.w[0] * x_points + perceptron.b) / perceptron.w[1] #w[0]第一个分量更新;w[1]第二个分量更新
plt.plot(x_points, y_,'ro')plt.plot(data[:50, 0], data[:50, 1], 'bo', color='blue', label='0')
plt.plot(data[50:100, 0], data[50:100, 1], 'bo', color='orange', label='1')
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.legend()
参考文献
1.黄海广 《统计机器学习方法》 python实现
总结
机器学习之感知机python实现相关推荐
- 机器学习算法——感知机支持向量机
1前言 本篇博客主要详细介绍两种具有一定相似性的机器学习算法--感知机Perceptron和支持向量机SVM,该两种算法都是在特征空间中寻找划分平面从而对数据集进行划分的思想,但寻找划分平面的算法不同 ...
- 机器学习之用Python从零实现贝叶斯分类器
机器学习之用Python从零实现贝叶斯分类器 2015/02/06 · 系列教程 · 13 评论 · 机器学习 分享到:27 本文由 伯乐在线 - Halal 翻译,toolate 校稿.未经许可,禁 ...
- 机器学习实战笔记(Python实现)-04-Logistic回归
转自:机器学习实战笔记(Python实现)-04-Logistic回归 转自:简单多元线性回归(梯度下降算法与矩阵法) 转自:人工神经网络(从原理到代码) Step 01 感知器 梯度下降
- 机器学习算法与Python实践之(六)二分k均值聚类
机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...
- 机器学习算法与Python实践之(五)k均值聚类(k-means)
机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...
- 机器学习算法与Python实践之(三)支持向量机(SVM)进阶
机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...
- 机器学习算法与Python实践之(二)支持向量机(SVM)初
机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...
- 机器学习算法与Python实践之(二)支持向量机
http://blog.csdn.net/zouxy09/article/details/17291543 机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己 ...
- 机器学习算法与Python实践之(四)支持向量机(SVM)实现
机器学习算法与Python实践之(四)支持向量机(SVM)实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考 ...
最新文章
- 战争升级!Elasticsearch 从客户端向 AWS 开了一炮!
- 一篇文章熟悉ubuntu desktop指南
- 小米10Pro手机双击android,小米10Pro:不完美,但很小米。
- MAC下搭建java的开发环境
- 基克的聚合 机器人_重做秒变神器!基克的聚合成辅助标配
- 微信自动抢红包软件被判赔475万
- OPPO Reno3系列旗舰官宣:骁龙765G+正反双曲面设计
- java replace第二个_java - 错误的第二个参数类型:从片段内调用.replace() - 堆栈内存溢出...
- Grails枚举一例
- 【计算机毕业设计】疫情社区管理系统的设计与实现
- 百度笔试题--论坛数据库表设计
- 11.14-11.21
- 先验概率 后验概率 贝叶斯法则 贝叶斯公式
- 基于博客系统的访客日志记录----代码合集
- python实现直播功能rtmo_30 行 Python 代码实现 Twitch 主播上线实时通知
- 用你的浏览器来静态分析网站源码——初级漏洞赏金猎人指南
- jupyter notebook(python)使用pycharts库实现动态地图展示
- Python笔记:python实现跳板机
- 基于TCAM的路由查找及表项管理
- OpenCV--014: 图像插值
热门文章
- python中并集符号_python中列表之间求差集、交集、并集
- 【中级计量经济学】Lecture 2 多重共线性
- 爱奇艺又涨价?注定想追剧就要成为SSSSVIP
- 【Python 3.7】分子运动:修改 rw_visual.py,将其中的 plt.scatter() 替换为 plt.plot() 。为 模拟花粉在水滴表面的运动路径
- 201809-3-元素选择器
- java同花顺判定_笔试题:随机抽取五张牌 判断是否为同花顺
- 制作指定比例尺的专题地图
- 什么是私域流量?如何运营?
- Vue批量生成二维码并打包下载
- Adobe Illustrator自制苏大计科院院徽