多模型语言python_模型|利用Python语言做逻辑回归算法

编者按:逻辑回归算法是一种基本的重要的机器学习算法。它有着简单有效的特点,并在信用评分,营销响应等领域广泛应用。我创建了Python语言微信群,定位:Python语言学习与实践。需要入群的,请添加我的微信:luqin360,备注:Python语言入群。

逻辑回归算法是一种用于二分类的机器学习算法。线性回归我们用这个式子:

问题是这些预测对于分类来说是不合理的,因为真实的概率必然在0到1之间。为了避免这个问题,我们必须使用一个函数对p(X)建模,该函数为X的所有值提供0到1之间的输出。Logistic回归是以其核心函数Logistic函数命名的:

我们将使用Kaggle的泰坦尼克数据集。我们将尝试预测一个分类——生存还是死亡。

让我们从用Python实现逻辑回归来进行分类开始。我们将使用泰坦尼克数据集的“半清理”版本,如果您使用直接托管在Kaggle上的数据集,您可能需要做一些额外的清理。

导入库

让我们导入一些库来开始吧!

Pandas和Numpy更容易分析。import pandas as pd

import numpy as np

用于数据可视化的Seaborn和Matplotlib。import matplotlib.pyplot as plt

import seaborn as sns

%matplotlib inline

数据集

让我们从将titanic_train.csv文件读入pandas的一个数据框开始。train = pd.read_csv('titanic_train.csv')

train.info()

探索性数据分析EDA

让我们开始一些探索性的数据分析吧!我们将从检查缺失的数据开始!

缺失的数据

我们可以使用seaborn创建一个简单的热图来查看我们丢失的数据!sns.heatmap(train.isnull(),yticklabels=False,cbar=False,cmap='viridis')

大约20%的年龄数据缺失。年龄缺失的比例很可能小到可以用某种形式的推测来合理替代。看看Cabin列,我们似乎丢失了太多的数据,无法在基本水平上做一些有用的事情。我们稍后可能会删除这个,或者将其更改为另一个特性,如“Cabin Known: 1或0”

让我们继续可视化更多的数据!

根据性别存活下来的人数的计数图。sns.countplot(x='Survived',hue='Sex',data=train,palette='RdBu_r')

根据乘客等级计算存活人数的计数图。sns.countplot(x='Survived',hue='Pclass',data=train,palette='rainbow')

基于年龄的数据集分布图。train['Age'].hist(bins=30,color='darkred',alpha=0.7)

旅客支付不同票价的分布图。train['Fare'].hist(color='green',bins=40,figsize=(8,4))

数据清洗

我们想要填充缺失的年龄数据,而不是仅仅删除缺失的年龄数据行。一种方法是填入所有乘客的平均年龄。然而,我们可以更聪明地了解这一点,并按乘客级别检查平均年龄。例如sns.boxplot(x='Pclass',y='Age',data=train,palette='winter')

我们可以看到,在高级舱中,较富裕的乘客往往年龄较大,这是有道理的。我们将根据Pclass计算的平均年龄来填补年龄缺失值。def impute_age(cols):

Age = cols[0]

Pclass = cols[1]

if pd.isnull(Age):

if Pclass == 1:

return 37

elif Pclass == 2:

return 29

else:

return 24

else:

return Age

train['Age'] = train[['Age','Pclass']].apply(impute_age,axis=1)

再检查一遍热图!sns.heatmap(train.isnull(),yticklabels=False,cbar=False,cmap='viridis')

让我们继续,删除Cabin列和宝行NaN的行。train.drop('Cabin',axis=1,inplace=True)

train.dropna(inplace=True)

转换分类特征

我们需要使用panda将分类特性转换为虚拟变量!否则,我们的机器学习算法将无法直接将这些特性作为输入。sex = pd.get_dummies(train['Sex'],drop_first=True)

embark = pd.get_dummies(train['Embarked'],drop_first=True)

train.drop(['Sex','Embarked','Name','Ticket'],axis=1,inplace=True)

train = pd.concat([train,sex,embark],axis=1)

太棒了!我们的数据已经为模型准备好了!

建立逻辑回归模型

让我们首先将数据分解为一个训练集和一个测试集(如果您想使用所有这些数据进行培训,您可以使用另一个test.csv文件)。from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(train.drop('Survived',axis=1),

train['Survived'], test_size=0.30,

random_state=101)

训练和预测from sklearn.linear_model import LogisticRegression

logmodel = LogisticRegression()

logmodel.fit(X_train,y_train)

predictions = logmodel.predict(X_test)

让我们评价模型

评价

我们可以使用分类报告检查精度,召回,f1得分!from sklearn.metrics import classification_report

print(classification_report(y_test,predictions))

本文简要概述了如何在python中使用逻辑回归模型。我还演示了一些有用的方法来进行数据清理。以下笔记本可以在github上找到。

谢谢你!

原文链接:

https://datascienceplus.com/logistic-regression-with-python/

你若是觉得有用,清点赞并分享给其它朋友。更多数据知识,请点击阅读原文。您有任何问题,请留言。公众号推荐

数据人才(ID:datarencai)

(一个帮助数据人才找工作的公众号,

也分享数据人才学习和生活的有趣事情。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值