热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

logistic

数据的可视化和梯度上升法importmatplotlib.pyplotasplt定义数据集下载函数defloadDataSet():dataMat[]labelMat[]fop

数据的可视化和梯度上升法

import matplotlib.pyplot as plt

定义数据集下载函数

def loadDataSet():dataMat = []labelMat = []f = open('testSet.txt')for line in f.readlines():line_list = line.strip().split()dataMat.append([1,float(line_list[0]),float(line_list[1])])labelMat.append(int(line_list[2]))return dataMat,labelMat

定义激活函数

def sigmoid(inX):return 1.0 / (1+np.exp(-inX))

import numpy as np
dataMat,labelMat = loadDataSet()
dataMatArr = np.array(dataMat)
n = np.shape(dataArr)[0]
x_cord_1 = []; y_cord_1 = []
x_cord_2 = []; y_cord_2 = []
for i in range(n):if int(labelMat[i]) == 1:x_cord_1.append(dataMatArr[i,1])y_cord_1.append(dataMatArr[i,2])else:x_cord_2.append(dataMatArr[i,1])y_cord_2.append(dataMatArr[i,2])

绘制图像

fig = plt.figure()
ax = fig.add_subplot(111) # 将画布分成一行一列,按从左到右,从上到下去一个格子
ax.scatter(x_cord_1,y_cord_1,s=30,c='red')
ax.scatter(x_cord_2,y_cord_2,s=30,c='green')


在这里插入图片描述

png


实现梯度上升算法函数

def gradAscent(dataMatIn, classLabels):# 获取数据,并转化成dataMatrix = np.mat(dataMatIn)labelMatrix = np.mat(classLabels).transpose()m,n = np.shape(dataMatrix)alpha = 0.001maxCycles = 500weights = np.ones((n,1))for k in range(maxCycles):h = sigmoid(dataMatrix * weights)error = (labelMatrix - h)weights = weights + alpha * dataMatrix.transpose() * errorreturn weights

weights = gradAscent(dataArr,labelMat)
weights

matrix([[ 4.12414349],[ 0.48007329],[-0.6168482 ]])

分析数据,画出决策边界

def plotBestFit(weights):dataMat,labelMat = loadDataSet()dataArr = np.array(dataMat)n = np.shape(dataArr)[0]x_cord_1 = []; y_cord_1 = []x_cord_2 = []; y_cord_2 = []for i in range(n):if int(labelMat[i]) == 1:x_cord_1.append(dataArr[i,1])y_cord_1.append(dataArr[i,2])else:x_cord_2.append(dataArr[i,1])y_cord_2.append(dataArr[i,2])fig = plt.figure()ax = fig.add_subplot(111)ax.scatter(x_cord_1,y_cord_1,s=30,c='red')ax.scatter(x_cord_2,y_cord_2,s=30,c='green')x = np.arange(-3,3,0.1)y = (-weights[0]-weights[1]*x) / weights[2] # w0 * x0 + w1 * x1 + w2 * x2 = 0ax.plot(x,y)plt.xlabel('X1')plt.ylabel('X2')plt.show()

plotBestFit(weights.getA()) # getA()函数与mat()函数的功能相反,是将一个numpy矩阵转换为数组

在这里插入图片描述


推荐阅读
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了一个Python函数same_set,用于判断两个相等长度的数组是否包含相同的元素。函数会忽略元素的顺序和重复次数,如果两个数组包含相同的元素,则返回1,否则返回0。文章还提供了函数的具体实现代码和样例输入输出。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
author-avatar
用户dvb51bjajs
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有