【九】机器学习之路——logistic回归

  前面的博客咱们介绍了监督学习里回归的一种——线性回归,今天咱们讲一下另外一种很重要的回归——逻辑回归(Logistic Regression)。

逻辑回归(Logistic Regression)

  之前咱们说的线性回归,举的例子是房价的预测的例子,手头有房子大小和对应房价的数据,然后通过模型拟合数据,最后输出预测的房价,100万,110万等。线性回归输出的值都是连续的,现实中还有一种情况,我们手头有一组患有肿瘤病人的数据,包括肿瘤的大小(cm)和对应的这个肿瘤是恶性的还是良性的(0,1)。我们的任务就是想通过学习这份数据,然后根据肿瘤的大小来预测这个肿瘤是恶性的还是良性的。和线性回归的不同,Logistic回归的最终预测的结果只有两种,要么良性(0),要么恶性(1)。怎么样才能将数据映射到0和1上呢?

  大家有没有想过通过函数映射的方法,把数据拟合的结果映射到0或1上?如果能想到这一步,那基本上已经一只脚跨进logistic回归的大门了,logistic回归就是通过函数的映射,将拟合结果映射到0和1上,那么问题来了,怎么映射?通过什么函数映射???

  因为咱们要把拟合结果映射到0,1上来,那咱们的映射函数的取值应该只有0和1两种,首先大家想到的是不是阶跃函数?

y={ 10 if x>0 if x=0


因为阶跃函数最简单,输出的值只有0和1,然而,阶跃函数在跳跃点上从0瞬间跳跃到1,这个瞬间跳跃的过程有时会比较难处理。

  这个时候咱们先介绍一个函数给大家认识,这个函数名字为sigmond函数,和阶跃函数类似,但是函数模型较平滑,话不多说,先来看看这个函数表达式:

σ(z)=11+ez,z(,+)

函数图像如下所示:



从sigmond的函数图可以看出,sigmond函数和阶跃函数很相似。因此为了实现Logistic回归,我们可以在已有数据的每个特征值上都乘以一个回归系数,然后把所有的值相加,将这个总和代入sigmond函数,进而得到一个范围在0~1之间的数值。任何大于0.5的数据被映射为1,小于0.5的数据被映射为0。(参考《机器学习实战》)

  刚说的一段话用公式表达会更加清晰,Sigmond的输入值为 “z”,通过学习线性回归咱们知道可以通过下式来做线性拟合,这里 ω0 和前面线性回归里的 θ0 含义相同,均代表线性拟合里的回归系数,

z=ω0x0+ω1x1+ω2x2+...+ωnxn


如果采用向量的描述方法,上式可以
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
居民出行选择行为可以被视为一个分类问题,其中特征包括年龄、性别、收入、出行目的、出行时间、出行距离等。在这里,我们可以使用逻辑回归模型进行预测。 我们可以先收集一些相关数据,然后将其分为训练集和测试集。接着,我们可以使用 Python 中的 Scikit-learn 库来构建逻辑回归模型。具体步骤如下: 1. 首先,我们需要导入所需的库: ```python import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score ``` 2. 然后,我们需要加载数据并进行预处理: ```python data = pd.read_csv('travel_behavior.csv') data = data.dropna() # 删除缺失值 data = pd.get_dummies(data, columns=['purpose', 'time']) # 将分类变量转换为哑变量 X = data.drop(['choice'], axis=1) y = data['choice'] ``` 这里,我们使用了 Pandas 库加载数据,并删除了任何包含缺失值的行。然后,我们使用 `get_dummies()` 函数将分类变量转换为哑变量。最后,我们将特征(`X`)和标签(`y`)分开。 3. 接着,我们将数据分为训练集和测试集: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) ``` 这里,我们使用了 `train_test_split()` 函数来将数据分为训练集和测试集。我们选择了 20% 的数据作为测试集,而其余的数据则用于训练模型。 4. 然后,我们可以使用逻辑回归模型进行训练: ```python model = LogisticRegression() model.fit(X_train, y_train) ``` 这里,我们使用了 Scikit-learn 库中的 `LogisticRegression()` 类来构建逻辑回归模型,并使用 `fit()` 方法将模型拟合到训练数据上。 5. 最后,我们可以使用测试集来评估模型的准确性: ```python y_pred = model.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` 这里,我们使用 `predict()` 方法来预测测试集中的标签,并使用 `accuracy_score()` 函数来计算模型的准确性。 通过以上步骤,我们就可以构建一个简单的逻辑回归模型,用于预测居民出行选择行为。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值