《机器学习实战》

实现使用Logistic回归来预测患有疝气病的马的存活问题;


结果截图:

完整代码:

# -*- coding: utf-8 -*-
# @Time    : 2021/6/21 15:39
# @Author  : weiwei
# @File    : LogisticHorse.py
from numpy import *def loadDataSet():dataMat = []; labelMat = []fr = open('testSet.txt')for line in fr.readlines():lineArr = line.strip().split()dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])labelMat.append(int(lineArr[2]))return dataMat,labelMatdef sigmoid(inX):return 1.0/(1+exp(-inX))def gradAscent(dataMatIn, classLabels):dataMatrix = mat(dataMatIn)labelMat = mat(classLabels).transpose()m,n = shape(dataMatrix)alpha = 0.001maxCycles = 500weights = ones((n,1))for k in range(maxCycles):h = sigmoid(dataMatrix*weights)error = (labelMat - h)weights = weights + alpha * dataMatrix.transpose()* errorreturn weightsdef plotBestFit(weights):import matplotlib.pyplot as pltdataMat,labelMat=loadDataSet()dataArr = array(dataMat)n = shape(dataArr)[0]xcord1 = []; ycord1 = []xcord2 = []; ycord2 = []for i in range(n):if int(labelMat[i])== 1:xcord1.append(dataArr[i,1]); ycord1.append(dataArr[i,2])else:xcord2.append(dataArr[i,1]); ycord2.append(dataArr[i,2])fig = plt.figure()ax = fig.add_subplot(111)ax.scatter(xcord1, ycord1, s=30, c='red', marker='s')ax.scatter(xcord2, ycord2, s=30, c='green')x = arange(-3.0, 3.0, 0.1)y = (-weights[0]-weights[1]*x)/weights[2]ax.plot(x, y)plt.xlabel('X1'); plt.ylabel('X2');plt.show()def stocGradAscent0(dataMatrix, classLabels):m,n = shape(dataMatrix)alpha = 0.01weights = ones(n)for i in range(m):h = sigmoid(sum(dataMatrix[i]*weights))error = classLabels[i] - hweights = weights + alpha * error * dataMatrix[i]return weightsdef stocGradAscent1(dataMatrix, classLabels, numIter=150):m,n = shape(dataMatrix)weights = ones(n)for j in range(numIter):dataIndex = list(range(m))for i in range(m):alpha = 4/(1.0+j+i)+0.0001randIndex = int(random.uniform(0,len(dataIndex)))h = sigmoid(sum(dataMatrix[randIndex]*weights))error = classLabels[randIndex] - hweights = weights + alpha * error * dataMatrix[randIndex]del(dataIndex[randIndex])return weightsdef classifyVector(inX, weights):prob = sigmoid(sum(inX*weights))if prob > 0.5: return 1.0else: return 0.0def colicTest():frTrain = open('horseColicTraining.txt'); frTest = open('horseColicTest.txt')trainingSet = []; trainingLabels = []for line in frTrain.readlines():currLine = line.strip().split('\t')lineArr =[]for i in range(21):lineArr.append(float(currLine[i]))trainingSet.append(lineArr)trainingLabels.append(float(currLine[21]))trainWeights = stocGradAscent1(array(trainingSet), trainingLabels, 1000)errorCount = 0; numTestVec = 0.0for line in frTest.readlines():numTestVec += 1.0currLine = line.strip().split('\t')lineArr =[]for i in range(21):lineArr.append(float(currLine[i]))if int(classifyVector(array(lineArr), trainWeights))!= int(currLine[21]):errorCount += 1errorRate = (float(errorCount)/numTestVec)print ("the error rate of this test is: %f" % errorRate)return errorRatedef multiTest():numTests = 10; errorSum=0.0for k in range(numTests):errorSum += colicTest()print ("after %d iterations the average error rate is: %f" % (numTests, errorSum/float(numTests)))multiTest()

数据集可在machine-learning中查找

也可以直接自己建

《机器学习实战》 Logistic回归预测患有疝气病的马的存活问题相关推荐

  1. 机器学习实战 AdaBoost预测患有疝气病的马的存活问题

    机器学习实战 使用AdaBoost来预测患有疝气病的马的存活问题 结果示例 完整代码 # -*- coding: utf-8 -*- # @Time : 2021/6/21 15:33 # @Auth ...

  2. 机器学习实战--Logistic回归与实例:从疝病症预测病马的死亡率

    声明 本文参考了<机器学习实战>书中代码,结合该书讲解,并加之自己的理解和阐述 机器学习实战系列博文 机器学习实战--k近邻算法改进约会网站的配对效果 机器学习实战--决策树的构建.画图与 ...

  3. 《机器学习实战》学习笔记———使用logistic回归预测患有疝病的马的存活

    拟解决基本问题描述 数据准备与数据预处理 模型基本原理与算法实现 测试方法与结果 总结 代码 参考文献 拟解决基本问题描述 本文拟解决预测患有疝病的马的存活问题,logistic回归又称logisti ...

  4. 机器学习实战——Logistic回归

    书籍:<机器学习实战>中文版 IDE:PyCharm Edu 4.02 环境:Adaconda3  python3.6 关键词:sigmoid函数.批梯度上升法.随机梯度上升法 from ...

  5. 机器学习实战 - Logistic回归

    假设我们有 一些数据点,我们用一条直线对其进行拟合,那么拟合的过程就称为回归. 实际上Logistic回归经常用于二类分类,也就是一般只用于只存在两种诸如"是"与"不是& ...

  6. 【机器学习实战】第7章 集成方法(随机森林和 AdaBoost)

    第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...

  7. 【机器学习实战】第7章 集成方法 随机森林(RandomForest)和 Adaboost

    第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...

  8. 【机器学习实战】第7章 集成方法 ensemble method

    第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...

  9. Python3《机器学习实战》学习笔记(七):Logistic回归实战篇之预测病马死亡率

    转载请注明作者和出处: http://blog.csdn.net/c406495762 机器学习知乎专栏:https://zhuanlan.zhihu.com/ml-jack CSDN博客专栏:htt ...

最新文章

  1. Docker (3)核心概念
  2. sql可视化工具_数据分析该用什么工具?
  3. Beanutils-No origin bean specified问题分析
  4. openresty火焰图安装
  5. 平移刚体上各点的加速度和速度_大物学习笔记(一)——刚体力学
  6. 怎么在pptv里下载电视剧
  7. 用pyinstaller把python脚本编译成可执行程序(windows系统)
  8. 数学建模常用的四大模型
  9. python词云图生成简单实用
  10. html语言 搜索引擎关键词 怎么写,HTML关键词
  11. synchronized和ReentrantLock性能分析
  12. iOS开发-记录下在开发过程中遇到的问题的解决方案及经验总结-1
  13. 获取html元素的高,获取HTML元素的高度jQuery
  14. 拼接模型坐标系的理解(五)
  15. 移动端 背景音乐 自动播放
  16. 第3章 感受(一)——3.12. Hello STL 向量篇
  17. 基于java的社区志愿者服务系统
  18. Go(Golang)_12_竞态
  19. eNSP实验日记四(防火墙配置)
  20. Linux 指令:怎样从文件中找到重复行?

热门文章

  1. 洋河股份Q3增收不增利:销售费用上涨,净利润降超一成
  2. 深圳出生婴儿入户指南
  3. FMS视频聊天室的开发
  4. 哈工大计算机类的什么专业好,哈尔滨工业大学,一共有6个王牌专业,选哪个专业比较好...
  5. 在qemu vexpress-a15平台运行xen,guest OS Dom0 Linux
  6. 软考高级网络规划设计师论文:计算机网络安全的威胁因素及防范技术
  7. 台式计算机与蓝牙音箱有,台式电脑可以连接蓝牙音响吗
  8. java笔记——Java常用类
  9. Mysql “宠物商店”数据视图增删改查练习
  10. Android通讯录管理(获取联系人 通话记录 短信消息)(三)