imp遇到重复数据_数据挖掘入门 - 泰坦尼克号生存预测

本文介绍了在泰坦尼克号生存预测任务中,数据预处理的步骤,包括处理重复值、删除无关特征、填补缺失值以及特征编码。接着,通过决策树和随机森林算法构建模型,并进行了参数调优。随机森林在未调参情况下就展现出优于单一决策树的表现,最终通过调整得到的随机森林模型达到了84.74%的准确率。
摘要由CSDN通过智能技术生成
import pandas as pd;
from sklearn.tree import DecisionTreeClassifier; # 导入决策树
from sklearn.linear_model import LogisticRegression; # 导入逻辑回归
from sklearn.model_selection import cross_val_score;
from sklearn.impute import SimpleImputer;
from sklearn.preprocessing import OneHotEncoder;
import matplotlib.pyplot as plt

titanic_data = pd.read_csv(r"D:/titanic/train.csv")

# 初步查看数据长啥样

titanic_data.head()

# 查看数据有没有缺失值

titanic_data.info()

0df77b34523485ab6af786aa42f7d7f6.png

可以看出,有部分列有缺失值,这个后面要做相应处理。

1、数据预处理

1.1 重复值处理

titanic_data.duplicated().sum()

43af8ed15f03437230cc3d7c247ad304.png

可以看出,数据比较好,没有缺失值

1.2 从经验看来(这步其实在实际中是跟业务强相关),cabin、name、ticket、passengerId这些特征,与最终是否获救是没有直接关系的,因此可以把这四列删除

titanic_data.drop(['Cabin', 'Name', 'Ticket', 'PassengerId'], axis=1,inplace=True);

1.3 填补缺失值

# 填补缺失值(对于Age,用均值)
imp_mean = SimpleImputer();
titanic_data.loc[:, 'Age'] = imp_mean.fit_transform(titanic_data.loc[:, 'Age'].values.reshape(-1, 1));
# 填补缺失值(对于Embarked,用众数)
titanic_data.loc[:, 'Embarked'].value_counts()
imp_mostFre = SimpleImputer(strategy='most_frequent');
titanic_data.loc[:, 'Embarked'] = imp_mostFre.fit_transform(titanic_data.loc[:, 'Embarked'].values.reshape(-1, 1));

1.4 对Sex和Embarked进行OneHotEncoder

wait_to_encode = titanic_data.loc[:, ['Sex', 'Embarked']];

one_hot_encoder = OneHotEncoder(categories='auto');
tmp = one_hot_encoder.fit(wait_to_encode);
result = tmp.transform(wait_to_encode).toarray()
new_columns = ['Female', 'Male', 'Embarked_C', 'Embarked_Q', 'Embarked_S'];

titanic_data = pd.concat([titanic_data, pd.DataFrame(result, columns = new_columns)], axis=1)
titanic_data.drop(['Sex', 'Embarked'], axis=1, inplace = True)
titanic_data.head()

32d0489c9a9162bdb59c7bbacebfa59f.png

1.5 分特征数据集和标签数据集

titanic_feature = titanic_data.loc[:, titanic_data.columns != 'Survived'];
titanic_target = titanic_data.loc[:, titanic_data.columns == 'Survived'];

2、特征预处理

2.1 方差过滤

from sklearn.feature_selection import VarianceThreshold

varice_Selector = VarianceT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值