数据来源

http://archive.ics.uci.edu/ml/machine-learning-databases/horse-colic

处理过程

由于该数据集存在30%的缺失,那么首先必须对数据集进行预处理,这里我把缺失值用每列的平均值来代替,同时把数据集没用的几列数据舍弃。之后利用sklearn库进行Logistic回归。


代码与数据已经打包上传,如果有需要请移步:
http://download.csdn.net/detail/qq_30091945/9822726


结果:
由于有30%的数据缺失,不可避免误差过大。


Python代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/4/23 0023 7:59
# @Author  : Aries
# @Site    :
# @File    : 疝气症预测病马死亡率.py
# @Software: PyCharm Community Editionimport numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegressiondef GetData(path):""":param path: 数据集路径:return: 返回数据集"""Data = []Label = []#没有用的属性的下标index = [2,24,25,26,27]with open(path) as f:for line in f.readlines():LineArr = line.strip().split(" ")m = np.shape(LineArr)[0]data = []for i in range(m):if i in index:#没有用的属性直接跳过continueelif i == 22:#下标为22的属性是分类#1代表活着,标记设为1#2,3分别代表死亡,安乐死,标记设为0if LineArr[i] == '?':Label.append(0)elif int(LineArr[i]) == 1:Label.append(1)else:Label.append(0)else:#剩下的是有用数据if LineArr[i] == '?':#缺失数据首先由0代替data.append(0.0)else:data.append(float(LineArr[i]))Data.append(data)Data = np.array(Data)Label = np.array(Label)return Data,Labeldef ZeroProcess(data):""":param data:需要进行0值处理的数据:return: 返回把0值已经处理好的数据"""m,n = np.shape(data)for i in range(n):avg = np.average(data[:,i])if np.any(data[:,i]) == 0:for j in range(m):data[j][i] = avgelse:continuereturn datadef autoNorm(Data):""":param Data: 需要进行归一化的数据:return: 进行Max-Min标准化的数据"""#求出数据中每列的最大值,最小值,以及相应的范围data_min = Data.min(0)data_max = Data.max(0)data_range = data_max-data_min#进行归一化m = np.shape(Data)[0]Norm_Data = Data - np.tile(data_min,(m,1))Norm_Data = Norm_Data / data_rangereturn Norm_Datadef PreProcess(data):"""数据预处理,包括0值处理和归一化:param data:需要处理的数据:return: 已经处理好的数据"""#对数据进行0值处理Non_Zero_Data = ZeroProcess(data)#对数据进行归一化Norm_Data = autoNorm(Non_Zero_Data)return  Norm_Datadef run_main():"""这是主函数"""#导入训练与测试数据集path1 = "./horse_colic_train.txt"path2 = "./horse_colic_test.txt"Train_Data,Train_Label = GetData(path1)Test_Data,Test_Label = GetData(path2)#数据预处理,包括0值处理和归一化Train_Data_Precess = PreProcess(Train_Data)Test_Data_Process = PreProcess(Test_Data)#设置matplotlib,能让它显示中文mpl.rcParams['font.sans-serif'] = [u'simHei']mpl.rcParams['axes.unicode_minus'] = False#训练Logistic回归算法logistiic_regression = LogisticRegression()model = logistiic_regression.fit(Train_Data_Precess,Train_Label)print("Logistic回归的系数为:", logistiic_regression.coef_, "常数项为:", logistiic_regression.intercept_)#对Logistic回归算法进行测试Train_Label_Predict = logistiic_regression.predict(Train_Data_Precess)error = 0.0for i in range(len(Train_Label)):if Train_Label[i] != Train_Label_Predict[i]:error = error + 1.0error = error / len(Train_Label)avg = np.average(Train_Label)TSS = np.sum((Train_Label-avg)**2)RSS = np.sum((Train_Label_Predict-Train_Label)**2)R2 = 1 - RSS/TSSprint("训练样本的误差为:",error)print("R2为:",R2)#测试新数据Test_Label_Predict = logistiic_regression.predict(Test_Data_Process)err = 0.0for i in range(len(Test_Label_Predict)):print(Test_Label[i],Test_Label_Predict[i])if Test_Label_Predict[i] != Test_Label[i]:err = err + 1.0err = err / len(Test_Label)print("误差为:",err)if __name__ == "__main__":run_main()

机器学习实战——利用Logistic回归预测疝气病症的病马的死亡率相关推荐

  1. Logistic回归实战---疝气病症预测病马的死亡率

    Logistic回归实现预测HorseColic 使用Logistic回归来预测患疝气病的马的存活问题(从疝气病症预测病马的死亡率) 一.环境准备 原始数据集下载及说明:http://archive. ...

  2. 从疝气病症预测病马的死亡率的测试数据集下载

    说明 学生党,最近正在学模式识别这门课,在参考<机器学习实战>这本书实现Logistic回归时,发现CSDN上大部分数据集都收费.<机器学习实战>上给出了数据集来源,并且是免费 ...

  3. Logistic 回归(sigmoid函数,手机的评价,梯度上升,批处理梯度,随机梯度,从疝气病症预测病马的死亡率...

    (手机的颜色,大小,用户体验来加权统计总体的值)极大似然估计MLE 1.Logistic回归 Logistic regression (逻辑回归),是一种分类方法,用于二分类问题(即输出只有两种).如 ...

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

    <机器学习实战> 实现使用Logistic回归来预测患有疝气病的马的存活问题: 结果截图: 完整代码: # -*- coding: utf-8 -*- # @Time : 2021/6/2 ...

  5. 逻辑回归实战:从疝气病症预测病马的死亡率

    下面使用Logistic回归来预测患有疝病的马的存活问题,数据集中包含了368个样本和28个特征.数据集中包含了医院检测马疝病的一些指标,有的指标比较主观,有的指标难以测量,例如马的疼痛级别.另外需要 ...

  6. 机器学习实战:逻辑回归(2)-从疝气病症预测病马的死亡率

    1.准备数据:处理数据中的缺失值 可选的做法: 使用可用特征的均值来填补缺失值: 使用特殊值来填补缺失值,如-1: 忽略有缺失值的样本: 使用相似样本的均值添补缺失值: 使用另外的机器学习算法预测缺失 ...

  7. python预测疾病_吴裕雄--天生自然python机器学习:使用Logistic回归从疝气病症预测病马的死亡率...

    ,除了部分指标主观和难以测量外,该数据还存在一个问题,数据集中有 30%的值是缺失的.下面将首先介绍如何处理数据集中的数据缺失问题,然 后 再 利 用 Logistic回 归 和随机梯度上升算法来预测 ...

  8. 【Python 机器学习实战】Logistic回归

    引言 假设现在有一些数据点,我们用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称作回归. 利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进 ...

  9. logistic回归分析优点_机器学习实战项目-Logistic回归

    Logistic 回归 概述 Logistic 回归虽然名字叫回归,但是它是用来做分类的.其主要思想是: 根据现有数据对分类边界线建立回归公式,以此进行分类. 须知概念 Sigmoid 函数 回归 概 ...

最新文章

  1. c语言bool怎么用_C语言中的一维数组和二维数组什么?怎么用?
  2. java和python的web自动化有什么区别-Python和Java哪个更适合做自动化测试?
  3. Calendar.clear(int field)的陷阱
  4. PDM 物理模型codename转大写
  5. 答读者问(5):有关数学对程序猿的作用、研发工作岗位要求和实习对找工作的影响等问题...
  6. php 5 windows,PHP 5.5 正式版发布,不再支持 Windows XP
  7. liunx下pytorch(python2.7)先前几个版本的安装(由于官网点击先前版本进不去)
  8. 背起行囊,就是过客;放下包袱,就有归宿。
  9. 让自己的网站变成暗黑模式
  10. 太极root权限_太极免root框架
  11. python画频率直方图_用matplotlib画直方图(histogram)
  12. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总...
  13. 联想微型计算机设置从u盘启动,联想bios设置u盘启动教程
  14. pLC支持C语言编程执行复杂控制,能够实现多种工作方式的plc控制系统的编程
  15. 华为云MRS基于Hudi和HetuEngine构建实时数据湖最佳实践
  16. 新媒体运营胡耀文教程:创作爆款短视频的“编剧思维”
  17. 计算机毕业技术,JAVA.JSP药店管理系统论文
  18. Multisim的2.8.x的实验报告
  19. [附源码]JAVA毕业设计校园快递代领系统(系统+LW)
  20. Win7程序运行出现Windows Based Scrip Host 已停止工作问题的解决方法

热门文章

  1. vue3.0封装一个图标选择组件
  2. 电机控制基础 --- (1)
  3. 清除SQLServer数据库日志(ldf文件)的几种方法
  4. 历年四级真题(2022/6-1990)
  5. 《数据分析与挖掘》期中测试题
  6. 高中学历可以学习华为认证网络工程师吗?
  7. Python--傻瓜式安装pip
  8. oracle查看asm磁盘组,ASM磁盘组信息查看常用命令
  9. 提交bug的书写规范
  10. Cocos2d-x 镜子特效