Kaggle-Titanic-(二分类+随机森林)

Titanic

题意:

就是给你了n个人,每个人有一些性质,要你求出test中的每个人是否存活。

数据处理:

1.先看数据:surviva、pclass、sex、Age、sibsp、parch、ticket、fare、cabin、embarked。
首先使用神经网络算法传入的dataframe的特征值必须是数值型的。
查看train数据中的各个特征值,如果不是数值型的,需要进行独热编码。
通过plt进行图形化查看每个特征值和surviva的关系,是否有明显正负相关性。
2.处理数据空缺,多记忆相关函数。
通过查看train数据特性,发现有些特征值的值太过杂乱,并不适合作为特征值,直接drop掉。
发现pclass、sex、Age、sibsp、parch数值较少,且相关性大,适合作为特征值。
对train数据处理后,分成X_train, X_test, Y_train, Y_test,train作为训练数据,test作为测试数据。

建立模型:

神经网络选择随机森林,设置一定参数,传入X_train和Y_train进行训练。
通过predict(X_test)于Y_test进行对比,查看当前的正确率。
对test数据进行处理,通过predict(X_test)构造出output答案即可。

代码:
import sys

import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split


def data_init(data):
    data = data[['Age','Survived','Pclass','Sex','SibSp','Parch']]
    data['Age'] = data['Age'].fillna(data['Age'].value_counts().index[0])
    data = pd.get_dummies(data)
    return data


if __name__ == '__main__':
    train_data = pd.read_csv('/kaggle/input/titanic/train.csv')
    train_data = data_init(train_data)

    X = train_data.drop(['Survived'], axis=1)
    Y = train_data['Survived']
    X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2)

    model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=1)
    model.fit(X_train,Y_train)
    accuracy = accuracy_score(Y_test,model.predict(X_test))
    print(accuracy)

    test_data = pd.read_csv('/kaggle/input/titanic/test.csv')
    X = test_data[['Age','Pclass','Sex','SibSp','Parch']]
    X['Age'] = X['Age'].fillna(X['Age'].value_counts().index[0])
    X = pd.get_dummies(X)
    
    output = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived': model.predict(X)})
    output.to_csv('/kaggle/working/submission.csv', index=False)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值