2 机器学习入门——逻辑回归第三课

这一篇我们拿一些实例来看看。

所有的数据下载地址:https://gitee.com/tianyalei/machine_learning,按对应章节查找。

还是要提醒一句,逻辑回归很简单,很多时候效果可以,但不够优秀,可以作为BaseLine。在选择算法前,可以先观察数据,根据经验推断是否符合线性(直线、曲线、圆形、抛物线等等),只要是比较连续的,能用线隔开的,一般逻辑回归都能给出一个还算凑合的答案。

1简单逻辑回归——鸢尾花

还是去UCI去找数据,这次我们用Most Popular Data Sets 里的鸢尾花——iris.csv。

sepal length in cm,sepal width in cm,petal length in cm,petal width in cm,iris
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
4.6,3.4,1.4,0.3,Iris-setosa

就是通过一些属性来判断是哪种类型的iris。

导入iris.csv,将iris字段改为Nominal类型


通过Visualize All我们可以简单看看各属性对于Iris的分类影响 。

好了,直接开始上算法吧。选择逻辑回归,选择交叉验证10次。


结果如图,大概96%正确率,效果OK。当然这个比较简单,当个开胃菜。

2多项式逻辑回归

 这是一个稍微复杂点的数据分布图,可以看到蓝色的点大概像一个椭圆,被黑色的*包围在里面。这种可以描述为是一个线性的,但很明显不是一次方线性的。

数据集是data2.csv

虽然明显不是一次线性方程,但我们还是先来试试。

导入数据,选择交叉验证,结果不出所料


只有50%的正确率,和瞎猜没啥区别。

我们在模型上右键Visualize classifier errors,看看错误分布。


可以看到无论是0的还是1的基本都是对半错,蓝色的是左边部分全错,右边大部分对。红色的是左边大部分对,右边全错。

x代表对的,方块是错的。

这基本符合我们的猜想,因为训练集的分布是个圆,你在上面画一个线,自然是一半对一半错。

根据以往经验,我们碰到曲线就上多项式,直接加次方。经过试验,上6次方后,效果就比较美好了。


怎么加次方,可以参考之前的文章,我直接给它加到6次方,数据为data2-all.arff。

再次验证结果为:


通过观察原图,我们也可以用手尝试画个圆,看看圈的数据的情况。基本上也就是错十几个点的样子。

可以看到正确率为83%,比线性提升极大,已经基本拟合了我们看到的情况。

可以先来看看别人对于同一批数据做的模型,http://www.hankcs.com/ml/programming-exercise-2-logistic-regression-cs229.html

在这个网址有人给出了算法,和得到的各种结果的示例,如较好的拟合





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
居民出行选择行为可以被视为一个分类问题,其中特征包括年龄、性别、入、出行目的、出行时间、出行距离等。在这里,我们可以使用逻辑回归模型进行预测。 我们可以先集一些相关数据,然后将其分为训练集和测试集。接着,我们可以使用 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()` 函数来计算模型的准确性。 通过以上步骤,我们就可以构建一个简单的逻辑回归模型,用于预测居民出行选择行为。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天涯泪小武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值