Python 机器学习入门学习笔记:3D 可视化 + KNN 分类 + 数据标准化
·
大家好,今天学习了3D 数据可视化、KNN 近邻算法、数据标准化,把完整流程记录成笔记,分享给刚入门的小伙伴~
本文包含:
2. 加载数据
data=np.loadtxt('datingTestSet2.txt')
3. 按标签拆分数据
data_1=data[data[:,-1]==1]
data_2=data[data[:,-1]==2]
data_3=data[data[:,-1]==3]
4. 创建 3D 画布
fig=plt.figure()
ax=plt.axes(projection='3d')
5. 绘制 3D 散点图
ax.scatter(data_1[:,0],data_1[:,1],data_1[:,2],c='red',marker='o')
ax.scatter(data_2[:,0],data_2[:,1],data_2[:,2],c='blue',marker='^')
ax.scatter(data_3[:,0],data_3[:,1],data_3[:,2],c='green',marker='s')
6. 设置坐标轴(非常关键!)
ax.set(xlabel="Xaxes",ylabel="Yaxes",zlabel="Zaxes")
ax.set_xlim(0, 80000)
ax.set_ylim(0, 20)
ax.set_zlim(0, 2)
作用:
7. 显示图像
plt.show()
最终图像如下:

二、KNN 分类代码
# x=data[:,:-1]
# y=data[:,-1]
# knn=KNeighborsClassifier(n_neighbors=9)
# knn.fit(x,y)
# test1=[[43605,0.120460,1.352013],
# [15360,8.545204,1.340429],
# [63796,5.856649,0.160006]
# ]
# print(knn.predict(test1))
三、鸢尾花数据集 KNN 完整实战
1. 导入库
import pandas as pd
from sklearn.preprocessing import scale
from sklearn.neighbors import KNeighborsClassifier
2. 读取 Excel 数据
train_data=pd.read_excel("鸢尾花训练数据.xlsx")
test_data=pd.read_excel("鸢尾花测试数据.xlsx")
3. 拆分特征和标签
train_X=train_data[['萼片长(cm)','萼片宽(cm)','花瓣长(cm)','花瓣宽(cm)']]
train_y=train_data['类型_num']
4. 数据标准化(非常重要!)
data=pd.DataFrame()
data['萼片长标准化']=scale(train_X['萼片长(cm)'])
data['萼片宽标准化']=scale(train_X['萼片宽(cm)'])
data['花瓣长标准化']=scale(train_X['花瓣长(cm)'])
data['花瓣宽标准化']=scale(train_X['花瓣宽(cm)'])
作用:
5. 构建 KNN 模型并训练
kn=KNeighborsClassifier(n_neighbors=5)
kn.fit(data,train_y)
6. 训练集评分
train_predicted=kn.predict(data)
score=kn.score(data,train_y)
print("训练集准确率:", score)
7. 测试集处理
test_X=test_data[['萼片长(cm)','萼片宽(cm)','花瓣长(cm)','花瓣宽(cm)']]
test_y=test_data['类型_num']
8. 测试集标准化
data_test=pd.DataFrame()
data_test['萼片长标准化']=scale(test_X['萼片长(cm)'])
data_test['萼片宽标准化']=scale(test_X['萼片宽(cm)'])
data_test['花瓣长标准化']=scale(test_X['花瓣长(cm)'])
data_test['花瓣宽标准化']=scale(test_X['花瓣宽(cm)'])
9. 测试集评分
test_predicted=kn.predict(data_test)
score=kn.score(data_test,test_y)
print("测试集准确率:", score)
五、总结
今天把 3D 可视化、数据标准化、KNN 模型、模型评分 全部跑通了,收获很大!
- 3D 散点图绘制
- 鸢尾花数据集 KNN 分类实战
- 数据标准化作用与使用
- 模型训练与评分
一、3D 散点图可视化
1. 导入库
import matplotlib.pyplot as plt import numpy as np matplotlib:用来画图numpy:用来加载数据、处理数据- 加载文本数据集
- 数据最后一列是标签(1/2/3)
- 把数据按分类拆成 3 组
- 方便画不同颜色
- 创建画布
- 开启 3D 坐标轴
- 三类点分别用:
- 红色圆形
- 蓝色三角
- 绿色正方形
- 视觉区分更清晰
- 因为三个轴数据范围差距太大
- 不限制会压扁成平面
- 限制后才能看到真正 3D 分布
- 提取特征和标签
- 训练 KNN 模型
- 输入新数据,直接预测分类
运行结果如下:
- 读取训练集 + 测试集
train_X:4 个特征train_y:花的类型标签- 把数据缩放到统一范围
- KNN 是距离算法,必须标准化!
- K=5
- 用标准化后的数据训练模型
- 查看模型学习效果
- 运行结果如下:

四、今天学到的核心知识点
-
3D 图为什么会压扁?因为三个轴数据范围差距太大,必须用
set_xlim/ylim/zlim限制范围。 -
scale 是干嘛的?数据标准化,让不同大小的数据统一尺度。
-
KNN 必须标准化吗?必须!KNN 根据距离计算,不标准化效果很差。
-
score () 作用?直接输出模型准确率。
-
完整机器学习流程:读取数据 → 拆分特征标签 → 数据预处理 → 训练模型 → 评估模型
更多推荐

所有评论(0)