《机器学习实战》 Logistic回归预测患有疝气病的马的存活问题
《机器学习实战》
实现使用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回归预测患有疝气病的马的存活问题相关推荐
- 机器学习实战 AdaBoost预测患有疝气病的马的存活问题
机器学习实战 使用AdaBoost来预测患有疝气病的马的存活问题 结果示例 完整代码 # -*- coding: utf-8 -*- # @Time : 2021/6/21 15:33 # @Auth ...
- 机器学习实战--Logistic回归与实例:从疝病症预测病马的死亡率
声明 本文参考了<机器学习实战>书中代码,结合该书讲解,并加之自己的理解和阐述 机器学习实战系列博文 机器学习实战--k近邻算法改进约会网站的配对效果 机器学习实战--决策树的构建.画图与 ...
- 《机器学习实战》学习笔记———使用logistic回归预测患有疝病的马的存活
拟解决基本问题描述 数据准备与数据预处理 模型基本原理与算法实现 测试方法与结果 总结 代码 参考文献 拟解决基本问题描述 本文拟解决预测患有疝病的马的存活问题,logistic回归又称logisti ...
- 机器学习实战——Logistic回归
书籍:<机器学习实战>中文版 IDE:PyCharm Edu 4.02 环境:Adaconda3 python3.6 关键词:sigmoid函数.批梯度上升法.随机梯度上升法 from ...
- 机器学习实战 - Logistic回归
假设我们有 一些数据点,我们用一条直线对其进行拟合,那么拟合的过程就称为回归. 实际上Logistic回归经常用于二类分类,也就是一般只用于只存在两种诸如"是"与"不是& ...
- 【机器学习实战】第7章 集成方法(随机森林和 AdaBoost)
第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...
- 【机器学习实战】第7章 集成方法 随机森林(RandomForest)和 Adaboost
第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...
- 【机器学习实战】第7章 集成方法 ensemble method
第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...
- Python3《机器学习实战》学习笔记(七):Logistic回归实战篇之预测病马死亡率
转载请注明作者和出处: http://blog.csdn.net/c406495762 机器学习知乎专栏:https://zhuanlan.zhihu.com/ml-jack CSDN博客专栏:htt ...
最新文章
- Docker (3)核心概念
- sql可视化工具_数据分析该用什么工具?
- Beanutils-No origin bean specified问题分析
- openresty火焰图安装
- 平移刚体上各点的加速度和速度_大物学习笔记(一)——刚体力学
- 怎么在pptv里下载电视剧
- 用pyinstaller把python脚本编译成可执行程序(windows系统)
- 数学建模常用的四大模型
- python词云图生成简单实用
- html语言 搜索引擎关键词 怎么写,HTML关键词
- synchronized和ReentrantLock性能分析
- iOS开发-记录下在开发过程中遇到的问题的解决方案及经验总结-1
- 获取html元素的高,获取HTML元素的高度jQuery
- 拼接模型坐标系的理解(五)
- 移动端 背景音乐 自动播放
- 第3章 感受(一)——3.12. Hello STL 向量篇
- 基于java的社区志愿者服务系统
- Go(Golang)_12_竞态
- eNSP实验日记四(防火墙配置)
- Linux 指令:怎样从文件中找到重复行?
热门文章
- 洋河股份Q3增收不增利:销售费用上涨,净利润降超一成
- 深圳出生婴儿入户指南
- FMS视频聊天室的开发
- 哈工大计算机类的什么专业好,哈尔滨工业大学,一共有6个王牌专业,选哪个专业比较好...
- 在qemu vexpress-a15平台运行xen,guest OS Dom0 Linux
- 软考高级网络规划设计师论文:计算机网络安全的威胁因素及防范技术
- 台式计算机与蓝牙音箱有,台式电脑可以连接蓝牙音响吗
- java笔记——Java常用类
- Mysql “宠物商店”数据视图增删改查练习
- Android通讯录管理(获取联系人 通话记录 短信消息)(三)