七库下载 手游攻略 手游攻略 泰坦尼克再揭秘,泰坦尼克遇难记

泰坦尼克再揭秘,泰坦尼克遇难记

时间:2024-04-20 23:43:00 来源:头条 浏览:0

第一步是从Kaggle官网下载泰坦尼克号救援预测分析案例数据,第二步是在浏览器中打开Jupiter并选择Python,第三步是上传泰坦尼克号救援预测分析案例数据。

第四步是数据预处理。即读取数据并使用.describe()显示汇总数据。这是代码:

进口熊猫

泰坦尼克号=pandas.read_csv('train.csv')

泰坦尼克号.describe()

运行后你会得到如下结果

各列字段数据的统计结果显示,年龄数据缺失。您可以在此处查看数据源检查

您可以看到Age 列缺少值。

第五步,填写缺失值。您可以使用平均值来填充缺失值,而不是取最大值或最小值。

泰坦尼克号['年龄']=泰坦尼克号['年龄'].fillna(泰坦尼克号['年龄'].median())

泰坦尼克号.describe()

#titanic['Age'].median(),这是表的年龄列的中值。

#fillna(titanic['Age'].median()),填充年龄列中位数的中值。

#titanic['Age'].fillna(titanic['Age'].median()),用age列中中值的中位数填充age列中的空值

完成后,输出数据将如下所示显示,您会注意到Age 列不再为空值。

第六步,处理字符数据,将其转换为数值数据。原因是机器算法无法处理字符类型,而算法分类可以通过将字符类型转换为数字类型来完成。在数据源中,可以看到性别列是字符。您可以将男性指定为0。女性的值被指定为1。

titanic.loc[titanic['Sex']=='male','Sex']=0, #将male替换为0

titanic.loc[titanic['Sex']=='female','gender']=1, #将female替换为1

print(titanic['Sex'].unique()), #在Sex列中显示唯一值

运行效果如下。

同样,将Embarked 列中的字母S、C 和Q 更改为0、1 和2。

在此之前,您可以检查该列的唯一值是什么。

执行结果显示nan,代表NULL值。所以你可以先输入其他点。这里还可以统计S、C、Q三个点中哪一个点的点数多。您可以选择更多点。需要填写的点。

从上面的统计结果可以看出,S点的乘客人数最多,因此将缺失的登机点填为S。填充完成后统计显示S增加了2,说明数据只少了2。

您还可以打印列的唯一值以确保不存在缺失值。

接下来,将Embarked 列中的字母S、C 和Q 更改为0、1 和2。如果您先赋值,然后打印唯一值,您将看到字符已成功替换。

就我们的目的而言,预测要么被救助,要么不被救助。 0表示未救援,1表示救援成功。

第七步,选择特征指标,选择算法,进行预测。

1.选择回归模型预测

1)线性回归、拟合。

运行此代码一次会产生令人惊讶的糟糕结果,第二次运行会报告错误。发生了什么?

2)通常,逻辑回归用于分类,但这里Cross_val_score也用于交叉验证。执行结果如下

运行结果是0.79……不是很理想,不是很准确,不是很有效。

3)选择下面更高级的算法——随机森林。

从sklearn 导入model_selection

from sklearn.ensemble import RandomForestClassifier,这里我们称之为随机森林

detectors=['Pclass','Sex','Age','SibSp','Parch','Fare','Embarked'],这里我们选择一些可以影响救援的参数。

alg=RandomForestClassifier(random_state=1,n_estimators=10,min_samples_split=2,min_samples_leaf=1)。数字10代表10棵决策树,数字2和1用于控制停止分裂决策树的条件。

kf=model_selection.KFold(n_splits=3, shuffle=True, random_state=1)

scroes=model_selection.cross_val_score(alg, 泰坦尼克号[预测器], 泰坦尼克号['生存'],cv=kf)

#再次使用3次交叉验证。

print(scores.mean())#打印预测准确率

上述代码运行结果如下:

我们可以看到,准确率与回归模型预测的结果相同。接下来,调整决策树参数并检查预测精度。

决策树数量改为100,停止分裂参数分别为4和2。准确度没有改变。还是一样吗?为什么?需要解决办法吗?

2. 特征选择

在原有特征的基础上,添加兄弟姐妹数量['Sibsp]、儿童或老人数量['Parch']、身份['Mr、Miss、Dr.']、名词等特征。长度和其他特征。看看您是否可以进一步提高预测准确性。

#添加以下两个功能。

泰坦尼克号['家庭规模']=泰坦尼克号['SibSp']+泰坦尼克号['Perch']

泰坦尼克号['名称长度']=泰坦尼克号['名称'].apply(lambda x: len(x))

#将名称中包含的ID转换为数字

重新导入

def get_title(名称):

title_search=re.search('([A-Za-z]+)\.',名称)

对于title_search:

返回title_search.group(1)

返回''

标题=泰坦尼克号['名称'].apply(get_title)

打印(pandas.value_counts(标题))

title_mapping={'先生':1,'小姐':2,'夫人':3,'大师':4,'博士':5,'Rev':6,'少校':7,'上校':7,'女士':8,'Mme ':8、'唐':9、'女士':10、'伯爵夫人':10、'约翰·凯尔':10、'先生':9、'船长':7、'先生':2}

对于title_mapping.items(): 中的k,v

标题[标题==k]=v

打印(pandas.value_counts(标题))

泰坦尼克号['标题']=标题

执行结果如下。

绘制特征以查看哪些特征最显着

将numpy 导入为np

从sklearn.feature_selection 导入SelectKBest、f_classif

将matplotlib.pyplot 导入为plt

detectors=['Pclass','性别','年龄','SibSp','Parch','票价','登船','家庭规模','头衔','NameLength']

选择器=SelectKBest(f_classif,k=5)

选择器.fit(泰坦尼克号[预测器],泰坦尼克号['生存'])

疮=-np.log10(selector.pvalues_)

plt.bar(范围(len(预测变量)), 分数)

plt.xticks(范围(len(预测器)),预测器,旋转='垂直')

plt.show()

Predictor=['P 舱位','性别','票价','职称']

alg=RandomForestClassifier(random_state=1,n_estimators=50,min_samples_split=8,min_samples_leaf=4)

手术结果如何?图像没有出现?

我尝试按照视频进行操作,但感到很困惑。请帮我找出问题所在。谢谢。

标题:泰坦尼克再揭秘,泰坦尼克遇难记
链接:https://www.7kxz.com/news/gl/23117.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
天地劫幽城再临归真4-5攻略:第四章归真4-5八回合图文通关教学

天地劫幽城再临归真4-5攻略:第四章归真4-5八回合图文通关教学[多图],天地劫幽城再临归真4-5怎么样八回合内通

2024-04-20
航海王热血航线艾尼路怎么玩?艾尼路加点连招攻略大全

航海王热血航线艾尼路怎么玩?艾尼路加点连招攻略大全[多图],航海王热血航线艾尼路怎么加点?艾尼路怎么连招?关

2024-04-20
坎公骑冠剑国际服怎么玩?国际服新手攻略

坎公骑冠剑国际服怎么玩?国际服新手攻略[多图],坎公骑冠剑国际服的玩法是什么样的?关于游戏中的一些新手玩法

2024-04-20
王者荣耀鸿运6+1地狱之眼怎么抽?鸿运抽奖地狱之眼概率获取攻略

王者荣耀鸿运6+1地狱之眼怎么抽?鸿运抽奖地狱之眼概率获取攻略[多图],王者荣耀鸿运抽奖活动的奖池中还有传说

2024-04-20