Python 入门机器学习实战:手把手教你实现鸢尾花分类
·
一、环境准备与库安装
1. Python 环境
-
推荐使用 Python 3.8+ 版本
2. 核心库安装
pip install numpy pandas matplotlib scikit-learn
二、机器学习全流程实现
1. 数据加载与探索
from sklearn.datasets import load_iris
import pandas as pd
# 加载数据集
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.Series(iris.target)
print("特征维度:", X.shape)
print("类别分布:\n", y.value_counts())
2. 数据预处理
数据集划分
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y,
test_size=0.2,
random_state=42
)
特征标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
3. 模型训练与评估
KNN 分类器实现
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 模型初始化
knn = KNeighborsClassifier(n_neighbors=3)
# 训练模型
knn.fit(X_train, y_train)
# 预测与评估
y_pred = knn.predict(X_test)
print("测试准确率:", accuracy_score(y_test, y_pred).round(2))
4. 可视化分析
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
# 降维可视化
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_test)
plt.figure(figsize=(8,5))
plt.scatter(X_pca[:,0], X_pca[:,1], c=y_pred, cmap='viridis', edgecolor='k')
plt.title('KNN分类可视化 (PCA降维)')
plt.xlabel('主成分1')
plt.ylabel('主成分2')
plt.colorbar(label='预测类别')
plt.show()
三、技术要点解析
1. 为什么需要特征标准化?
消除量纲差异:不同特征的数值范围差异会影响距离计算类算法(如KNN)的性能
加速收敛:梯度下降类算法在标准化后收敛更快
2. 参数选择技巧
n_neighbors:通过交叉验证选择最优K值
random_state:固定随机种子保证实验可复现性
3. 模型优化方向
增加数据增强:处理样本不均衡问题
尝试其他算法:比较SVM、决策树等不同模型效果
网格搜索调参:使用GridSearchCV自动优化超参数
四、完整代码示例
# 完整流程代码
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 数据加载
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.Series(iris.target)
# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 特征标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 模型训练
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# 结果预测
y_pred = knn.predict(X_test)
print("模型准确率:", accuracy_score(y_test, y_pred))
# 可视化
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_test)
plt.scatter(X_pca[:,0], X_pca[:,1], c=y_pred, cmap='coolwarm')
plt.title('鸢尾花分类可视化')
plt.show()
五、学习建议
基础巩固:深入理解数据预处理的重要性
扩展实践:尝试在其他数据集(如糖尿病预测数据集)复现流程
理论结合:学习KNN算法背后的数学原理(距离计算公式)
进阶方向:探索模型部署(使用Flask构建预测API)
通过这个完整的机器学习流程实现,读者可以掌握Python进行机器学习的基本方法论。建议在实际项目中通过修改数据集和调整模型参数来深化理解。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)