朴素贝叶斯算法titanic
时间: 2024-06-09 18:02:41 浏览: 29
朴素贝叶斯算法是一种常见的分类算法,其主要思想是根据贝叶斯定理来计算样本属于每个类别的概率,然后将概率最大的类别作为样本的预测分类。
在Titanic数据集中,朴素贝叶斯算法可以用来预测乘客是否能在灾难中生还。我们可以根据乘客的性别、年龄、船票等级等信息来训练模型,然后对测试集中的数据进行分类预测。
具体来说,朴素贝叶斯算法将样本的特征看作是独立的,并假设它们之间的关系是简单的。在Titanic数据集中,我们可以将乘客的性别、年龄、船票等级等信息看作是独立的特征,然后根据这些特征计算每个乘客能够在灾难中生还的概率。
相关问题
采用决策树和朴素贝叶斯算法分别实现泰坦尼克号乘客生存预测
好的,下面是决策树和朴素贝叶斯算法的实现代码。
首先,我们需要导入相关的库和数据集:
```python
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 读取数据集
data = pd.read_csv('titanic.csv')
```
接着,我们需要对数据集进行预处理,包括去除无关特征、处理缺失值和将文本数据转换为数值型数据等:
```python
# 去除无关特征
data = data.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1)
# 处理缺失值
data['Age'] = data['Age'].fillna(data['Age'].mean())
data['Embarked'] = data['Embarked'].fillna('S')
# 将文本数据转换为数值型数据
data['Sex'] = data['Sex'].map({'male': 0, 'female': 1}).astype(int)
data['Embarked'] = data['Embarked'].map({'S': 0, 'C': 1, 'Q': 2}).astype(int)
# 将数据集分为特征集和标签集
X = data.drop(['Survived'], axis=1)
y = data['Survived']
```
接下来,我们将数据集分为训练集和测试集,并使用决策树和朴素贝叶斯算法进行模型训练和预测:
```python
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 构建决策树模型
dtc = DecisionTreeClassifier(max_depth=3)
dtc.fit(X_train, y_train)
dtc_y_pred = dtc.predict(X_test)
# 构建朴素贝叶斯模型
gnb = GaussianNB()
gnb.fit(X_train, y_train)
gnb_y_pred = gnb.predict(X_test)
# 输出模型的准确率
print("Decision Tree accuracy:", accuracy_score(y_test, dtc_y_pred))
print("Naive Bayes accuracy:", accuracy_score(y_test, gnb_y_pred))
```
运行完毕后,会输出决策树和朴素贝叶斯模型的准确率。这里使用了决策树的最大深度为3,你可以根据实际情况进行调整。
r语言对泰坦尼克号数据集做朴素贝叶斯分类模型
好的,下面是一个简单的例子,使用朴素贝叶斯分类模型对泰坦尼克号数据集进行分类。
首先,下载并加载数据集:
``` r
library(readr)
titanic <- read_csv("https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv")
```
接下来,我们需要将数据集拆分为训练集和测试集:
``` r
library(caret)
set.seed(123)
trainIndex <- createDataPartition(titanic$Survived, p = 0.7, list = FALSE)
train <- titanic[trainIndex, ]
test <- titanic[-trainIndex, ]
```
然后,我们需要将数据集转换为适合朴素贝叶斯分类模型的格式。在本例中,我们将使用“Survived”列作为响应变量,其他列作为预测变量。
``` r
library(dplyr)
library(tidyr)
library(reshape2)
train_nb <- train %>%
select(-PassengerId, -Name, -Ticket, -Cabin) %>%
mutate_if(is.character, as.factor) %>%
gather(key = "variable", value = "value", -Survived) %>%
dcast(Survived ~ variable + value, fun.aggregate = length) %>%
replace(is.na(.), 0)
test_nb <- test %>%
select(-PassengerId, -Name, -Ticket, -Cabin) %>%
mutate_if(is.character, as.factor) %>%
gather(key = "variable", value = "value", -Survived) %>%
dcast(Survived ~ variable + value, fun.aggregate = length) %>%
replace(is.na(.), 0)
```
现在,我们可以使用朴素贝叶斯分类模型对测试集进行分类:
``` r
library(e1071)
nb_model <- naiveBayes(Survived ~ ., data = train_nb)
nb_pred <- predict(nb_model, newdata = test_nb[,-1])
```
最后,我们可以使用混淆矩阵来评估模型的性能:
``` r
library(caret)
confusionMatrix(nb_pred, test_nb$Survived)
```
这就是一个简单的朴素贝叶斯分类模型的例子,用于对泰坦尼克号数据集进行分类。当然,这只是一个入门级别的实例,你可以根据自己的需要进行更深入的调整和改进。