初步进入kaggle的大门,首先是最基础的Tatanic的学习
第一次尝试
import numpy as np
import pandas as pd
# =============================================================================
# 读入数据
# =============================================================================
train=pd.read_csv("train.csv")
test=pd.read_csv("test.csv")
# =============================================================================
# 剔除无关数据
# =============================================================================
traingai=train.drop(['PassengerId','Name','Ticket'],axis=1,inplace=False) #删去我认为无关的列
testgai=test.drop(['PassengerId','Name','Ticket'],axis=1,inplace=False)
# =============================================================================
# Sex的处理:male设为1 female设为0
# =============================================================================
traingai.loc[traingai.Sex=='male','Sex']=1 #之前采用traingai。Sex。。。。会产生warning
traingai.loc[traingai.Sex=='female','Sex']=0
testgai.loc[testgai.Sex=='male','Sex']=1
testgai.loc[testgai.Sex=='female','Sex']=0
# =============================================================================
# Age的处理:第一次缺失值尝试,将缺失的age暂时定为所有已知值的平均数
# =============================================================================
aveage=train['Age'].mean()
traingai.loc[pd.isnull(traingai.Age),'Age']=aveage #缺失的年龄用平均年龄替代
testgai.loc[pd.isnull(testgai.Age),'Age']=aveage
# =============================================================================
# Cabin的处理:有cabin的为1 没有cabin的为0
# =============================================================================
traingai.loc[pd.notnull(traingai.Cabin),'Cabin']=1
traingai.loc[pd.isnull(traingai.Cabin),'Cabin']=0
testgai.loc[pd.notnull(testgai.Cabin),'Cabin']=1
testgai.loc[pd.isnull(testgai.Cabin),'Cabin']=0
# =============================================================================
# 没有fare的设为10(初步尝试)
# =============================================================================
traingai.loc[pd.isnull(traingai.Fare),'Fare']=0
testgai.loc[pd.isnull(testgai.Fare),'Fare']=0
# =============================================================================
# 将S C Q 分别设为 0 1 2 未知的暂时用随机值代替
# =============================================================================
traingai.loc[traingai.Embarked=='S','Embarked']=0
traingai.loc[traingai.Embarked=='C','Embarked']=1
traingai.loc[traingai.Embarked=='Q','Embarked']=2
traingai.loc[pd.isnull(traingai.Embarked),'Embarked']=np.random.randint(0,3)
testgai.loc[testgai.Embarked=='S','Embarked']=0
testgai.loc[testgai.Embarked=='C','Embarked']=1
testgai.loc[testgai.Embarked=='Q','Embarked']=2
testgai.loc[pd.isnull(testgai.Embarked),'Embarked']=np.random.randint(0,3)
# =============================================================================
# 将训练集中标签与特征分开 用pop 并处理成矩阵形式
# =============================================================================
labels=traingai.pop('Survived')
labels=np.array(labels)
traingai=np.array(traingai)
testgai=np.array(testgai)
# =============================================================================
# 数据归一化
# =============================================================================
da=traingai.max(axis = 0)
xiao=traingai.min(axis = 0)
data_shape = traingai.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in range(0, data_rows, 1):
for j in range(0, data_cols, 1):
traingai[i][j] = (traingai[i][j] - xiao[j]) / (da[j] - xiao[j])
da=testgai.max(axis = 0)
xiao=testgai.min(axis = 0)
data_shape = testgai.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in range(0, data_rows, 1):
for j in range(0, data_cols, 1):
testgai[i][j] = (testgai[i][j] - xiao[j]) / (da[j] - xiao[j])
# =============================================================================
# 保存处理之后的特征值
# =============================================================================
np.savetxt('traingai.txt',traingai)
np.savetxt('testgai.txt',testgai)
np.savetxt('labels.txt',labels)
模型方面,这次用了一个很普通的神经网络,一层隐藏层。
精度0.77990