Scikit-Learn (sklearn) 基础教程

Scikit-Learn(简称 sklearn)是 Python 生态系统中用于机器学习的开源库之一。它提供了简单而高效的工具,用于数据挖掘和数据分析,构建在 NumPy、SciPy 和 matplotlib 之上。sklearn 支持监督学习和无监督学习,并提供了各种数据集用于测试和实验。本文将详细介绍 sklearn 的基础知识,包括其安装、常用模块、数据预处理、模型训练和评估等。

一、安装 Scikit-Learn

在开始使用 sklearn 之前,需要确保已安装该库。可以使用以下命令通过 pip 安装:

pip install scikit-learn

安装完成后,可以通过以下命令检查安装是否成功:

import sklearn
print(sklearn.__version__)

如果能够输出版本号,说明安装成功。

二、Scikit-Learn 的基本模块

Scikit-Learn 包含许多模块,常用的有以下几个:

  • sklearn.datasets:提供常用数据集。
  • sklearn.preprocessing:数据预处理模块。
  • sklearn.model_selection:模型选择和评估模块。
  • sklearn.linear_model:线性模型模块。
  • sklearn.svm:支持向量机模块。
  • sklearn.tree:决策树模块。
  • sklearn.ensemble:集成方法模块,如随机森林和梯度提升。
  • sklearn.metrics:性能度量模块。

接下来,我们将详细介绍这些模块的使用方法。

三、加载和准备数据

1. 使用内置数据集

Sklearn 提供了一些常用的内置数据集,如鸢尾花数据集、波士顿房价数据集等。可以通过以下方式加载数据集:

from sklearn.datasets import load_iris
data = load_iris()
print(data.keys())

2. 数据分割

在机器学习中,通常需要将数据集分为训练集和测试集,以评估模型的性能。可以使用 train_test_split 函数进行数据分割:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

四、数据预处理

在训练模型之前,通常需要对数据进行预处理,包括标准化、归一化、缺失值处理等。Sklearn 提供了 preprocessing 模块来完成这些任务。

1. 标准化

标准化是指将特征值转换为均值为0,标准差为1的分布。可以使用 StandardScaler 进行标准化:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

2. 归一化

归一化是指将特征值缩放到一定范围(通常是 [0, 1])。可以使用 MinMaxScaler 进行归一化:

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

五、模型训练与评估

1. 训练模型

Sklearn 提供了多种机器学习算法,可以通过简单的接口进行模型训练。例如,使用线性回归模型:

from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_train, y_train)

2. 模型预测

训练完成后,可以使用模型进行预测:

y_pred = model.predict(X_test)

3. 模型评估

Sklearn 提供了多种评估指标,用于衡量模型的性能。例如,使用均方误差(MSE)评估回归模型:

from sklearn.metrics import mean_squared_error

mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)

对于分类问题,可以使用准确率(accuracy)、精确率(precision)、召回率(recall)等指标进行评估:

from sklearn.metrics import accuracy_score, precision_score, recall_score

accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')

print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)

六、超参数调优

在机器学习中,选择合适的超参数对于模型性能至关重要。Sklearn 提供了 GridSearchCVRandomizedSearchCV 等工具来自动化超参数调优过程。

1. 网格搜索

GridSearchCV 通过穷举搜索找到最佳超参数组合:

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}
grid_search = GridSearchCV(SVC(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

print("Best Parameters:", grid_search.best_params_)

2. 随机搜索

RandomizedSearchCV 通过随机搜索找到最佳超参数组合,通常在搜索空间较大时使用:

from sklearn.model_selection import RandomizedSearchCV

param_distributions = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}
random_search = RandomizedSearchCV(SVC(), param_distributions, n_iter=10, cv=5, random_state=42)
random_search.fit(X_train, y_train)

print("Best Parameters:", random_search.best_params_)

七、模型持久化

在训练好模型后,可以将其保存以便后续使用。Sklearn 提供了 joblib 工具进行模型持久化。

1. 保存模型

import joblib

joblib.dump(model, 'model.pkl')

2. 加载模型

model = joblib.load('model.pkl')

八、实例:鸢尾花分类

综合以上内容,我们通过一个简单的鸢尾花分类实例来展示 sklearn 的完整工作流程。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# 加载数据集
iris = load_iris()
X = iris.data
y = 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)

# 模型训练
model = SVC(C=1.0, kernel='linear')
model.fit(X_train, y_train)

# 模型预测
y_pred = model.predict(X_test)

# 模型评估
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

九、总结

Scikit-Learn 是一个功能强大且易于使用的机器学习库,涵盖了从数据加载、预处理、模型训练到评估的完整工作流程。通过本文的介绍,相信读者对 sklearn 有了初步的了解,并掌握了其基本用法。建议读者在实践中多加练习,深入理解每个模块的功能和应用场景,从而更好地利用 sklearn 进行机器学习任务。

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sc-learn是一个用于机器学习的Python库,它提供了各种机器学习算法和工具,以及数据预处理和模型评估等功能。SklearnScikit-learn的简称,通常用于指代Scikit-learn库。 为了使用Scikit-learn库,你需要先安装Python环境,并在Python环境中安装一些必要的包,如NumPy、SciPy和Matplotlib等。你可以使用pip命令来安装Scikit-learn,比如pip install scikit-learn。另外,你也可以通过指定版本来安装特定版本的Scikit-learn,比如pip install scikit-learn==0.19.1。如果你有一个特定版本的Scikit-learn的安装文件,你可以使用pip install命令指定安装文件的路径来安装,比如pip install F:\Program Files\Python\whl_scikit_learn\scikit_learn-0.19.1-cp34-cp34m-win_amd64.whl。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [菜菜的scikit-learn课堂源码及文档.rar](https://download.csdn.net/download/cloud6688/12155958)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Py之scikit-learn:机器学习sklearn库的简介、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/...](https://blog.csdn.net/qq_41185868/article/details/79682338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值