Kaggle入门——Titanic+随机森林(调参)+逻辑回归

本博客记录一下自己的Kaggle入门题目——Titanic。只弄了一天,特征工程做得比较草率,结果只有0.76+,不过主要是为了体验一下Kaggle竞赛的流程,以及熟悉一下Kaggle的使用。

1.题目相关

原题地址:https://www.kaggle.com/c/titanic/overview
数据:https://www.kaggle.com/c/titanic/data,数据的介绍页面上已经十分详尽,本博客就不赘述。
原题数据介绍中提到的特征工程处理我觉得挺好的(虽然我并没有完全采纳0-0),地址在这里:https://triangleinequality.wordpress.com/2013/09/08/basic-feature-engineering-with-the-titanic-data/
除此之外可以浏览一下kernels :https://www.kaggle.com/c/titanic/kernels,kernels是我认为Kaggle最亮眼的地方,可以在这里收到很多小tips的启发。
博主代码地址:https://github.com/AlannahYYL/titanic_mine

2.特征工程

正常情况下要先把数据可视化下看下每一列的和生还结果的相关性,已经进行数据分布分析。但是我大都省略了0-0,以下是我的特征处理:
首先合并train和test,方便获取一些列的统计信息。然后对数据进行初步观测,包括查看空值情况,方便后续填充。

train_csv = pd.read_csv(train_csv_path)
test_csv = pd.read_csv(test_csv_path)
#合并csv文件,进行数据清洗
total_csv = [train_csv,test_csv]
total_csv = pd.concat(total_csv)
total_csv.to_csv(total_csv_path,index=None)
#初步分析及填充
print(train_csv.info()) #打印摘要
print(train_csv.describe()) #打印描述性统计信息
print(train_csv.isnull().sum())#打印train空值数量
print(test_csv.isnull().sum())#打印test空值数量 Fare有1个空值
age_mode = float(total_csv['Age'].dropna().mode())#年龄众数 #24
embarked_mode = str(total_csv['Embarked'].dropna().mode())# 启航港 S
fare_mean = float(total_csv['Fare'].dropna().mean()) #旅客票价平均数 #33.29

接下来对要使用的特征进行处理:
Sex:

接下来对要使用的特征进行处理:
Sex:
def replace_Sex(x):
    if x=="male":
        return 0
    else:
        return 1
train_df['Sex'] = train_df['Sex'].apply(replace_Sex)
test_df['Sex'] = test_df['Sex'].apply(replace_Sex)

Age:

def replace_Age(x):
    if x == 'NA':
        x= age_mode
    if float(x)<=12
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
随机森林是一种常用的机器学习算法,它可以应用于分类和回归问题。在实际应用中,我们需要对随机森林进行调参,以提高模型的预测性能。本文将介绍如何使用Python进行随机森林调参,以信用卡欺诈预测为例。 ## 1. 数据准备 首先,我们需要下载信用卡欺诈预测数据集,可以从Kaggle上下载。下载后,我们需要使用Python读入数据,并进行数据预处理。 ``` import pandas as pd import numpy as np data = pd.read_csv('creditcard.csv') data.head() ``` 读入数据后,我们可以查看数据的基本情况,包括数据的结构、缺失值和异常值等。如果有缺失值或异常值,我们需要进行数据清洗。 ``` data.info() data.describe() ``` ## 2. 特征选择 随机森林可以自动选择特征,但是如果数据集中包含大量无关的特征,会导致模型的预测性能下降。因此,在训练模型之前,我们需要进行特征选择。 ``` from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import f_classif X = data.drop(['Class'], axis=1) y = data['Class'] selector = SelectKBest(f_classif, k=10) selector.fit(X, y) X_new = selector.transform(X) ``` 我们使用f_classif作为特征选择的评价指标,选取了10个最相关的特征。如果需要更多的特征,可以调整k的值。 ## 3. 训练模型 在训练模型之前,我们需要将数据集分为训练集和测试集。 ``` from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X_new, y, test_size=0.2, random_state=42) ``` 然后,我们可以使用随机森林算法训练模型。 ``` from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(n_estimators=100, max_features='sqrt') model.fit(X_train, y_train) ``` 在这里,我们设置了n_estimators=100,表示使用100个决策树进行训练,max_features='sqrt'表示每个决策树使用特征数的平方根进行训练。 ## 4. 调参 接下来,我们需要进行随机森林调参随机森林有很多参数可以调整,包括n_estimators、max_depth、min_samples_split、min_samples_leaf等。在这里,我们介绍如何使用GridSearchCV进行调参。 ``` from sklearn.model_selection import GridSearchCV param_grid = { 'n_estimators': [100, 200, 300], 'max_depth': [3, 5, 7], 'min_samples_split': [2, 4, 6], 'min_samples_leaf': [1, 2, 4] } grid_search = GridSearchCV(model, param_grid=param_grid, cv=5, n_jobs=-1) grid_search.fit(X_train, y_train) print(grid_search.best_params_) ``` 在这里,我们定义了一个参数网格param_grid,并使用cv=5进行5折交叉验证。n_jobs=-1表示使用所有的CPU核心进行计算,加快计算速度。最后,输出最佳参数。 ## 5. 模型评估 最后,我们使用测试集对模型进行评估。 ``` from sklearn.metrics import classification_report y_pred = grid_search.predict(X_test) print(classification_report(y_test, y_pred)) ``` 使用classification_report函数输出分类报告,包括精确度、召回率、F1值等指标。 ## 总结 本文介绍了如何使用Python进行随机森林调参,以信用卡欺诈预测为例。调参机器学习中非常重要的一步,可以提高模型的预测性能。在实际应用中,我们需要根据不同的数据集进行调参,以获得最好的结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值