机器学习笔记1:基于Logistic回归进行数据预测

机器学习笔记1:基于Logistic回归进行数据预测

一、背景

  
  近期项目的一个核心部分就是实现对数据的预测,因为没有实际的数据样本,所以我准备近期学习Machine Learning的几种方式,从简单的线性非线性回归到TensorFlow及其他几种深度学习的方式,搭建相关的数据预测核心部分,并且完成各个系统的测试。等到实际数据获取后,进行系统测试与比对,选择最适合数据预测的类型。
  
  因为Machine Learning涉及到很多数学相关的知识,因此在基础知识方面,我看的是Coursera中的斯坦福大学的Machine Learning的网课。在实际操作的过程中参考Peter Harrington的《机器学习实战》一书,但是本书在深度学习方面没有相关的章节,因此我会从CSDN中找到合适的学习资源进行学习与更新。

二、基础知识

1.logistic回归介绍

  Logistic回归也就是逻辑回归,在下面的这个例子中,就是找到一条拟合的直线,将两类数据分开,下面的例子就是采用二维的数据,用一条直线将绿点和红点分开。

这里写图片描述

2.Logistic公式原理

  关于这条直线,我们可以用下面的公式来表现:
  
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

3.算法步骤

(1)算法的第一步就是实现数据的初始化,将二维的数据转换为三维的数据,上面提到便于计算将x0设置为1,因此可以人为的将其转换为三维数组。
(2)首先对参量w进行初始化为n行1列的单元数组。
(3)根据实际情况通过梯度下降方式,取得直线上拟合值与真实值之差的最小值,通过多次迭代的方式来求出最优的w值。
(4)经过迭代后获得w值,做出拟合直线,用X2表示纵坐标,作出直线,观察效果。

4.梯度算法

这里写图片描述

5.梯度下降算法应用

  关于参数w的迭代方程的推导过程如下:

(1)在测试的过程中,在构建误差函数的时候,采用最小二乘法,用分类误差评估分类的效果。其中label就是数据集的第三列数据,将x与m的乘积采用sigmoid函数处理。

这里写图片描述

(2)想要w值达到达到最小值,可以参考Coursera里面的课程内容,如图所示,如何到达最小值的点,需要一步步来进行迭代更新,在每一步求导,找到该点能够得到最小值的方向。所以算法的第二步就是进行求导运算。

这里写图片描述

求导过程如下:

这里写图片描述

6.处理数据中的缺失值

(1)使用可用特征的均值来填补缺失值;
(2)使用特殊值来填补缺失值,如-1;
(3)忽略有缺失的样本;
(4)使用相似样本的均值填补缺失值;
(5)使用另外的机器学习的算法预测缺失值。

三、代码部分

  这个部分会尽量对整个项目的每个函数给出解释,同时书中的source code关于梯度上升的算法,给出了一种基本算法以及两种改进方式,会在下面部分有所解释。完整的代码段及数据可以在第四部分中下载得到。

(1)导入数据

def loadDataset():
    dataSet = []  # 数据集
    labels = []  # 标签
    fr = open("testSet.txt")
    for line in fr.readlines():
        lineVec = line.strip().split()  # 读取每一行,[x1,x2,label]
        # [x0,x1,x2],其中x0表示常数项
        dataSet.append([1.0, float(lineVec[0]), float(lineVec[1])])
        labels.append(float(lineVec[2]))  # 添
  • 4
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是基于Logistic回归模型对心脏病数据进行建模的代码示例: ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # 读取心脏病数据集 heart_data = pd.read_csv('heart_data.csv') # 提取特征和标签 X = heart_data.drop('target', axis=1) y = heart_data['target'] # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建并训练Logistic回归模型 model = LogisticRegression() model.fit(X_train, y_train) # 在训练集上进行预测 train_predictions = model.predict(X_train) train_accuracy = accuracy_score(y_train, train_predictions) print("训练集的准确率:", train_accuracy) # 在测试集上进行预测 test_predictions = model.predict(X_test) test_accuracy = accuracy_score(y_test, test_predictions) print("测试集的准确率:", test_accuracy) ``` 以上代码中,首先我们使用`pandas`库读取心脏病数据集。然后我们提取特征和标签,其中特征`X`是除去目标列`target`以外的其它列,标签`y`是目标列`target`。 接下来,我们使用`train_test_split`函数将数据集划分为训练集和测试集,其中`test_size`表示测试集的比例,`random_state`用于设置随机种子以确保划分的一致性。 然后,我们创建一个Logistic回归模型对象,并使用训练集上的数据来训练模型。 最后,我们可以使用模型来对训练集和测试集进行预测,并计算准确率,其中准确率通过使用`accuracy_score`函数计算。 以上就是基于Logistic回归模型对心脏病数据进行建模的代码示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值