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相关推荐

  1. Python吴恩达机器学习课后习题作业一算法(Ⅰ)(1)

    吴恩达老师的机器学习课程是机器学习入门者必看的经典之一,其课后习题也是典中典.下面将在以Python为语言工具完成课后习题. 问题一:单元线性回归 问题:根据城市人口数量,预测开小吃店的利润 下面我将 ...

  2. 吴恩达机器学习课后习题——逻辑回归

    机器学习课后作业-逻辑回归 逻辑回归 逻辑回归算法,是一种给分类算法,这个算法的实质是:它输出值永远在0到 1 之间. 将要构建一个逻辑回归模型来预测,某个学生是否被大学录取.设想你是大学相关部分的管 ...

  3. 吴恩达机器学习-课后习题

    原题参考链接https://www.kesci.com/home/project/5e0f01282823a10036b280a7 第 1 题 一个计算机程序从经验E中学习任务T,并用P来衡量表现.并 ...

  4. 斯坦福大学(吴恩达) 机器学习课后习题详解 第三周 逻辑回归

    测试题 都比较简单,好好看视频吧 知乎: https://zhuanlan.zhihu.com/albertwang 微信公众号:AI-Research-Studio ​ ​​ 下面是赞赏码

  5. 斯坦福大学(吴恩达) 机器学习课后习题详解 第三周 正则化

    正则化测试题: 知乎: https://zhuanlan.zhihu.com/albertwang 微信公众号:AI-Research-Studio ​ ​​ 下面是赞赏码

  6. 斯坦福大学(吴恩达) 机器学习课后习题详解 第一周 线性代数

    这就比较简单了,不再做过多的解释,直接上答案 知乎: https://zhuanlan.zhihu.com/albertwang 微信公众号:AI-Research-Studio ​ ​​ 下面是赞赏 ...

  7. 斯坦福大学(吴恩达) 机器学习课后习题详解 第二周 多变量线性回归

    多变量线性回归答案  知乎: https://zhuanlan.zhihu.com/albertwang 微信公众号:AI-Research-Studio ​ ​​ 下面是赞赏码

  8. 斯坦福大学(吴恩达) 机器学习课后习题详解 第十周 大规模机器学习

    知乎: https://zhuanlan.zhihu.com/albertwang 微信公众号:AI-Research-Studio ​ ​​ 下面是赞赏码

  9. 目录:吴恩达机器学习课后作业

    简单介绍 本博客为作者自行完成的吴恩达机器学习课后练习题目录,均使用PyTorch进行实现,无法保证对错,仅供参考. 作业题目以及源代码 百度云盘连接 提取码:3dvb 题目的命名方式与下表中的作业名 ...

最新文章

  1. Spring MVC的表单控制器——SimpleFormController .
  2. process java类_Java中Process类的用途是什么?
  3. oracle创建job权限
  4. python里怎么读取文件-python之文件读写
  5. ConcurrentDictionary 与 Dictionary
  6. CentOS系统配置 iptables防火墙
  7. matlab配置vlfeat工具箱
  8. 无法正常显示计算机,电脑Office Word文档图标无法正常显示怎么办
  9. web前端入门到实战:CSS box-sizing属性的正确用法
  10. 专题:手把手学习硬件基础------8、驱动电路
  11. jdk1.8 Lambda表达式的使用
  12. android.view.WindowLeaked报错的解决方案
  13. drop 很慢 物化视图_clickhouse 物化视图的踩坑记录
  14. DIV背景半透明 样式
  15. Redis安装与配置Redis安装与配置
  16. 如何查看suse系统服务器sn,suse 配置 - sncder的个人空间 - OSCHINA - 中文开源技术交流社区...
  17. Oracle 手工锁表
  18. c语言左值中有运算符,C语言左值,运算符的优先级以及结合性探讨
  19. 全局性谋划、战略性布局、整体性推进智能技术
  20. 完美二叉树、完全二叉树、完满二叉树

热门文章

  1. [源码和文档分享]基于QT实现的昆特牌棋牌类游戏
  2. Oracle多表关联更新
  3. 网络推广有什么作用?如何做推广分析思维导图
  4. 达梦数据库-初探监视器服务与守护进程服务
  5. virtio网络Data Plane卸载原理 —— vhost协议协商流程
  6. 廖雪峰老师的Python入门 day01
  7. 【2019.09.19】数独(Sudoku)游戏之我见(软工实践第三次作业)
  8. 论文阅读《Revisiting Stereo Depth Estimation From a Sequence-to-Sequence Perspective with Transformers》
  9. 【长途旅行必备】行李箱中的迷你实用小物件(转)
  10. 【UC浏览器】Java平台7.0正式版发布啦