Menu
CoddyTech

回顾:清理并预测

本课属于 Coddy Machine Learning 学习旅程的“监督学习”单元。第 49 课,共 58 课。

challenge icon

挑战

中等

哪些营员会回来?camp.csv 中混有文字、数字和缺失值;起始代码会拆分数据并读取一名营员的信息。

  1. 构建本章的完整流水线:对 cabin 和 activity 进行独热编码,为数字创建一个处理流程,用中位数填补缺失值,然后进行缩放,最后使用逻辑回归。
  2. 打印训练行的 5 折交叉验证准确率,包括均值和标准差。
  3. 在训练行上拟合模型;打印测试准确率和这名营员回来的概率。

另一处营地的营员信息:10、lakeside、archery、21、-、4:

CV accuracy: mean 0.707, std 0.065
Test accuracy: 0.740
Chance of coming back: 0.91

短横线表示缺失的评分:你的流水线会像处理其他缺失值一样填补它。

亲手试试

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline

# 去年夏天的营员:他们今年回来了吗?回来记为(1),没回来记为(0)。
campers = pd.read_csv("camp.csv")
X = campers.drop(columns="came_back")
y = campers["came_back"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# 一名新营员,每行输入一个答案;短横线(-)表示缺失的数字。
answers = []
for i in range(6):
    answers.append(input())
numbers = []
for i in [0, 3, 4, 5]:
    if answers[i] == "-":
        numbers.append(np.nan)
    else:
        numbers.append(float(answers[i]))
camper = pd.DataFrame({"age": [numbers[0]], "cabin": [answers[1]], "activity": [answers[2]],
                       "nights": [numbers[1]], "rating": [numbers[2]], "friends_made": [numbers[3]]})

# 在下方编写你的代码。

监督学习中的所有课

自己练习: Python 在线编译器