吴恩达机器学习课后习题ex2
ex2:Logistic_regression
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.optimize as opt #优化算法
from sklearn.metrics import classification_report
from sklearn import linear_model
Scipy优化算法:scipy.optimize.fmin_tnc()/minimize()
参见:https://www.cnblogs.com/tongtong123/p/10634716.html
sklearn.metrics.classification_report
参见:https://blog.csdn.net/kancy110/article/details/74937469
# 获取原始数据
def raw_data(path):data=pd.read_csv(path,names=['exam1','exam2','admit'])return data
#绘制初始数据
#需要将两种判断结果区别颜色绘制
def draw_data(data):accept = data[data.admit==1]refuse = data[data.admit == 0]#accept=data[data['admit'].isin([1])]#refuse=data[data['admit'].isin([0])]plt.scatter(accept.exam1,accept.exam2,c='g',label = 'admit')plt.scatter(refuse.exam1,refuse.exam2,c='r',label = 'not admit')plt.title('admission')plt.xlabel('score1')plt.ylabel('score2')return plt
pandas中isin()函数及其逆函数使用
https://blog.csdn.net/weixin_44056331/article/details/89461816
#sigmoid函数
def sigmoid(z):return 1/(1+np.exp(-z))#exp(-z):e的-z次方
#代价函数
def cost_function(theta, x, y):m = x.shape[0]j = (y.dot(np.log(sigmoid(x.dot(theta))))+(1-y).dot(np.log(1-sigmoid(x.dot(theta)))))/(-m)return j
#计算偏导数即可,后面会用scipy.optimize中方法求最优解
def gradient_descent(theta, x, y):return ((sigmoid(x.dot(theta))-y).T).dot(x)
#预测函数
def predict(theta, x):h = sigmoid(x.dot(theta))return [1 if x>= 0.5 else 0 for x in h]
#决策边界
def boundary(theta, data):x1 = np.arange(20,100,0.01) #x1范围x2 = (theta[0]+theta[1]*x1)/-theta[2] #直线方程为:theta[0] + theta[1]*x1 + theta[2]*x2 = 0plt = draw_data(data) plt.plot(x1, x2)plt.show()
def main():data = raw_data('ex2data1.txt')plt = draw_data(data) plt.title('original')plt.show()data.insert(0,'Ones',1)#x1=data['exam1']#x2=data['exam2']#x=np.c_[np.ones(x1.shape[0]),x1,x2]#和ex1同样的数据处理步骤cols = data.shape[1]x = data.iloc[:,:cols-1]y=data.admit#data['admit']都可以# 不要将theta初始化为1,初始化为1的话,h(x)会过大,sigmoid近似返回1,log(1-h(x))无意义theta=np.zeros(x.shape[1])# print(cost_function(theta,x,y)) # 0.6931471805599453# theta=opt.fmin_tnc(func=cost_function,x0=theta,fprime=gradient_descent,args=(x,y))theta = opt.minimize(fun=cost_function,x0=theta,args=(x,y),method='tnc',jac=gradient_descent)theta=theta.x#x是opt.minimize返回的最优解数组# print(cost_function(theta,x,y))print(classification_report(predict(theta,x),y))model=linear_model.LogisticRegression()model.fit(x,y)print(model.score(x,y))boundary(theta,data)
Scipy优化算法:scipy.optimize.fmin_tnc()/minimize()
参见:https://www.cnblogs.com/tongtong123/p/10634716.html
main()
precision recall f1-score support0 0.85 0.87 0.86 391 0.92 0.90 0.91 61avg / total 0.89 0.89 0.89 1000.91
参考学习博客:
https://blog.csdn.net/zy1337602899/article/details/84777396
吴恩达机器学习课后习题ex2相关推荐
- Python吴恩达机器学习课后习题作业一算法(Ⅰ)(1)
吴恩达老师的机器学习课程是机器学习入门者必看的经典之一,其课后习题也是典中典.下面将在以Python为语言工具完成课后习题. 问题一:单元线性回归 问题:根据城市人口数量,预测开小吃店的利润 下面我将 ...
- 吴恩达机器学习课后习题——逻辑回归
机器学习课后作业-逻辑回归 逻辑回归 逻辑回归算法,是一种给分类算法,这个算法的实质是:它输出值永远在0到 1 之间. 将要构建一个逻辑回归模型来预测,某个学生是否被大学录取.设想你是大学相关部分的管 ...
- 吴恩达机器学习-课后习题
原题参考链接https://www.kesci.com/home/project/5e0f01282823a10036b280a7 第 1 题 一个计算机程序从经验E中学习任务T,并用P来衡量表现.并 ...
- 斯坦福大学(吴恩达) 机器学习课后习题详解 第三周 逻辑回归
测试题 都比较简单,好好看视频吧 知乎: https://zhuanlan.zhihu.com/albertwang 微信公众号:AI-Research-Studio 下面是赞赏码
- 斯坦福大学(吴恩达) 机器学习课后习题详解 第三周 正则化
正则化测试题: 知乎: https://zhuanlan.zhihu.com/albertwang 微信公众号:AI-Research-Studio 下面是赞赏码
- 斯坦福大学(吴恩达) 机器学习课后习题详解 第一周 线性代数
这就比较简单了,不再做过多的解释,直接上答案 知乎: https://zhuanlan.zhihu.com/albertwang 微信公众号:AI-Research-Studio 下面是赞赏 ...
- 斯坦福大学(吴恩达) 机器学习课后习题详解 第二周 多变量线性回归
多变量线性回归答案 知乎: https://zhuanlan.zhihu.com/albertwang 微信公众号:AI-Research-Studio 下面是赞赏码
- 斯坦福大学(吴恩达) 机器学习课后习题详解 第十周 大规模机器学习
知乎: https://zhuanlan.zhihu.com/albertwang 微信公众号:AI-Research-Studio 下面是赞赏码
- 目录:吴恩达机器学习课后作业
简单介绍 本博客为作者自行完成的吴恩达机器学习课后练习题目录,均使用PyTorch进行实现,无法保证对错,仅供参考. 作业题目以及源代码 百度云盘连接 提取码:3dvb 题目的命名方式与下表中的作业名 ...
最新文章
- Spring MVC的表单控制器——SimpleFormController .
- process java类_Java中Process类的用途是什么?
- oracle创建job权限
- python里怎么读取文件-python之文件读写
- ConcurrentDictionary 与 Dictionary
- CentOS系统配置 iptables防火墙
- matlab配置vlfeat工具箱
- 无法正常显示计算机,电脑Office Word文档图标无法正常显示怎么办
- web前端入门到实战:CSS box-sizing属性的正确用法
- 专题:手把手学习硬件基础------8、驱动电路
- jdk1.8 Lambda表达式的使用
- android.view.WindowLeaked报错的解决方案
- drop 很慢 物化视图_clickhouse 物化视图的踩坑记录
- DIV背景半透明 样式
- Redis安装与配置Redis安装与配置
- 如何查看suse系统服务器sn,suse 配置 - sncder的个人空间 - OSCHINA - 中文开源技术交流社区...
- Oracle 手工锁表
- c语言左值中有运算符,C语言左值,运算符的优先级以及结合性探讨
- 全局性谋划、战略性布局、整体性推进智能技术
- 完美二叉树、完全二叉树、完满二叉树
热门文章
- [源码和文档分享]基于QT实现的昆特牌棋牌类游戏
- Oracle多表关联更新
- 网络推广有什么作用?如何做推广分析思维导图
- 达梦数据库-初探监视器服务与守护进程服务
- virtio网络Data Plane卸载原理 —— vhost协议协商流程
- 廖雪峰老师的Python入门 day01
- 【2019.09.19】数独(Sudoku)游戏之我见(软工实践第三次作业)
- 论文阅读《Revisiting Stereo Depth Estimation From a Sequence-to-Sequence Perspective with Transformers》
- 【长途旅行必备】行李箱中的迷你实用小物件(转)
- 【UC浏览器】Java平台7.0正式版发布啦