赞
踩
Scikit-learn(简称sklearn)是一个非常流行的Python机器学习库,提供了许多常用的机器学习算法和工具。以下是一个基础教程的概述:
首先,确保你已经安装了Python和pip,然后使用以下命令安装scikit-learn:
pip install -U scikit-learn
在你的Python脚本或Jupyter Notebook中,首先导入scikit-learn库:
import sklearn
你可以加载各种数据集,包括样本数据集和真实世界数据集。例如,加载经典的鸢尾花数据集:
- from sklearn.datasets import load_iris
- iris = load_iris()
- X = iris.data # 特征矩阵
- y = iris.target # 目标向量
在应用机器学习算法之前,通常需要进行一些数据预处理,例如特征缩放、特征选择、数据清洗等。以下是一些常用的数据预处理方法:
- from sklearn.preprocessing import StandardScaler
- scaler = StandardScaler()
- X_scaled = scaler.fit_transform(X)
将数据集拆分为训练集和测试集:
- 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.linear_model import LogisticRegression
- model = LogisticRegression()
- model.fit(X_train, y_train)
在训练模型之后,评估模型的性能,例如使用准确度评估:
- from sklearn.metrics import accuracy_score
- y_pred = model.predict(X_test)
- accuracy = accuracy_score(y_test, y_pred)
- print(f"Accuracy: {accuracy}")
使用交叉验证来评估模型的稳定性和泛化能力:
- from sklearn.model_selection import cross_validate
- result = cross_validate(model, X, y, cv=5)
- print(result['test_score'])
这是一个经典的机器学习任务,用于分类鸢尾花的种类。
load_iris 是一个经典的机器学习数据集,通常用于分类和聚类任务。这个数据集包含了三种不同种类的鸢尾花(Iris Setosa、Iris Versicolour 和 Iris Virginica)的信息,每种鸢尾花有四个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。
具体来说,load_iris 数据集包含以下内容:
- # 导入必要的库
- from sklearn.datasets import load_iris
- from sklearn.model_selection import train_test_split
- from sklearn.preprocessing import StandardScaler
- from sklearn.linear_model import LogisticRegression
- from sklearn.metrics import accuracy_score
-
- # 加载数据集
- iris = load_iris()
- X = iris.data
- y = iris.target
-
- # 数据预处理
- scaler = StandardScaler()
- X_scaled = scaler.fit_transform(X)
-
- # 拆分数据集
- X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
-
- # 建立和训练模型
- model = LogisticRegression()
- model.fit(X_train, y_train)
-
- # 预测和评估
- y_pred = model.predict(X_test)
- accuracy = accuracy_score(y_test, y_pred)
- print(f"Accuracy: {accuracy}")
这个例子使用手写数字数据集,并应用支持向量机(SVM)进行分类。
load_digits 是 scikit-learn 提供的一个经典数据集,用于手写数字识别任务。这个数据集包含了 0 到 9 共 10 个数字的手写图像,每个图像是一个 8x8 的灰度图像。
- # 导入必要的库
- from sklearn.datasets import load_digits
- from sklearn.model_selection import train_test_split, GridSearchCV
- from sklearn.preprocessing import StandardScaler
- from sklearn.svm import SVC
- from sklearn.metrics import classification_report
-
- # 加载数据集
- digits = load_digits()
- X = digits.data
- y = digits.target
-
- # 数据预处理
- scaler = StandardScaler()
- X_scaled = scaler.fit_transform(X)
-
- # 拆分数据集
- X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
-
- # 使用网格搜索进行超参数调优
- param_grid = {'C': [0.1, 1, 10, 100], 'gamma': [1, 0.1, 0.01, 0.001]}
- grid = GridSearchCV(SVC(), param_grid, refit=True, verbose=2)
- grid.fit(X_train, y_train)
-
- # 最佳参数和模型评估
- print(f"Best Parameters: {grid.best_params_}")
- y_pred = grid.predict(X_test)
- print(classification_report(y_test, y_pred))
在这个复杂的例子中,我们使用了网格搜索(GridSearchCV)来找到支持向量机(SVM)的最佳超参数,并使用分类报告(classification_report)来评估模型的性能。
param_grid
:这是一个字典,定义了要搜索的参数范围。在这个例子中,我们要调整两个参数:
C
:正则化参数,控制模型的复杂度。较小的 C
值会使模型更简单,但可能欠拟合;较大的 C
值会使模型更复杂,但可能过拟合。gamma
:核函数系数,控制单个训练样本的影响范围。较大的 gamma
值会使模型更复杂,但可能过拟合;较小的 gamma
值会使模型更简单,但可能欠拟合。GridSearchCV
:这是 scikit-learn 提供的一个工具,用于通过交叉验证来搜索最佳参数组合。
SVC()
:支持向量机分类器。param_grid
:要搜索的参数网格。refit=True
:在找到最佳参数组合后,使用整个训练集重新训练模型。verbose=2
:设置详细程度,输出更多的搜索过程信息。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。