《Python机器学习基础教程》

  • 第二章
  1. 包含在scikit-learn中的数据集 通常被保存为Bunch对象。里面包含真实数据以及一些数据集信息。 (1)关于Bunch对象,只需知道它与字典很相似,而且还有一个额外的好处,就是可以用点操作符来访问对象的值(比如用bunch.key 来代替bunch['key'])。
    (2)- target: 每个样本 的标签
  2. 不同机器学习算法的性质
  • KNN
1. k近邻分类
# 0)数据集
import mglearn
X, y = mglearn.datasets.load_extended_boston()

# scikit-learn中的knn
# 1)分为训练集、测试集
from sklearn.model_selection import train_test_split
X, y = mglearn.datasets.make_forge()
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# 2)导入类 并将其实例化。可以设定参数
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)
# 3)利用训练集对分类器进行拟合。 对于KNeighborsClassifier而言,就是保存数据集,以便在预测时计算与邻居之间的距离
clf.fit(X_train, y_train)
# 4)用predict方法对测试数据进行预测。对测试集中的每个点都要计算它在训练集的最近邻。并找出其中出现次数最多的类别
print("Test set prediction: {}".format(clf.predict(X_test)))
# 5)评估模型的泛华能力好坏。对测试数据和测试标签调用score方法
print("Test set accuracy: {:.2f}".format(clf.score(X_test, y_test)))
# 0.86表示:在测试数据集中,模型对其中865的样本预测的类别都是正确的
2. 分析KNeighborsClassifier

1)决策边界。 随着邻居个数越来越多,决策边界也越来越平滑。
更平滑的边界 对应 更简单的模型。
也即 更少的邻居 对应 更高的模型复杂度。而使用更多的邻居对应更低的模型复杂度。

模型复杂度和泛化能力 之间的关系。
随着邻居个数的增多,模型变得更简单,训练集精度也随之下降。

3. k近邻回归

1)预测结果是这些邻居的平均值。
2)代码块。用于回归的k近邻算法 在scikit-learn的KNeighborsRegressor类中实现。
3)模型评估。对于回归问题,score方法返回的是 R^2分数。R^2分数也叫做决定系数。 是回归模型预测的 优度度量,位于0到之间。 R^2分数等于1 对应完美预测,
R^2分数等于0 对应常熟模型,即总是预测训练集相应(y_train)的平均值。

# k近邻回归
from sklearn.neighbors import KNeighborsRegressor
X, y = mglearn.datasets.make_wave(n_samples=40)
# 将wave数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# 将模型实例化,并将邻居个数设为3
reg = KNeighborsRegressor(n_neighbors=3)
# 利用训练数据和训练目标值来拟合模型
reg.fit(X_train, y_train)
# 对测试数据进行预测
print("Test set predictions: \n{}".format(reg.predict(X_test)))
# score 评估
print("Test set R^2: {:.2f}".format(reg.score(X_test, y_test)))
# 结果是0.83,表示模型的拟合 相对较好。

转载于:https://my.oschina.net/workhardforward/blog/2253598

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值