前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python从零开始第六章机器学习①逻辑回归

Python从零开始第六章机器学习①逻辑回归

作者头像
用户1359560
发布2018-12-26 14:31:55
5430
发布2018-12-26 14:31:55
举报
文章被收录于专栏:生信小驿站

在本节中,您将使用机器学习算法解决泰坦尼克号预测问题:Logistic回归。 Logistic回归是一种分类算法,涉及预测事件的结果,例如乘客是否能够在泰坦尼克号灾难中幸存

1912年4月15日,在首次航行期间,泰坦尼克号撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难。这场轰动的悲剧震惊国际社会,在这次海难中导致死亡率高的原因之一是没有足够的救生艇给乘客和机组人员,虽然幸存下来有一部分的运气因素,但是还是有一些人比其他人的生存下来的可能性更高,比如妇女、儿童和上层阶级的人士。在这个学习之中,我们将用逻辑回归来预测一些人生存的可能性。用机器学习来预测哪些乘客能更幸免于难。在此用到的编程语言是Python。

  • 加载数据
代码语言:javascript
复制
%reset -f
%clear
# In[*]

import pandas as pd
from sklearn import linear_model
from sklearn import preprocessing
import os
os.chdir('D:\\train\\all')
# In[*]
# read the data
df = pd.read_csv("train.csv")

我个人的习惯是每一步都看一下数据框,以验证数据是否正确加载。

  • 清理数据 加载数据后,就可以清理数据了。 在泰坦尼克号数据集中,有许多列对于构建机器学习模型并不重要。 为此,我们使用以下代码删除数据集中的列。
代码语言:javascript
复制
# drop the columns that are not useful to us
df = df.drop('PassengerId', axis=1)
# axis=1 means column
df = df.drop('Name', axis=1)
df = df.drop('Ticket', axis=1)
df = df.drop('Cabin', axis=1)
  • 编码非数字字段 为了在Python中执行逻辑回归,Scikit-learn要求使用label encoder功能。 检查数据集,您会看到Sex和Embarked的值是字符串类型,这时候需要先进行label encoder才能进一步完成。 为此,您可以使用LabelEncoder类来执行转换,如下所示:
代码语言:javascript
复制
# initialize label encoder
label_encoder = preprocessing.LabelEncoder()
# convert Sex and Embarked features to numeric
sex_encoded = label_encoder.fit_transform(df["Sex"])
print(sex_encoded)
# 0 = female
# 1 = male
df['Sex'] = sex_encoded
embarked_encoded = label_encoder.fit_transform(df["Embarked"])
print(embarked_encoded)
# 0 = C
# 1 = Q
# 2 = S
df['Embarked'] = embarked_encoded
print(df.head())

请注意,Sex和Embarked字段的值现在已替换为编码值。

  • 使字段分类 您需要在数据集中处理的下一类值是分类型数据。 分类类型是有限的固定数量的可能数值。 分类值表示Scikit了解对于这种类型的字段不进行数值运算。 分类字段的一个很好的例子是Survived,其中值只能是0或1(而不是介于两者之间的任何地方)。

要使字段分类,请使用Pandas中的Categorical类:

代码语言:javascript
复制
# In[*]
# make fields categorical
df["Pclass"] = pd.Categorical(df["Pclass"])
df["Sex"] = pd.Categorical(df["Sex"])
df["Embarked"] = pd.Categorical(df["Embarked"])
df["Survived"] = pd.Categorical(df["Survived"])
print(df.dtypes) # examine the datatypes
                       # for each feature
Survived    category
Pclass      category
Sex         category
Age          float64
SibSp          int64
Parch          int64
Fare         float64
Embarked    category
dtype: object
  • 将数据集拆分为训练集和测试集 清理数据集后,您现在可以将数据集拆分为两个不同的集合:一个用于训练集,另一个用于测试。 但在此之前,您需要将数据集分成两个数据框:一个包含所有用于预测的属性,另一个包含对象的标签。
代码语言:javascript
复制
    # In[*]                   
                       
 # we use all columns except Survived as
# features for training
features = df.drop('Survived',1)
# the label is Survived
label = df['Survived']
                     
                       
from sklearn.model_selection import train_test_split
# split the dataset into train and test sets
train_features,test_features, train_label,test_label = train_test_split(features,
        label,
        test_size = 0.25, # split ratio
        random_state = 1, # Set random seed
        stratify = df["Survived"])
# Training set
print(train_features.head())
print(train_label)  
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.12.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档