一、环境准备与库安装

1. Python 环境

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()

五、学习建议

  1. 基础巩固:深入理解数据预处理的重要性

  2. 扩展实践:尝试在其他数据集(如糖尿病预测数据集)复现流程

  3. 理论结合:学习KNN算法背后的数学原理(距离计算公式)

  4. 进阶方向:探索模型部署(使用Flask构建预测API)

通过这个完整的机器学习流程实现,读者可以掌握Python进行机器学习的基本方法论。建议在实际项目中通过修改数据集和调整模型参数来深化理解。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐