机器学习100天—第5天k近邻法(附实战教程)

下面是我们的Beyonce小姐姐,小姐姐目前是在读学生,前端中途杀到机器学习里面,我给她分享了许多相关资料,大家有需要可以找一下她,春节过后还会有小惊喜哦。

我们的机器学习100天终于出到了第5天,虽然100天看起来很短,但是坚持下来真的不是一件很简单的事情,特别是还要写文章,文章不易,大家觉得是干货就点个赞哦~

如上图,当K=3时,它会被分类为 Class B。因为K=3时,3个临近点里有2个是B类的。

同理,K=7时它会被分类为 Class A,因为K=7时,7个临近点里4个是A类的。

KNN算法一个比较不好的缺点是K值由人主观决定。因为这样有一个问题,你取的K值不同,对于某些点的分类结果就不同,比如上图分别取k=3和k=7会得到不同的结果。

K值不能取太小,比如K=1的情况,此时容易被错误的样本干扰,造成过拟合等问题。当然,K值也不能取太大,越大分类效果越差。

如上图所示,当k=1的时候,决策边界变得非常不光滑,换句话说,模型的决策规则非常复杂,容易造成过拟合。

简而言之:k越小,模型越容易过拟合;k越大,越容易欠拟合。

所以K值应该取一个不大不小的奇数,比如3、7、9、11等,千万不能选偶数,因为偶数会有两个分类打平的情况,不要给自己找麻烦。

一图总结KNN算法:

下面我们就同样使用第三天的数据集来使用KNN预测用户是否会购买SUV,并计算KNN算法在这个应用场景上的准确率。

1.导入库与数据

现在有一个数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。

一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试使用KNN算法预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买:

导入库:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.metrics import confusion_matrix
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder

导入数据,包括性别:

# 1.导入数据集
dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [1, 2, 3]].values
Y = dataset.iloc[:, 4].values

# 性别转化为数字
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])

2.数据集切分与特征缩放

我们对数据源进行处理,将其中25%的数据设置为测试集。

# 2.将数据集分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
    X, Y, test_size=0.25, random_state=0)

此外,还需要进行特征缩放,因为在K近邻算法中,分类器主要是计算两点之间的欧几里得距离,如果一个特征比其它的特征有更大的范围值,那么距离将会被这个特征值所主导。

因此每个特征应该被归一化,比如将取值范围处理为0到1之间或权重相同的值。

# 3.特征缩放
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

3.数据训练与预测

使用scikit-learn中的KNN算法进行训练,设置k值=5:

# 4.训练
classifier = KNeighborsClassifier(n_neighbors=5)
classifier.fit(X_train, y_train)

对分类器调用predict方法进行预测:

# 5.预测
y_pred = classifier.predict(X_test)

你可以把预测结果输出,但这里我觉得没有必要,我们直接进入下一步评估模型就能知道结果好坏了。

4.模型评估

与上一节教程一样,我们使用混淆矩阵进行评估:

# 6.评估预测

# 生成混淆矩阵
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
print(cm)

得到结果如下:

(base) G:\push\20210210>python test_with_gender.py
[[64 4]
 [ 3 29]]

可以看到,分类正确的值有 64+29=93个,分类错误的值有 3+4=7个。

准确率达 93/100 = 93%,比上节使用逻辑回归的准确率高了4%,你也可以尝试选择不同的K值,看看能不能拿到更加优秀的结果。

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的Beyonce小姐姐

一定要备注【高清图】

????????????????????

➕我们的Beyonce小姐姐微信要记得备注【高清图】

来都来了,喜欢的话就请分享点赞在看三连再走吧~~~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《机器学习100》是一个机器学习入门指南,旨在帮助初学者快速掌握机器学习的基本概念和技术。这本书以清晰简明的语言介绍了机器学习的基本原理,涵盖了监督学习、无监督学习、深度学习等主要领域。 《机器学习100》的内容非常丰富,包括理论知识、实践案例以及代码示例。读者可以通过学习这本书,了解机器学习的基本原理,并能够运用各种算法进行数据分析和模型建立。此外,书中还提供了许多实际项目的案例,使读者能够将所学知识应用到实际工作中。 此外,这本书还提供了一个100的学习计划,帮助读者有条不紊地学习机器学习。每的学习内容都有明确的目标和任务,在实践中逐步提高自己的技能。这使得初学者可以有一个系统的学习过程,快速入门机器学习。 《机器学习100》的作者具有丰富的机器学习实战经验,他们将自己的经验和技巧融入到这本书中。这使得读者可以通过学习这本书,获得实战经验,并能够更好地应对真实的机器学习问题。 总之,《机器学习100》是一本非常实用的机器学习入门书籍,帮助读者快速入门机器学习,并具备实际应用的能力。无论你是想从事机器学习的工作,还是仅仅对机器学习感兴趣,这本书都是一个很好的选择。 ### 回答2: 《机器学习100》是一本非常流行的机器学习教材,它是由一群机器学习专家和实践者合作编写的,旨在帮助初学者快速入门机器学习领域。 这本书的中文版共有300页,内容丰富全面。书中首先介绍了机器学习的基本概念和原理,包括监督学习、无监督学习、强化学习等不同类型的机器学习以及它们的应用场景。随后,书中详细介绍了机器学习常用的算法和技术,如线性回归、逻辑回归、决策树、随机森林、支持向量机等。这些算法被详细解释,包括其原理、优缺点以及应用示例。 此外,书中还提供了大量的编程实践案例,利用常见的机器学习工具和库进行实际操作,如Python中的Scikit-learn和TensorFlow等。通过这些实践案例,读者可以更好地理解机器学习的应用和实际操作。 《机器学习100》还特别关注了机器学习的实际应用。在书中,作者们提供了一些实际的数据集和案例,让读者能够应用所学的知识解决实际问题。这样的实际应用帮助读者培养机器学习的实际思维和解决问题的能力。 总的来说,《机器学习100》这本书内容深入浅出,适合初学者快速入门,同时也适合有一定机器学习基础的读者进一步拓展知识。它是一本很好的学习资料,推荐给对机器学习有兴趣的读者阅读。 ### 回答3: 《机器学习100》是一本关于机器学习教程资料,本书提供了全面的机器学习知识和实践指导。该书的中文版可以在多个电子书平台上免费获取,也可在一些知名的机器学习网站上下载。 该书的主要内容包括机器学习的基本概念、算法原理与应用实例。读者可以通过该书系统地学习机器学习的相关知识,掌握机器学习的核心算法原理,以及如何将其应用于实际问题中。 《机器学习100》采用了简洁明了的语言和丰富的图表,使得读者能够更好地理解和掌握机器学习的基本概念和方。此外,该书还通过一些实际案例的分析,让读者了解机器学习在各个领域的应用,帮助读者将理论与实践相结合。 该书的内容分为多个章节,每个章节都有相应的练习和代码实践,读者可以通过实际动手操作来巩固理论知识。这种结合理论与实践的教学方式,让读者能够更加深入地学习和理解机器学习的相关知识。 总之,《机器学习100》是一本非常实用的机器学习教程资料,适合初学者和有一定基础的读者。通过阅读该书,读者可以从零基础开始学习机器学习,并逐步掌握机器学习的核心概念和方,为以后进行更深入的研究和实践打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值