回顾:清理并预测
本课属于 Coddy Machine Learning 学习旅程的“监督学习”单元。第 49 课,共 58 课。
挑战
中等哪些营员会回来?camp.csv 中混有文字、数字和缺失值;起始代码会拆分数据并读取一名营员的信息。
- 构建本章的完整流水线:对
cabin和activity进行独热编码,为数字创建一个处理流程,用中位数填补缺失值,然后进行缩放,最后使用逻辑回归。 - 打印训练行的 5 折交叉验证准确率,包括均值和标准差。
- 在训练行上拟合模型;打印测试准确率和这名营员回来的概率。
另一处营地的营员信息: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 在线编译器