目录
0 摘要
1 导入包与加载数据
2 数据可视化分析
3 特征工程
4 LR初步建模与结果
5 优化方法---重新进行特征工程 选特征、 模型融合
6 总结
0.摘要
最近利用两周多的时间准备做了一下kaggle上的第一个热门比赛,链接为Kaggle的Titanic幸存预测。
这是一个基本的二分类问题,下面就这一分类问题竞赛的处理思路及代码实现,包括探索性数据分析,特征工程,缺失值填充和模型调优等方面进行描述。
语言:Python; 工具:pycharm+jupyter notebook(这个可以一步步运行实时显示每步的结果很方便) ; 所用的库来自:anaconda(建议新手下载,不需要一个个库自己安装,里面包含绝大部分python库) 。下载安装步骤可以百度
1.导入包与加载数据
注意一下,可视化分析过程中中文显示可能出问题,注意加上最后的代码
#数据处理
import pandas as pd
import numpy as np
import random
import sklearn.preprocessing as prescessing
#可视化
import matplotlib.pyplot as plt
import seaborn as sns
#内嵌画图
%matplotlib inline
#ML
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import GradientBoostingClassifier,GradientBoostingRegressor,RandomForestClassifier,RandomForestRegressor
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.model_selection import learning_curve
#各种模型、数据处理方法
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC, LinearSVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import Perceptron
from sklearn.linear_model import SGDClassifier
from sklearn.tree import DecisionTreeClassifier
from xgboost import XGBClassifier
from sklearn.metrics import precision_score
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import GridSearchCV, cross_val_score, StratifiedKFold, learning_curve
import os
##############
##############
from matplotlib.font_manager import FontProperties
myfont=FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',size=14)
sns.set(font=myfont.get_name())
#coding:utf-8
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
os.chdir('G:\\我的坚果云\\4-计算机\\数据分析与挖掘\\kaggle1-泰坦尼克预测\\')
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
#训练数据总预览 ,同理测试数据也是一样的方法
train.head(3)
相关系数矩阵(如下)可以查看各属性之间的相关关系,主要看survived与其他数值型属性的关系,
颜色数表越接近1,存在强的正相关关系;反之,越接近-1,存在强的负相关关系。
sns.set(context="paper", font="monospace",style="white")
f, ax = plt.subplots(figsize=(8,6))
train_corr = train.drop('PassengerId',axis=1).corr() #.corr() 计算相关系数矩阵,只负责数值型的数据列
sns.heatmap(train_corr, ax=ax, vmax=.9, square=True)
ax.set_xticklabels(train_corr.index, size=15)
ax.set_yticklabels(train_corr.columns[::-1], size=15)
ax.set_title('train feature corr', fontsize=20)
# plt.show()
一共十个属性,分别是:
Age:年龄
Sex: 性别
Name: 名字(里面包含尊称等信息)
Ticket : 船票编号
Cabin : 客舱号
Embarked : 登船港口(1起点S:Southampton,经过点C:Cherbourg,2起点Q:Queenstown)
Fare : 船票价格
Parch : 船上父母/子女数(不同代直系亲属数)
SibSp : 船上兄弟姐妹数/配偶数(同代直系亲属数)
Pclass : 客舱等级(1表示1等舱)
分类的结果:
Survived : 生存情况(1=存活, 0=死亡)