使用spyder分别用网格搜索,KNN,逻辑回归方法预测泰坦尼克号男女主角生还的可能性
时间: 2023-06-30 16:23:47 浏览: 107
好的,我可以回答你的问题。首先,需要明确的是,网格搜索是一种超参数优化的方法,适用于各种机器学习算法,包括KNN和逻辑回归。因此,我们可以使用网格搜索来寻找最佳的KNN和逻辑回归模型的超参数。
以下是使用Spyder进行泰坦尼克号生还预测的步骤:
1. 导入需要的库和数据集
```python
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 导入数据集
titanic = pd.read_csv('titanic.csv')
```
2. 数据预处理
```python
# 将性别转化为数字
titanic['Sex'] = titanic['Sex'].map({'female': 0, 'male': 1}).astype(int)
# 处理缺失值
titanic['Age'].fillna(titanic['Age'].mean(), inplace=True)
# 选择特征和标签
X = titanic[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare']]
y = titanic['Survived']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
3. KNN模型
```python
# 定义KNN模型
knn = KNeighborsClassifier()
# 定义超参数
knn_params = {'n_neighbors': [3, 5, 7, 9, 11]}
# 网格搜索
knn_grid = GridSearchCV(knn, knn_params, cv=5)
knn_grid.fit(X_train, y_train)
# 预测
knn_pred = knn_grid.predict(X_test)
# 计算准确率
knn_acc = accuracy_score(y_test, knn_pred)
print('KNN准确率为:', knn_acc)
```
4. 逻辑回归模型
```python
# 定义逻辑回归模型
lr = LogisticRegression()
# 定义超参数
lr_params = {'C': [0.1, 1, 10, 100]}
# 网格搜索
lr_grid = GridSearchCV(lr, lr_params, cv=5)
lr_grid.fit(X_train, y_train)
# 预测
lr_pred = lr_grid.predict(X_test)
# 计算准确率
lr_acc = accuracy_score(y_test, lr_pred)
print('逻辑回归准确率为:', lr_acc)
```
在上述代码中,我们使用了KNN和逻辑回归模型来预测泰坦尼克号男女主角的生还可能性,并使用网格搜索来优化模型的超参数。最后,我们计算了KNN模型和逻辑回归模型的准确率,并将结果打印出来。
需要注意的是,这里的代码仅提供了一个基本的框架,具体的参数和超参数需要根据数据集的实际情况进行调整。
阅读全文