寻找最影响预测结果的特征

  1. 导入相关的包
import pandas as pd
import numpy as np

# 特征最影响结果的K个特征
from sklearn.feature_selection import SelectKBest

# 卡方检验,作为SelectKBest的参数
from sklearn.feature_selection import chi2
  1. 导入数据
df = pd.read_csv("./datas/titanic/titanic_train.csv")
df = df[["PassengerId", "Survived", "Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Embarked"]].copy()
df.head()
  1. 数据清理和转换
# 查看是否有空值列
df.info()
# 给Age列填充平均值
df["Age"] = df["Age"].fillna(df["Age"].median())
# 将性别列变成数字
df.Sex.unique()
df.loc[df["Sex"] == "male", "Sex"] = 0
df.loc[df["Sex"] == "female", "Sex"] = 1
# 给Embarked列填充空值,字符串转换成数字
# Embarked
df.Embarked.unique()
# 填充空值
df["Embarked"] = df["Embarked"].fillna(0)
# 字符串变成数字
df.loc[df["Embarked"] == "S", "Embarked"] = 1
df.loc[df["Embarked"] == "C", "Embarked"] = 2
df.loc[df["Embarked"] == "Q", "Embarked"] = 3
df.head()
  1. 将特征列和结果列拆分开
y = df.pop("Survived")
X = df
X.head()
y.head()
  1. 使用卡方检验选择topK的特征
# 选择所有的特征,目的是看到特征重要性排序
bestfeatures = SelectKBest(score_func=chi2, k=len(X.columns))
fit = bestfeatures.fit(X, y)
  1. 按照重要性顺序打印特征列表
df_scores = pd.DataFrame(fit.scores_)
df_scores
df_columns = pd.DataFrame(X.columns)
df_columns
# 合并两个df
df_feature_scores = pd.concat([df_columns,df_scores],axis=1)
# 列名
df_feature_scores.columns = ['feature_name','Score']  #naming the dataframe columns

# 排序后查看
df_feature_scores.sort_values(by="Score", ascending=False)
df_feature_scores
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值