本案例提供的数据集可以在Kaggle官网进行下载:https://www.kaggle.com/c/titanic
基本思路:挑选数据集中有关联的属性作为特征,并对特征进行数据清洗、残缺值填充等操作,使用经过特征工程处理过的训练集训练好一个逻辑回归模型,并使用这个逻辑模型对测试集进行预测,预测结果保存到一个csv文件,并将csv文件提交到官网。
一.引入包
from __future__ import print_function, division
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn #这是一个可视化的展示库
import random
from sklearn.ensemble import RandomForestRegressor
import sklearn.preprocessing as preprocessing
from numpy import array
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import Imputer
可以观察训练集的数据字段
data=pd.read_csv('G:\Machine-learning\\tensorflow-train-project(jupyter)\kaggele-project6-tairanprediction\dataset\\train.csv')
print(data.columns)
二.预处理函数
创建准备进行数据预处理的函数:年龄信息补全函数、属性转换为数值的函数、属性值归一化函数。
1.缺失值补全函数
def set_missing_ages(data):
age_df=data[['Age','Fare','Parch','SibSp','Pclass']] #抽取一部分特征作为年龄相关特征时使用
known_age=age_df[age_df.Age.notnull()].as_matrix()# 这是一种抽离,把知道年龄的数据抽取出来作为一个矩阵
#print('known_age:',known_age)
unknown_age=age_df[age_df.Age.isnull()].as_matrix()
#接下来使用的是RandomForestClassifier算法来补全年龄特征
y=known_age[:,0]
x=known_age[:,1:]
#创建补全算法,并进行数据喂养 随机森林中参数意义为:n_estimators 子模型个数
rfr=RandomForestRegressor(random_state=0,n_estimators=2000,n_jobs=-1)
rfr.fit(x,y)
predictedAges=rfr.predict(unknown_age[:,1::])#对不知道年龄的矩阵,使用其特征进行年龄的预测
data.loc[(data.Age.isnull()),'Age']=predictedAges#这是针对DateFrame的定位并填充残缺值的方式
return data
2.属性转换为数值的函数
def attribute_to_number(data):
#前三行会对属性进行独热编码
dummies_Pclass=pd.get_dummies(data['Pclass'],prefix='Pclass')#get