“量子跃迁与数据织网:深入探索K最近邻算法在高维空间中的优化路径、神经网络融合技术及未来机器学习生态系统的构建“
🎼个人主页:【Y小夜】
😎作者简介:一位双非学校的大二学生,编程爱好者,
专注于基础和实战分享,欢迎私信咨询!
🎆入门专栏:🎇【MySQL,Java基础,Rust】
🎈热门专栏:🎊【Python,Javaweb,Vue框架】
感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️
学习推荐:
人工智能是一个涉及数学、计算机科学、数据科学、机器学习、神经网络等多个领域的交叉学科,其学习曲线相对陡峭,对初学者来说可能会有一定的挑战性。幸运的是,随着互联网教育资源的丰富,现在有大量优秀的在线平台和网站提供了丰富的人工智能学习材料,包括视频教程、互动课程、实战项目等,这些资源无疑为学习者打开了一扇通往人工智能世界的大门。
前些天发现了一个巨牛的人工智能学习网站:前言 – 人工智能教程通俗易懂,风趣幽默,忍不住分享一下给大家。
目录
🎯文章目的
🎯K最近邻算法在分类任务中的应用
🥏在skearn中生成一个二元分类数据集,创建K最近邻分类模型,训练模型,并进行可视化,预测新数据的分类结果,查看预测准确率。
🎈代码解析
🎈运行结果
🥏在skearn中生成一个多元分类数据集,创建K最近邻分类模型,训练模型,并进行可视化,查看预测准确率。
🎈代码解析
🎈运行结果
🎯K最近邻算法在回归分析中的应用
🥏在skearn中生成一个回归分析任务数据集,并进行可视化
🎈代码解析
🎈运行结果
🥏训练K最近邻模型进行并进行回归分析预测,并进行可视化
🎈代码解析
🎈运行结果
🥏查看模型准确率,并进行模型调优,调整K参数的值,查看K参数分别取1,2,5,10时,模型的训练准确率和预测准确率有何变化。
🎈k为2时
🎈k为5时
🎈k为10时
🎯文章目的
(一)理解K最近邻算法的基本原理
(二)能够使用sklearn库进行K最近邻分类和回归模型的训练和预测
(三)学会调整超参数K和权重参数weights
🎯K最近邻算法在分类任务中的应用
🥏在skearn中生成一个二元分类数据集,创建K最近邻分类模型,训练模型,并进行可视化,预测新数据的分类结果,查看预测准确率。
🎈代码解析
from sklearn.datasets import make_blobs
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
data=make_blobs(n_samples=100,centers=2,random_state=9)
x,y=data
plt.scatter(x[y==1,0],x[y==1,1],cmap=plt.cm.spring,edgecolor='k',marker='^')
plt.scatter(x[y==0,0],x[y==0,1],cmap=plt.cm.spring,edgecolor='k',marker='o')
plt.show()
这段代码使用了scikit-learn库中的make_blobs函数生成了一个包含100个样本的数据集,其中有两个类别。然后使用matplotlib库绘制了散点图,将不同类别的样本用不同的标记表示出来。
具体来说,代码首先导入了所需的库和模块:
from sklearn.datasets import make_blobs
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
接下来,使用make_blobs
函数生成了一个包含100个样本的数据集,其中有两个类别(centers=2),并设置了随机种子为9(random_state=9):
data = make_blobs(n_samples=100, centers=2, random_state=9)
然后,将数据集拆分为特征矩阵X和目标向量y:
x, y = data
最后,使用matplotlib库绘制了散点图,将不同类别的样本用不同的标记表示出来:
plt.scatter(x[y==1, 0], x[y==1, 1], cmap=plt.cm.spring, edgecolor='k', marker='^')
plt.scatter(x[y==0, 0], x[y==0, 1], cmap=plt.cm.spring, edgecolor='k', marker='o')
plt.show()
这样,就可以在图形界面中看到两个类别的样本被绘制成散点图的形式。
import numpy as np
clf=KNeighborsClassifier()
clf.fit(x,y)
x_min,x_max=x[:,0].min()-1,x[:,0].max()+1
y_min,y_max=x[:,1].min()-1,x[:,1].max()+1
xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
z=clf.predict(np.c_[xx.ravel(),yy.ravel()])
z=z.reshape(xx.shape)
plt.pcolormesh(xx,yy,z,cmap=plt.cm. Set2)
plt.scatter(x[y==1,0],x[y==1,1],cmap=plt.cm.spring,edgecolor='k',marker='^')
plt.scatter(x[y==0,0],x[y==0,1],cmap=plt.cm.spring,edgecolor='k',marker='o')
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("Classifier:KNN")
plt.show()
print(clf.score(x,y))
这段代码是使用K近邻分类器(KNN)对数据进行分类,并绘制分类结果的散点图。首先导入numpy库,然后创建一个KNN分类器对象,接着使用fit方法训练模型。接下来,计算数据的最小值和最大值,用于创建网格。然后使用predict方法预测网格上的点所属的类别,并将结果转换为与网格形状相同的数组。最后,使用matplotlib库绘制分类结果的散点图,并显示分类器的准确率。
解析:
- 导入numpy库
- 创建KNN分类器对象
- 使用fit方法训练模型
- 计算数据的最小值和最大值
- 创建网格
- 使用predict方法预测网格上的点所属的类别
- 将结果转换为与网格形状相同的数组
- 使用matplotlib库绘制分类结果的散点图
- 显示分类器的准确率
🎈运行结果
🥏在skearn中生成一个多元分类数据集,创建K最近邻分类模型,训练模型,并进行可视化,查看预测准确率。
🎈代码解析
from sklearn.datasets import make_blobs
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
data2=make_blobs(n_samples=300,centers=4,random_state=4)
x2,y2=data2
plt.scatter(x2[y2==0,0],x2[y2==0,1],cmap=plt.cm.spring,edgecolor='k',marker='o')
plt.scatter(x2[y2==1,0],x2[y2==1,1],cmap=plt.cm.spring,edgecolor='k',marker='^')
plt.scatter(x2[y2==2,0],x2[y2==2,1],cmap=plt.cm.spring,edgecolor='k',marker='s')
plt.scatter(x2[y2==3,0],x2[y2==3,1],cmap=plt.cm.spring,edgecolor='k',marker='D')
plt.show()
这段代码使用sklearn库生成了一个包含300个样本的数据集,其中包含4个类别。然后使用matplotlib库绘制了散点图,将不同类别的样本用不同的标记表示出来。
import numpy as np
clf=KNeighborsClassifier()
clf.fit(x2,y2)
x_min,x_max=x2[:,0].min()-1,x2[:,0].max()+1
y_min,y_max=x2[:,1].min()-1,x2[:,1].max()+1
xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
z=clf.predict(np.c_[xx.ravel(),yy.ravel()])
z=z.reshape(xx.shape)
plt.pcolormesh(xx,yy,z,cmap=plt.cm.Set3)
plt.scatter(x2[y2==0,0],x2[y2==0,1],cmap=plt.cm.spring,edgecolor='k',marker='o')
plt.scatter(x2[y2==1,0],x2[y2==1,1],cmap=plt.cm.spring,edgecolor='k',marker='^')
plt.scatter(x2[y2==2,0],x2[y2==2,1],cmap=plt.cm.spring,edgecolor='k',marker='s')
plt.scatter(x2[y2==3,0],x2[y2==3,1],cmap=plt.cm.spring,edgecolor='k',marker='D')
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("Classifier:KNN")
plt.show()
print(clf.score(x2,y2))
这段代码使用K近邻分类器(KNN)对数据进行分类,并绘制分类结果的散点图。首先导入numpy库,然后创建一个KNN分类器对象,接着使用fit方法训练模型。接下来,计算数据的最小值和最大值,用于创建网格。然后使用predict方法预测网格上的点所属的类别,并将结果转换为与网格形状相同的数组。最后,使用matplotlib库绘制分类结果的散点图,并显示分类器的准确率。
🎈运行结果
🎯K最近邻算法在回归分析中的应用
🥏在skearn中生成一个回归分析任务数据集,并进行可视化
🎈代码解析
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
x,y=make_regression(n_features=1,n_informative=1,noise=30,random_state=5)
plt.scatter(x,y,c='b',edgecolor='k')
plt.show()
这段代码使用matplotlib库绘制了一个散点图,其中x和y是使用sklearn.datasets中的make_regression函数生成的回归数据集。数据集的特征数为1,有1个信息特征,噪声为30,随机种子为5。散点图中的点用蓝色表示,边缘颜色为黑色。
🎈运行结果
🥏训练K最近邻模型进行并进行回归分析预测,并进行可视化
🎈代码解析
from sklearn.neighbors import KNeighborsRegressor
import numpy as np
reg=KNeighborsRegressor()
reg.fit(x,y)
z=np.linspace(-2.5,2.5,200).reshape(-1,1)
plt.scatter(x,y,c='b',edgecolor='k')
plt.plot(z,reg.predict(z),c='r',linewidth=3)
plt.title('KNN Regressor')
plt.show()
print(reg.score(x,y))
这段代码使用sklearn库中的KNeighborsRegressor类实现了K近邻回归算法。首先导入了KNeighborsRegressor类和numpy库,然后创建了一个KNeighborsRegressor对象reg并使用fit方法训练模型。接着生成了一个等差数列z,并将其转换为二维数组。最后使用matplotlib库绘制了散点图和回归线,并输出了回归模型的得分。
🎈运行结果
🥏查看模型准确率,并进行模型调优,调整K参数的值,查看K参数分别取1,2,5,10时,模型的训练准确率和预测准确率有何变化。
🎈k为2时
reg2=KNeighborsRegressor(n_neighbors=2)
reg2.fit(x,y)
plt.scatter(x,y,c='b',edgecolor='k')
plt.plot(z,reg2.predict(z),c='r',linewidth=3)
plt.title("KNN Regressor:n_neighbors")
plt.show()
print(reg2.score(x,y))
🎈k为5时
reg3=KNeighborsRegressor(n_neighbors=5)
reg3.fit(x,y)
plt.scatter(x,y,c='b',edgecolor='k')
plt.plot(z,reg3.predict(z),c='r',linewidth=3)
plt.title("KNN Regressor:n_neighbors")
plt.show()
print(reg3.score(x,y))
🎈k为10时
reg4=KNeighborsRegressor(n_neighbors=10)
reg4.fit(x,y)
plt.scatter(x,y,c='b',edgecolor='k')
plt.plot(z,reg4.predict(z),c='r',linewidth=3)
plt.title("KNN Regressor:n_neighbors")
plt.show()
print(reg4.score(x,y))