【揭秘Scikit-learn】实战代码示例与数据集深度解析

发布时间:2025-06-08 02:37:05

Scikit-learn 是 Python 中最风行的呆板进修库之一,它供给了大年夜量的呆板进修算法跟东西,可能帮助数据科学家跟开辟者疾速实现呆板进修项目。本文将深刻剖析 Scikit-learn 的核心功能,并经由过程实战代码示例展示怎样利用该库停止数据预处理、模型练习跟评价。

1. Scikit-learn 简介

Scikit-learn 最初由 David Cournapeau 在 2007 年创建,它基于 Python 言语,并依附于 NumPy、SciPy 跟 matplotlib 等库。Scikit-learn 供给了以下功能:

  • 数据预处理:包含特点提取、特点抉择、数据标准化跟归一化等。
  • 模型抉择:供给了多种呆板进修算法,如分类、回归、聚类跟降维等。
  • 模型评价:包含穿插验证、混淆矩阵跟机能指标等。
  • 模型调优:可能利用网格查抄跟随机查抄等方法来优化模型参数。

2. 安装 Scikit-learn

在开端利用 Scikit-learn 之前,须要确保曾经安装了 Python 跟以下依附库:

pip install numpy scipy matplotlib
pip install -U scikit-learn

3. 数据预处理

数据预处理是呆板进修项目中非常重要的一步,它包含数据清洗、特点提取跟特点抉择等。

3.1 数据清洗

数据清洗平日包含处理缺掉值、处理异常值跟填充数据等。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer

# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target

# 处理缺掉值
imputer = SimpleImputer(strategy='mean')
X = imputer.fit_transform(X)

# 分别练习集跟测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

3.2 特点提取

特点提取是将原始数据转换为更合适模型处理的情势。

from sklearn.feature_extraction.text import TfidfVectorizer

# 假设有一个文本数据集
corpus = ['this is the first document.', 'this document is the second document.', 'and this is the third one.', 'is this the first document?']

# 利用 TF-IDF 停止特点提取
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)

3.3 特点抉择

特点抉择是从原始特点中挑选出最有效的特点。

from sklearn.feature_selection import SelectKBest, chi2

# 利用卡方测验停止特点抉择
selector = SelectKBest(score_func=chi2, k=2)
X = selector.fit_transform(X, y)

4. 模型抉择

Scikit-learn 供给了多种呆板进修算法,以下是一些常用的分类跟回归模型:

4.1 逻辑回归

逻辑回归用于二分类成绩。

from sklearn.linear_model import LogisticRegression

# 创建逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 评价模型
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy}")

4.2 决定树

决定树用于分类跟回归成绩。

from sklearn.tree import DecisionTreeClassifier

# 创建决定树范型
model = DecisionTreeClassifier()
model.fit(X_train, y_train)

# 评价模型
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy}")

4.3 随机丛林

随机丛林是一种集成进修方法,可能进步模型的泛化才能。

from sklearn.ensemble import RandomForestClassifier

# 创建随机丛林模型
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)

# 评价模型
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy}")

5. 模型评价

模型评价是衡量模型机能的重要步调,Scikit-learn 供给了多种评价指标。

from sklearn.metrics import classification_report, confusion_matrix

# 评价逻辑回归模型
predictions = model.predict(X_test)
print(classification_report(y_test, predictions))
print(confusion_matrix(y_test, predictions))

6. 数据集深度剖析

Scikit-learn 供给了多种数据集,以下是一些常用的数据集及其利用处景:

6.1 鸢尾花数据集 (Iris)

鸢尾花数据集是最常用的呆板进修数据集之一,包含 150 个样本,每个样本有 4 个特点。

# 加载鸢尾花数据集
iris = load_iris()
X, y = iris.data, iris.target

# 利用鸢尾花数据集停止分类任务

6.2 波士顿房价数据集 (Boston Housing)

波士顿房价数据集包含 506 个样本,每个样本有 13 个特点,用于猜测房价。

from sklearn.datasets import load_boston

# 加载波士顿房价数据集
boston = load_boston()
X, y = boston.data, boston.target

# 利用波士顿房价数据集停止回归任务

6.3 麦克尔-罗斯数据集 (Michael-ross)

迈克尔-罗斯数据集包含 140 个样本,每个样本有 11 个特点,用于猜测信用评分。

from sklearn.datasets import make_classification

# 生成迈克尔-罗斯数据集
X, y = make_classification(n_samples=140, n_features=11, n_informative=8, n_redundant=3, random_state=42)

# 利用迈克尔-罗斯数据集停止分类任务

7. 总结

Scikit-learn 是 Python 中最风行的呆板进修库之一,它供给了丰富的东西跟算法,可能帮助数据科学家跟开辟者疾速实现呆板进修项目。经由过程本文的实战代码示例跟数据集深度剖析,读者可能更好地懂得 Scikit-learn 的功能跟用法。盼望本文能对你在呆板进修范畴的摸索有所帮助。