用 python 做数据挖掘入门并不难,掌握基础工具和流程即可上手。1. 准备环境与数据:安装 python 及 numpy、pandas、scikit-learn 等库,使用自带的鸢尾花数据集;2. 数据预处理:包括标准化、缺失值处理、类别编码,并拆分训练集和测试集;3. 选择模型并训练:如 knn、svm、决策树、随机森林等,以 knn 为例进行分类训练;4. 评估模型性能:通过准确率、混淆矩阵、分类报告等方式评估模型效果;5. 简单调参尝试提升效果:调整参数如 n_neighbors 并观察对结果的影响,后续可用网格搜索优化参数。整个流程完整清晰,适用于真实数据场景。
想用 Python 做数据挖掘,其实入门并不难。掌握一些基础工具和流程,就能开始上手实战。其中,scikit-learn(也就是 sklearn)是 Python 中最常用的数据挖掘和机器学习库之一,功能全面、接口友好,非常适合初学者使用。
下面通过一个简单的实例带你了解如何使用 sklearn 进行数据挖掘的基本操作。
一、准备环境与数据
在正式开始之前,确保你已经安装好了 Python 和必要的库:
立即学习“Python免费学习笔记(深入)”;
- Python 3.x
- numpy、pandas(用于数据处理)
- matplotlib、seaborn(可选,用于可视化)
- scikit-learn(核心)
你可以用 pip 安装这些库:
pip install numpy pandas scikit-learn matplotlib seaborn
为了方便演示,我们使用 sklearn 自带的鸢尾花数据集(Iris),这是一个经典的分类问题数据集,适合入门练习。
from sklearn.datasets import load_iris iris = load_iris() X, y = iris.data, iris.target
这样我们就加载了特征数据 X 和目标变量 y。
二、数据预处理:清洗 + 特征工程初步
数据挖掘的第一步通常是数据预处理。即使你拿到的是“干净”的数据,也可能需要做一些标准化或编码转换。
常见的预处理步骤包括:
- 数据归一化或标准化(如 Z-score)
- 缺失值处理(本例中没有缺失值)
- 类别型变量编码(如 one-hot 编码)
- 拆分训练集和测试集
以拆分训练集和测试集为例:
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)
这一步非常重要,因为我们需要用一部分数据来训练模型,另一部分来评估效果。
三、选择模型并训练
接下来就是选择合适的模型进行训练了。对于初学者来说,可以从以下几个常见模型入手:
- K近邻(KNeighborsClassifier)
- 支持向量机(SVC)
- 决策树(DecisionTreeClassifier)
- 随机森林(RandomForestClassifier)
比如我们用 KNN 来做分类:
from sklearn.neighbors import KNeighborsClassifier model = KNeighborsClassifier(n_neighbors=3) model.fit(X_train, y_train)
这段代码做了两件事:
- 实例化了一个 KNN 分类器,设定最近邻居数为3;
- 使用训练数据拟合模型。
四、评估模型性能
训练完模型后,下一步是看它表现怎么样。常用的评估方法有:
- 准确率(accuracy_score)
- 混淆矩阵(confusion_matrix)
- 分类报告(classification_report)
继续上面的例子:
from sklearn.metrics import accuracy_score, classification_report y_pred = model.predict(X_test) print("准确率:", accuracy_score(y_test, y_pred)) print(classification_report(y_test, y_pred))
你会看到类似这样的输出:
准确率: 1.0 precision recall f1-score support 0 1.00 1.00 1.00 10 1 1.00 1.00 1.00 10 2 1.00 1.00 1.00 10 accuracy 1.00 30
说明这个模型在这个小数据集上表现很好,预测准确率达到满分。
五、简单调参尝试提升效果
虽然不是必须的,但你可以尝试调整模型参数来进一步优化结果。例如,KNN 中的 n_neighbors 参数可以试试不同的值:
for k in [1, 3, 5, 7]: model = KNeighborsClassifier(n_neighbors=k) model.fit(X_train, y_train) print(f"k={k} 的准确率:", accuracy_score(y_test, model.predict(X_test)))
你会发现不同参数对结果的影响。这只是调参的一个小小例子,后续你可以用网格搜索(GridSearchCV)来做更系统的调优。
基本上就这些了。整个流程下来,你已经完成了一个完整的数据挖掘任务:从数据加载、预处理、建模、评估到调参。虽然用的是一个小而经典的数据集,但套路是一样的,换更大的真实数据也适用。
不复杂,但容易忽略细节。比如数据是否真的代表整体?有没有过拟合?要不要交叉验证?这些都可以慢慢深入。