数据集可以在这里下载:
https://www.kaggle.com/c/titanic
在此项目中,我们会用到以下Python库:
- Numpy - python科学计算库(矩阵运算)
- Pandas - python数据分析处理库
- Scikit-learn - python机器学习库(机器学习算法)
一、首先查看一下数据
import pandas as pd
titanic = pd.read_csv(r"S:\数据分析\kaggle_Titanic\train.csv")
titanic.head() # 默认前五行
我们可以看看 Titanic数据中有哪些特征,并分析一下哪些特征对生存几率的影响比较大。
二、接下来进行数据预处理
print(titanic.describe()) # 按列统计特征
通过对列的特征统计,我们发现Age值存在缺失的情况,于是下面进行缺失值处理:
import pandas as pd
titanic['Age'] = titanic['Age'].fillna(titanic['Age'].mean()) # 使用均值填充缺失值
print(titanic.describe())
于是,Age数据就填充完毕了。
然后对 Sex特征进行独热编码:
print(titanic['Sex'].unique()) # 查看Sex特征有哪些值
>>> ['male' 'female']
# loc定位到目标行,对Sex特征进行独热编码
titanic.loc[titanic['Sex'] == 'male', 'Sex'] = 0 # 令Sex等于male那行的Sex值为1
titanic.loc[titanic['Sex'] == 'female', 'Sex'] = 1 # 令Sex等于female那行的Sex值为0
再对 Embarked特征进行缺失值处理和独热编码:
print(titanic['Embarked'].unique())
>>> ['S' 'C' 'Q' nan] # 存在缺失值
titanic['Embarked'] = titanic['Embarked'].fillna('S') # S数量多,可以用S补充缺失值
titanic.loc[titanic['Embarked'] == 'S', "Embarked"] = 0
titanic.loc[titanic['Embarked'] == 'C', "Embarked"] = 1
titanic.loc[titanic['Embarked'] == 'Q', "Embarked"] = 2
三、使用线性回归模型预测生存几率
from sklearn.linear_model import LinearRegression # 导入线性回归的类,采用二分类进行分类预测
from sklearn.model_selection import KFold # K折交叉验证,取平均,调参
predictors = ["Pclass", "Sex", "Age"