机器学习:简单的随机梯度下降(SGD)求解回归问题和用逻辑回归(LR)解决分类问题

20210405作业:

  1. 回归问题: 用随机梯度下降法实现,数据用data.csv。
  2. 分类问题: 用梯度下降实现逻辑回归,可以用批量梯度也可以用随机梯度实现。数据采用西瓜数据3.0α.csv。

1. SGD (Stochastic gradient descent)

# 导包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 导文件
data = pd.DataFrame(pd.read_csv('数据集/data.csv'))
data

部分数据...

sgd:

  1. np.random.randn()取随机数组初始化w(符合正态分布),代替[0,0],在后续学习过程中更加合理 吴恩达机器学习——随机初始化(random initialization)
  2. W记录前一次j循环的结果,_W为当前j循环内时时更新的wj的储存数组,待所有wj全部更新完成后,用_W更新W。当前正在梯度更新的wj记入_W
  3. 每次进入i循环,初始化cost代价函数,最小二乘法计算代价 最小二乘法本质和原理(least sqaure method)。当前代价与上一代价pre_cost相减,直到逼近其最小值,即小于某一域值时,跳出i循环,返回W
  4. 和BGD很像,SGD交换i循环内,j和k循环的先后(当然,其后range也要同步替换)。
    BGD通过遍历所有点,依次更新wj;而SGD遍历一点,更新全部wj,再遍历下一点…所以,SGD可能在未遍历完所有点的情况下,找到符合设定域值的一组W,速度更快,但准确性有所下降
  5. 梯度下降就是一种根据代价函数的导数斜率去不断更改系数W,从而达到使导数接近于0,也就是代价函数达到极值点的一种算法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

def sgd(x,y,alpha,n):"""sgd函数,求w:param x: 数据集的x属性list:param y: 数据集的y标签list:param alpha: 梯度下降学习率:param n: 循环次数:return: w随机梯度下降所求系数list"""# ww = np.random.randn(2)_w = np.empty(2, dtype=float)_w = w# 数据集样本数m,属性数dm = x.shape[0]d = w.shape[0]# 代价pre_cost = 0for i in range(n):for k in range(m):for j in range(d):_w[j] = _w[j]-alpha*(w[0]*x[k][0]+w[1]*x[k][1]-y[k])*x[k][j]for j in range(d):w[j] = _w[j]cost = 0for k in range(m):cost += (w[0]*x[k][0]+w[1]*x[k][1]-y[k])**2cost = cost/mif abs(cost-pre_cost)<0.001:break;pre_cost=costreturn w

注:

  1. pandas的.values以array形式返回制定column的取值
# 构造x列表
x_list = []
x_arr = data['x'].values
for i in range(x_arr.shape[0]):temp = [1,x_arr[i]]x_list.append(temp)
x_list = np.array(x_list)
x_list

在这里插入图片描述

# 构造y列表
y_list = np.array(data['y'].values)
y_list

在这里插入图片描述

# 计算w
w = sgd(x_list,y_list,alpha=0.00000005,n=10000)
w

在这里插入图片描述

注:

  1. np.linspace(start, stop, num, endpoint=True, retstep=False, dtype=None)
    在指定的start和stop,返回固定间隔num的数据
  2. plt.scatter(X[], Y[]):“撒点”
# 绘图
x = np.linspace(400,900,100)
y = w[1]*x + w[0]
plt.title('Graph of SGD')
plt.plot(x,y,color='green')
plt.scatter(data['x'].values, data['y'].values)
plt.grid()
plt.xlabel('x')
plt.ylabel('y')
plt.show()

在这里插入图片描述


2. LR (Logistic Regression)

# 导数据,并简单查看一下,发现没有表头,所以加上表头x1,x2和y
xg_data = pd.DataFrame(pd.read_csv('数据集/西瓜数据3.0α.csv', header=None, names=['x1', 'x2', 'y']))
xg_data.head(5)

在这里插入图片描述

sigmoid:

  1. S形曲线,g(z)=1/(1+exp(-z)),表示落在某值的概率
  2. z是np.mat类型的,那么需要用np.exp而不是math.exp()
  3. Sigmoid曲线的’中点’,也就是g(z)=0.5那点,表示概率是50%,将正反例分隔开,
    令z=0,即WX+b=0,可求得决策边界(Decision Boundary),
    plot_x2 = -w[0]/w[2]-(w[1]/w[2])plot_x1

Sigmoid函数概念
机器学习中 Sigmoid 函数的物理含义

LR:

  1. 这里求W采用BGD矩阵法
  2. 这里的代价函数cost本质上是通过极大似然估计得出的,在上文课件里有具体步骤

极大似然估计原理(Maximum Likelihood Estimate)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

def sigmoid(z):return 1/(1+np.exp(-z))def LR(x, y, alpha, n):"""计算逻辑回归的w:param x: 样本属性:param y: 样本标签:param alpha: 学习率:param n: 循环次数:return: sigmoid曲线的变量w"""# 样本数mm = x.shape[0]w = np.mat(np.random.randn(x.shape[1],1))pre_cost = 0for i in range(n):f = sigmoid(x*w)w = w + alpha*x.T*(y-f)cost = (y.T*np.log(f)+(1-y).T*np.log(1-f))/mif abs(pre_cost-cost)<0.0001:breakpre_cost = costreturn w

注:

  1. zip将两list合并成tuple列表,从而构造X矩阵。
    这里因为zip在python新版本中返回的是地址,而要显示得用list()转换成列表。
    当然也可以用[:,:]来切片,都可以啦
  2. np.insert(arr,obj,values,axis=None):arr原matrix,
    obj插入位置,values插入新矩阵值,axis若不设置,则会降维
  3. np.reshape()中,后参数[x,y]指定重塑成x行y列的ndarray,
    若x或y为-1,则表明在满足另一维度的情况下,自动调整当前维度元素个数
  4. (matrix).getA()返回matrix的数组,因为matplotlib作图时,需要array而不是matrix型数据
  5. 作图时,用到了布尔去筛选所需样本点
# 获取样本属性X的矩阵
x = list(zip(list(xg_data['x1']), list(xg_data['x2'])))
x = np.mat(x)
one_mat = np.ones(x.shape[0])
x = np.insert(x, 0,values=one_mat, axis=1)
x

在这里插入图片描述

# 获取样本标签Y的矩阵
y = np.mat(np.reshape(np.asarray(xg_data['y']), [-1,1]))
y

在这里插入图片描述

# 求w
w = LR(x, y, alpha=0.5, n=100000)
w = w.getA()
w

在这里插入图片描述

# 结果展示
bl_mat = xg_data['y']==1
plt.scatter(xg_data['x1'][bl_mat], xg_data['x2'][bl_mat], c='green', label='Positive')
plt.scatter(xg_data['x1'][bl_mat!=True], xg_data['x2'][bl_mat!=True], c='red', label='Negative')
plt.xlabel('x1')
plt.ylabel('x2')
plot_x1 = np.linspace(0.1, 0.8, 100)
plot_x2 = -w[0][0]/w[2][0]-(w[1][0]/w[2][0])*plot_x1
plt.plot(plot_x1, plot_x2, color='blue', label='Decision Boundary')
plt.grid()
plt.legend()
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nature『大脑废物清除系统』已上线,从“痴呆”变聪明或成可能

来源&#xff1a;生物通 利用早发性阿尔茨海默氏症的小鼠模型&#xff0c;研究人员移除了一组小鼠大脑中的一些淋巴管。他们给这些小鼠以及对照组注射了单克隆抗体疗法&#xff0c;包括小鼠版本的Aducanumab。对小鼠大脑的研究显示&#xff0c;脑膜淋巴系统(紫色和粉红色)可以…

Unity3D_(API)Quaternion四元数中的Quaternion.LookRotation()

四元数百度百科&#xff1a;  传送门 四元数官方文档&#xff1a;  传送门 欧拉旋转、四元数、矩阵旋转之间的差异&#xff1a;  传送门 四元数转换为欧拉角eulerAngles  官方文档&#xff1a;  传送门 欧拉角转换为四元数Euler  官方文档&#xff1a;  传送门 Q…

思考:那么些大学生仅凭个人好恶来判断,缺乏是非观

“一切仅凭自己的好恶来判断&#xff0c;是缺乏是非观的体现” 今读某大学Z教授&#xff08;一位授课严谨认真的老师&#xff0c;在我心中&#xff0c;至少我是这样认为的&#xff09;的推文&#xff0c;深受触动。文章小中见大&#xff0c;批判了精致的利己主义思想&#xff0…

工业互联网的十大关键传感器

来源&#xff1a;传感器专家网工业互联网(Industrial Internet)是制造业一大热潮。从早期GE提出工业互联网理念被不少人解读为美国的制造业复兴战略&#xff0c;到GE的Predix平台受到热捧&#xff0c;再到西门子推出工业互联网平台Mindsphere&#xff0c;及多家本土的制造业巨头…

抽奖系统的流量削峰方案

如果观看抽奖或秒杀系统的请求监控曲线&#xff0c;你就会发现这类系统在活动开放的时间段内会出现一个波峰&#xff0c;而在活动未开放时&#xff0c;系统的请求量、机器负载一般都是比较平稳的。为了节省机器资源&#xff0c;我们不可能时时都提供最大化的资源能力来支持短时…

SVM支持向量机-手写笔记(超详细:拉格朗日乘数法、KKT条件、对偶性质、最优化、合页损失、核函数...)

SVM支持向量机-手写笔记 作者&#xff1a;某丁 日期&#xff1a;2021.05.21 写完了&#xff0c;发现想要真正理解SVM还需要继续深入学习&#xff0c;以上所写只不过是冰山一角&#xff0c;我的管中窥豹而已。 参考 [1] 一文搞懂支持向量机(SVM)算法 https://zhuanlan.zhihu.co…

扛鼎之作!Twitter 图机器学习大牛发表160页论文:以几何学视角统一深度学习

来源&#xff1a;AI科技评论作者&#xff1a;Michael Bronstein编译&#xff1a;Mr Bear、青暮导语&#xff1a;近日&#xff0c;帝国理工学院教授、Twitter 首席科学家 Michael Bronstein 发表了一篇长达160页的论文&#xff08;或者说书籍&#xff09;&#xff0c;试图从对称…

情感数据对LSTM股票预测模型的影响研究

情感数据对LSTM股票预测模型的影响研究 作者&#xff1a;丁纪翔 发布时间&#xff1a;06/28/2021 摘要&#xff1a;探究了情感结构化特征数据在LSTM股票预测模型中的影响。利用Pandas对所给数据进行预处理&#xff08;数据载入、清洗与准备、规整、时间序列处理、数据聚合等&am…

AI芯片发展现状及前景分析

来源&#xff1a;专知1. AI芯片定义及技术架构1.1 AI芯片定义广义上所有面向AI应用的芯片都可以称为AI芯片。目前一般认为是针对AI算法做了特殊加速设计的芯片。现阶段&#xff0c;这些人工智能算法一般以深度学习算法为主&#xff0c;也可以包括其他浅层机器学习算法[7-8]。1.…

Tableau数据分析:NC Retail Order Data(英)Data Science Program Lab#1(GTI)

Tableau数据分析&#xff1a;NC Retail Order Data&#xff08;英&#xff09; NCSU 2021 Summer Online Data Science Author&#xff1a;©Sylvan Ding

解读:欧盟委员会2021年《人工智能法》提案

来源&#xff1a;图灵人工智能文&#xff1a;吴沈括&#xff08;北京师范大学网络法治国际中心执行主任、博导中国互联网协会研究中心副主任&#xff09;文&#xff1a;胡然&#xff08;北京师范大学网络法治国际中心研究助理&#xff09;2021年4月21日&#xff0c;为了将欧洲变…

《2021人脸识别行业白皮书》发布 拥挤安防还有多少空间?

来源&#xff1a;帮尼资讯图片来源&#xff1a;网络人脸识别在内的人工智能技术需求较大&#xff0c;这对传统安防产业带来了巨大的冲击和变革。近日&#xff0c;智慧芽联合罗思咨询&#xff0c;共同发布《2021人脸识别行业白皮书》。白皮书从人脸识别行业现状、企业聚焦和技术…

第一章 计算机系统概述 1.1 计算机发展史 [计算机组成原理笔记]

第一章 计算机系统概述 1.1 计算机发展史 本笔记参考书目&#xff1a; 计算机组成原理&#xff08;第六版.立体化教材&#xff09;白中英、戴志涛2021王道计算机组成原理视频公开课 本节重点&#xff1a; 计算机硬件的发展史 转载请注明文章来源&#xff01; 什么是计算机系…

我国工业互联网 技术路线与发展趋势研究

来源&#xff1a;中国工业和信息化本文发表于《中国工业和信息化》杂志2021年4月刊总第33期作者&#xff1a;许雪荷 中国工业互联网研究院自2017年《国务院关于深化“互联网先进制造业”发展工业互联网的指导意见》发布以来&#xff0c;国家高度重视工业互联网创新发展&#…

【创新应用】小图像,大图景:AI彻底改变了显微镜技术

来源&#xff1a;智能研究院20 年前&#xff0c;计算机生物学家 Anne Carpenter 在读博士时第一次意识到她需要学习计算机编程。Carpenter 说&#xff1a;「在麻省理工学院和哈佛大学的博德研究所 (Broad Institute of MIT and Harvard in Cambridge) 管理实验室的时候。她记得…

历史上12篇最著名的博士论文欣赏

来源 &#xff1a; 学位与写作Ali Gajani在mrgreek网站分享了12篇著名学者的博士论文&#xff0c;分别是居里夫人的博士论文、香浓的博士论文、纳什的博士论文、德布罗意的博士论文、费曼的博士论文、爱因斯坦的博士论文、马克思的博士论文、韦伯的博士论文、萨特兰的博士论文、…

Exalogic硬件架构

1、硬件配置见如下图表。 组件名称满配半配1/4配1/8配Sun Rack II 12421111计算节点 X2-2、X3-2、X4-2、X5-2、X6-2301684存储设备 X2-2和X3-2: Dual controller Sun ZFS Storage 7320 appliance (60 TB) X4-2和X5-2: Oracle ZS3-ES storage appliance X6-2: Oracle ZS5–ES st…

AI领域五年引用量最高的10大论文:Adam登顶,AlphaGo、Transfromer上榜

来源&#xff1a;图灵人工智能编译&#xff1a;琰琰近五年来&#xff0c;AI学术论文的投稿量和接收量都在不断攀升&#xff0c;包括NeurIPS、AAAI、ACL&#xff0c;ICML、EMNLP等国际顶会。根据权威数据统计&#xff0c;NeurIPS论文收录量在2019年呈指数级增长&#xff0c;领先…

64 求1+2+3+...+n(发散思维能力 )

题目描述&#xff1a; 求123...n&#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&#xff08;A?B:C&#xff09;。 解题思路&#xff1a; 1&#xff09;利用&&的短路特性 2) 利用sizeof特性&#xff0c;使用公式n(n1)/2 …