【Python实战】手把手教你用Scikit-learn实现鸢尾花分类!机器学习入门必备
·
摘要:零基础也能学会的机器学习实战!15分钟快速实现经典分类任务,完整代码+逐行解析,带你快速打通机器学习任督二脉!
一、环境准备
# 所需库安装(Anaconda用户可跳过)
!pip install numpy pandas matplotlib scikit-learn
二、完整实战代码
步骤1:导入工具库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
步骤2:数据加载与探索
# 加载经典鸢尾花数据集
iris = datasets.load_iris()
X = iris.data # 特征矩阵(150x4)
y = iris.target # 目标向量(0:山鸢尾, 1:变色鸢尾, 2:维吉尼亚鸢尾)
# 创建DataFrame方便查看
df = pd.DataFrame(X, columns=iris.feature_names)
df['Species'] = y
print(df.head())
# 可视化特征分布
plt.figure(figsize=(12,6))
for i in range(4):
plt.subplot(2,2,i+1)
plt.hist(X[:,i], bins=20, edgecolor='k')
plt.title(iris.feature_names[i])
plt.tight_layout()
plt.show()
步骤3:数据预处理
# 划分训练集/测试集(7:3比例)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
步骤4:模型训练(SVM示例)
# 创建支持向量机分类器
model = SVC(kernel='rbf', C=1.0, gamma='scale')
# 训练模型
model.fit(X_train, y_train)
步骤5:模型评估
# 预测测试集
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率:{accuracy:.2%}")
# 生成分类报告
print("\n分类报告:")
print(classification_report(y_test, y_pred, target_names=iris.target_names))
# 绘制混淆矩阵
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(6,4))
plt.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)
plt.title('Confusion Matrix')
plt.colorbar()
tick_marks = np.arange(len(iris.target_names))
plt.xticks(tick_marks, iris.target_names, rotation=45)
plt.yticks(tick_marks, iris.target_names)
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()
步骤6:新数据预测
# 模拟新数据预测(需进行相同标准化处理)
new_data = [[5.1, 3.5, 1.4, 0.2]] # 山鸢尾样本
new_data_scaled = scaler.transform(new_data)
prediction = model.predict(new_data_scaled)
print(f"\n预测结果:{iris.target_names[prediction][0]}")
三、代码解析(关键点说明)
-
数据标准化:消除特征量纲差异,提升模型性能
-
SVM参数:
-
kernel='rbf':径向基核函数处理非线性问题 -
C=1.0:正则化参数,控制分类严苛度 -
gamma='scale':自动调整核函数系数
-
-
评估指标:
-
准确率:整体预测正确率
-
混淆矩阵:可视化分类详情
-
F1-score:综合精确率与召回率
-
四、效果展示
运行结果示例:
模型准确率:100.00%
分类报告:
precision recall f1-score support
setosa 1.00 1.00 1.00 19
versicolor 1.00 1.00 1.00 13
virginica 1.00 1.00 1.00 13
accuracy 1.00 45
macro avg 1.00 1.00 1.00 45
weighted avg 1.00 1.00 1.00 45
预测结果:setosa
五、扩展练习
-
尝试其他分类器(如随机森林、KNN)
-
调整SVM参数观察结果变化
-
使用PCA进行特征降维可视化
-
在Kaggle下载更复杂数据集实践
相关标签:#Python机器学习 #人工智能入门 #Scikit-learn实战 #分类算法 #AI编程
温馨提示:完整代码已测试通过(Python 3.8+),推荐使用Jupyter Notebook分步运行。遇到问题欢迎在评论区留言交流!
更多推荐



所有评论(0)